00001 00047 #ifndef ABA_BRANCHRULE_H 00048 #define ABA_BRANCHRULE_H 00049 00050 #include "abacus/array.h" 00051 00052 class ABA_MASTER; 00053 class ABA_SUB; 00054 class ABA_LPSUB; 00055 00056 #ifdef ABACUS_PARALLEL 00057 #define SETBRANCHRULE_CLASSID 9001 // preliminary 00058 #define VALBRANCHRULE_CLASSID 9002 // preliminary 00059 #define CONBRANCHRULE_CLASSID 9003 // preliminary 00060 #define BOUNDBRANCHRULE_CLASSID 9004 // preliminary 00061 #endif 00062 00063 class ABA_BRANCHRULE : public ABA_ABACUSROOT { 00064 public: 00065 00070 ABA_BRANCHRULE(ABA_MASTER *master); 00071 00074 virtual ~ABA_BRANCHRULE(); 00075 #ifdef ABACUS_PARALLEL 00076 00082 ABA_BRANCHRULE(ABA_MASTER *master, ABA_MESSAGE &msg); 00083 00093 virtual void pack(ABA_MESSAGE &msg) const; 00094 virtual int classId() const = 0; 00095 #endif 00096 00104 virtual int extract(ABA_SUB *sub) = 0; 00105 00118 virtual void extract(ABA_LPSUB *lp); 00119 00128 virtual void unExtract(ABA_LPSUB *lp); 00129 00145 virtual bool branchOnSetVar(); 00146 00155 virtual void initialize(ABA_SUB* sub); 00156 protected: 00157 ABA_MASTER *master_; 00158 }; 00159 00160 #endif // !ABA_BRANCHRULE_H 00161