/home/coin/Smi-0.5.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 #if defined(_MSC_VER)
00015 // Turn off compiler warning about long names
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 // SmiCoreCombineRule
00028 // -- abstract base class
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 // SmiCoreCombineReplace
00040 // -- concrete "replace" rule -- singleton pattern
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 // SmiCoreCombineAdd
00056 // -- concrete "add" rule -- singleton pattern
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)

Generated on Wed Aug 22 06:52:36 2007 by  doxygen 1.4.7