00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #if !defined(SmiCoreCombineRule_HPP)
00012 #define SmiCoreCombineRule_HPP
00013
00014 #include "CoinPragma.hpp"
00015 #include "CoinPackedVector.hpp"
00016 #include <string>
00036 class SmiCoreCombineRule
00037 {
00038 public:
00041
00042 virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0)=0;
00043 virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char *type=0)=0;
00044 virtual ~SmiCoreCombineRule(){};
00045 };
00046
00048
00049
00051 class SmiCoreCombineReplace : public SmiCoreCombineRule
00052 {
00053 public:
00054 static SmiCoreCombineReplace * Instance();
00055 virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0);
00056 virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char *type=0);
00057 protected:
00058 SmiCoreCombineReplace(){}
00059 private:
00060 static SmiCoreCombineReplace * _instance;
00061 };
00062
00064
00065
00067 class SmiCoreCombineAdd : public SmiCoreCombineRule
00068 {
00069 public:
00070 static SmiCoreCombineAdd * Instance();
00071 virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char* type=0);
00072 virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char* type=0);
00073 protected:
00074 SmiCoreCombineAdd(){}
00075 private:
00076 static SmiCoreCombineAdd * _instance;
00077 };
00078
00079
00080 #endif // !defined(SmiCoreCombineRule_HPP)