/home/coin/SVN-release/Smi-0.92.1/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(double *dr,const int dr_len,CoinPackedVector *cpv,double *dels,int *indx)=0;
00049         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;
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         static void ClearInstance();
00062         virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char *type=0);
00063         virtual void Process(double *d1, int o1, const int len, const int* inds, const double *dels, char *type=0);
00064         virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char *type=0);
00065         virtual int Process(double *dr,const int dr_len,CoinPackedVector *cpv,double *dels,int *indx);
00066         virtual int Process(double *dr,const int dr_len,const int nels, const int* cpv_ind,const double *cpv_els,double *dels,int *indx);
00067 protected:
00068         SmiCoreCombineReplace(){}
00069 private:
00070         static SmiCoreCombineReplace * _instance;
00071 };
00072 
00074 // SmiCoreCombineAdd
00075 // -- concrete "add" rule -- singleton pattern
00077 class SmiCoreCombineAdd : public SmiCoreCombineRule
00078 {
00079 public:
00080         static SmiCoreCombineAdd * Instance();
00081         static void ClearInstance();
00082         virtual void Process(double *d1, int o1, const CoinPackedVector &cpv2, char* type=0);
00083         virtual void Process(double *d1, int o1, const int len, const int* inds, const double *dels, char *type=0);
00084         virtual CoinPackedVector * Process(CoinPackedVector *cpv1, CoinPackedVector *cpv2, char* type=0);
00085         virtual int Process(double *dr,const int dr_len,CoinPackedVector *cpv,double *dels,int *indx);
00086         virtual int Process(double *dr,const int dr_len,const int nels, const int* cpv_ind,const double *cpv_els,double *dels,int *indx);
00087 protected:
00088         SmiCoreCombineAdd(){}
00089 private:
00090         static SmiCoreCombineAdd * _instance;
00091 };
00092 
00093 
00094 #endif // !defined(SmiCoreCombineRule_HPP)

Generated on Mon Sep 22 03:08:59 2008 by  doxygen 1.4.7