00001 00034 #ifndef ABA_CONBRANCHRULE_H 00035 #define ABA_CONBRANCHRULE_H 00036 00037 #include "abacus/branchrule.h" 00038 #include "abacus/poolslotref.h" 00039 #include "abacus/constraint.h" 00040 #include "abacus/variable.h" 00041 00042 #ifdef ABACUS_PARALLEL 00043 class ABA_MESSAGE; 00044 #endif 00045 00046 class ABA_CONBRANCHRULE : public ABA_BRANCHRULE { 00047 public: 00048 00059 ABA_CONBRANCHRULE(ABA_MASTER *master, 00060 ABA_POOLSLOT<ABA_CONSTRAINT, ABA_VARIABLE> *poolSlot); 00061 00064 virtual ~ABA_CONBRANCHRULE(); 00065 #ifdef ABACUS_PARALLEL 00066 00073 ABA_CONBRANCHRULE(ABA_MASTER *master, ABA_MESSAGE &msg); 00074 00081 virtual void pack(ABA_MESSAGE &msg) const; 00082 00088 virtual int classId() const; 00089 #endif 00090 00098 friend ostream &operator<<(ostream &out, const ABA_CONBRANCHRULE &rhs); 00099 00109 virtual int extract(ABA_SUB *sub); 00110 00118 virtual void extract(ABA_LPSUB *lp); 00119 virtual void unExtract(ABA_LPSUB *lp); 00120 00128 virtual void initialize(ABA_SUB *sub); 00129 00133 ABA_CONSTRAINT *constraint(); 00134 private: 00135 ABA_POOLSLOTREF<ABA_CONSTRAINT, ABA_VARIABLE> poolSlotRef_; 00136 00137 const ABA_CONBRANCHRULE &operator=(const ABA_CONBRANCHRULE &rhs); 00138 }; 00139 #endif //ABA_CONBRANCHRULE_H 00140