/home/coin/SVN-release/CoinAll-1.1.0/Smi/src/SmiCoreCombineRule.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2004, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 //
00004 // SmiCoreCombineRule.hpp: interface for the SmiCoreCombineRule classes.
00005 //
00006 //
00007 // Alan King 
00008 // 9 March 2004
00010 
00011 #if !defined(SmiCoreCombineRule_HPP)
00012 #define SmiCoreCombineRule_HPP
00013 
00014 #include "CoinPragma.hpp"
00015 #include "CoinPackedVector.hpp"
00016 #include <string>
00017 #include <vector>
00018 using namespace std;
00019 
00039 class SmiCoreCombineRule  
00040 {
00041 public:
00044 
00045         virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0)=0;
00046         virtual void Process(double *d1, int o1, const int len, const int* inds, const double *dels, char *type=0)=0;
00047         virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char *type=0)=0;
00048         virtual int Process(vector<double> *dr,CoinPackedVector *cpv,double *dels,int *indx)=0;
00049         virtual int Process(vector<double> *dr,const int cpv_nels,const int* cpv_ind,const double *cpv_els,double *dels,int *indx)=0;
00050         virtual ~SmiCoreCombineRule(){}
00051 };
00052 
00054 // SmiCoreCombineReplace
00055 // -- concrete "replace" rule -- singleton pattern
00057 class SmiCoreCombineReplace : public SmiCoreCombineRule
00058 {
00059 public:
00060         static SmiCoreCombineReplace * Instance();
00061         virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0);
00062         virtual void Process(double *d1, int o1, const int len, const int* inds, const double *dels, char *type=0);
00063         virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char *type=0);
00064         virtual int Process(vector<double> *dr,CoinPackedVector *cpv,double *dels,int *indx);
00065         virtual int Process(vector<double> *dr,const int nels, const int* cpv_ind,const double *cpv_els,double *dels,int *indx);
00066 protected:
00067         SmiCoreCombineReplace(){}
00068 private:
00069         static SmiCoreCombineReplace * _instance;
00070 };
00071 
00073 // SmiCoreCombineAdd
00074 // -- concrete "add" rule -- singleton pattern
00076 class SmiCoreCombineAdd : public SmiCoreCombineRule
00077 {
00078 public:
00079         static SmiCoreCombineAdd * Instance();
00080         virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char* type=0);
00081         virtual void Process(double *d1, int o1, const int len, const int* inds, const double *dels, char *type=0);
00082         virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char* type=0);
00083         virtual int Process(vector<double> *dr,CoinPackedVector *cpv,double *dels,int *indx);
00084         virtual int Process(vector<double> *dr,const int nels, const int* cpv_ind,const double *cpv_els,double *dels,int *indx);
00085 protected:
00086         SmiCoreCombineAdd(){}
00087 private:
00088         static SmiCoreCombineAdd * _instance;
00089 };
00090 
00091 
00092 #endif // !defined(SmiCoreCombineRule_HPP)

Generated on Sun Nov 14 14:06:40 2010 for Coin-All by  doxygen 1.4.7