SmiCoreCombineRule.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, International Business Machines
2 // Corporation and others. All Rights Reserved.
3 //
4 // SmiCoreCombineRule.hpp: interface for the SmiCoreCombineRule classes.
5 //
6 //
7 // Alan King
8 // 9 March 2004
10 
11 #if !defined(SmiCoreCombineRule_HPP)
12 #define SmiCoreCombineRule_HPP
13 
14 #include "CoinPragma.hpp"
15 #include "CoinPackedVector.hpp"
16 
37 {
38 public:
41  virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0)=0;
43  virtual void Process(double *d1, int o1, const int len, const int* inds, const double *dels, char *type=0)=0;
44  virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char *type=0)=0;
45  virtual int Process(double *dr,const int dr_len,CoinPackedVector *cpv,double *dels,int *indx)=0;
46  virtual int Process(double *dr,const int dr_len,const int cpv_nels,const int* cpv_ind,const double *cpv_els,double *dels,int *indx)=0;
47  virtual ~SmiCoreCombineRule(){}
48 };
49 
51 // SmiCoreCombineReplace
52 // -- concrete "replace" rule -- singleton pattern
55 {
56 public:
58  static void ClearInstance();
59  //Replace values in d1 with values from cpv2, where o1 is the offset to apply to d1
60  virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0);
61  virtual void Process(double *d1, int o1, const int len, const int* inds, const double *dels, char *type=0);
62  virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char *type=0);
63  virtual int Process(double *dr,const int dr_len,CoinPackedVector *cpv,double *dels,int *indx);
64  virtual int Process(double *dr,const int dr_len,const int nels, const int* cpv_ind,const double *cpv_els,double *dels,int *indx);
65 protected:
67 private:
69 };
70 
72 // SmiCoreCombineAdd
73 // -- concrete "add" rule -- singleton pattern
76 {
77 public:
78  static SmiCoreCombineAdd * Instance();
79  static void ClearInstance();
80  virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char* type=0);
81  virtual void Process(double *d1, int o1, const int len, const int* inds, const double *dels, char *type=0);
82  virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char* type=0);
83  virtual int Process(double *dr,const int dr_len,CoinPackedVector *cpv,double *dels,int *indx);
84  virtual int Process(double *dr,const int dr_len,const int nels, const int* cpv_ind,const double *cpv_els,double *dels,int *indx);
85 protected:
87 private:
89 };
90 
91 
92 #endif // !defined(SmiCoreCombineRule_HPP)
static void ClearInstance()
static SmiCoreCombineReplace * Instance()
static SmiCoreCombineAdd * _instance
virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0)
Process.
static SmiCoreCombineReplace * _instance
virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0)
Process.
This deals with combining Core and Stochastic data.
virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0)=0
Process.
static SmiCoreCombineAdd * Instance()
Sparse Vector.
virtual ~SmiCoreCombineRule()
Process.
static void ClearInstance()