00001 00033 #ifndef ABA_VALBRANCHRULE_H 00034 #define ABA_VALBRANCHRULE_H 00035 00036 #include "abacus/branchrule.h" 00037 00038 #ifdef ABACUS_PARALLEL 00039 class ABA_MESSAGE; 00040 #endif 00041 00042 class ABA_VALBRANCHRULE : public ABA_BRANCHRULE { 00043 public: 00044 00051 ABA_VALBRANCHRULE(ABA_MASTER *master, int variable, double value); 00052 00054 virtual ~ABA_VALBRANCHRULE(); 00055 #ifdef ABACUS_PARALLEL 00056 00065 ABA_VALBRANCHRULE(ABA_MASTER *master, ABA_MESSAGE &msg); 00066 00074 virtual void pack(ABA_MESSAGE &msg) const; 00075 00083 virtual int classId() const; 00084 #endif 00085 00094 friend ostream &operator<<(ostream &out, const ABA_VALBRANCHRULE &rhs); 00095 00104 virtual int extract(ABA_SUB *sub); 00105 00111 virtual void extract(ABA_LPSUB *lp); 00112 00114 virtual void unExtract(ABA_LPSUB *lp); 00115 00118 int variable() const; 00119 00122 double value() const; 00123 private: 00124 int variable_; 00125 double value_; 00126 double oldLpLBound_; 00127 double oldLpUBound_; 00128 }; 00129 00130 00131 inline int ABA_VALBRANCHRULE::variable() const 00132 { 00133 return variable_; 00134 } 00135 00136 inline double ABA_VALBRANCHRULE::value() const 00137 { 00138 return value_; 00139 } 00140 00141 00142 #endif // ABA_VALBRANCHRULE_H 00143 00144