00001
00002
00014
00015
00016 #ifndef polybori_groebner_GroebnerCriteria_h_
00017 #define polybori_groebner_GroebnerCriteria_h_
00018
00019
00020 #include "groebner_defs.h"
00021
00022 #include "PairManager.h"
00023
00024
00025 BEGIN_NAMESPACE_PBORIGB
00026
00027
00033 template <class StrategyType>
00034 class GroebnerCriteria {
00036 typedef GroebnerCriteria self;
00037 typedef StrategyType strategy_type;
00038 public:
00040 GroebnerCriteria(const BoolePolyRing& ring):
00041 pairs(static_cast<strategy_type&>(*this), ring),
00042 chainCriterions(0), easyProductCriterions(0), extendedProductCriterions(0),
00043 variableChainCriterions(0) {}
00044
00045 GroebnerCriteria(const self& rhs):
00046 pairs(rhs.pairs),
00047 chainCriterions(rhs.chainCriterions),
00048 easyProductCriterions(rhs.easyProductCriterions),
00049 extendedProductCriterions(rhs.extendedProductCriterions),
00050 variableChainCriterions(rhs.extendedProductCriterions) {
00051
00052 pairs.strat = static_cast<strategy_type*>(this);
00053 }
00054
00055
00056
00057 public:
00059 PairManager pairs;
00060
00061 int chainCriterions;
00062 int variableChainCriterions;
00063 int easyProductCriterions;
00064 int extendedProductCriterions;
00065 };
00066
00067 END_NAMESPACE_PBORIGB
00068
00069 #endif