00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #if !defined(SmiCoreCombineRule_HPP)
00012 #define SmiCoreCombineRule_HPP
00013
00014 #if defined(_MSC_VER)
00015
00016 # pragma warning(disable:4786)
00017 #endif
00018
00019 #if _MSC_VER > 1000
00020 #pragma once
00021 #endif // _MSC_VER > 1000
00022
00023 #include "CoinPackedVector.hpp"
00024 #include <string>
00025
00027
00028
00030 class SmiCoreCombineRule
00031 {
00032 public:
00033 virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0)=0;
00034 virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char *type=0)=0;
00035 virtual ~SmiCoreCombineRule(){};
00036 };
00037
00039
00040
00042 class SmiCoreCombineReplace : public SmiCoreCombineRule
00043 {
00044 public:
00045 static SmiCoreCombineReplace * Instance();
00046 virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0);
00047 virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char *type=0);
00048 protected:
00049 SmiCoreCombineReplace(){}
00050 private:
00051 static SmiCoreCombineReplace * _instance;
00052 };
00053
00055
00056
00058 class SmiCoreCombineAdd : public SmiCoreCombineRule
00059 {
00060 public:
00061 static SmiCoreCombineAdd * Instance();
00062 virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char* type=0);
00063 virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char* type=0);
00064 protected:
00065 SmiCoreCombineAdd(){}
00066 private:
00067 static SmiCoreCombineAdd * _instance;
00068 };
00069
00070
00071 #endif // !defined(SmiCoreCombineRule_HPP)