00001 // Copyright (C) 2002, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 #ifndef CbcCountRowCut_H 00004 #define CbcCountRowCut_H 00005 00006 00007 class OsiCuts; 00008 class OsiRowCut; 00009 class CbcNodeInfo; 00010 00011 //############################################################################# 00032 class CbcCountRowCut : public OsiRowCut { 00033 00034 public: 00035 00038 00040 CbcCountRowCut (); 00041 00043 CbcCountRowCut ( const OsiRowCut &); 00044 00046 CbcCountRowCut(const OsiRowCut &, CbcNodeInfo *, int whichOne, 00047 int whichGenerator=-1,int numberPointingToThis=0); 00048 00055 virtual ~CbcCountRowCut (); 00057 00059 void increment(int change=1); 00060 00062 int decrement(int change=1); 00063 00071 void setInfo(CbcNodeInfo *, int whichOne); 00072 00074 inline int numberPointingToThis() 00075 { return numberPointingToThis_;} 00076 00078 inline int whichCutGenerator() const 00079 { return whichCutGenerator_;} 00080 00082 bool canDropCut(const OsiSolverInterface * solver, int row) const; 00083 00084 #ifdef CHECK_CUT_COUNTS 00085 // Just for printing sanity checks 00086 int tempNumber_; 00087 #endif 00088 00089 private: 00090 00092 CbcCountRowCut(const CbcCountRowCut &); 00093 00095 CbcCountRowCut & operator=(const CbcCountRowCut& rhs); 00096 00098 CbcNodeInfo * owner_; 00099 00102 int ownerCut_; 00103 00105 int numberPointingToThis_; 00106 00108 int whichCutGenerator_; 00109 00110 }; 00111 00112 #endif