PolyBoRi
|
00001 // -*- c++ -*- 00002 //***************************************************************************** 00013 //***************************************************************************** 00014 00015 // include basic definitions 00016 #include "pbori_defs.h" 00017 00018 // include ordering tags 00019 #include "pbori_tags.h" 00020 00021 // include polybori functionals 00022 #include "pbori_func.h" 00023 00024 #ifndef COrderProperties_h_ 00025 #define COrderProperties_h_ 00026 00027 BEGIN_NAMESPACE_PBORI 00028 00033 template <class OrderType> 00034 class COrderProperties { 00035 00036 public: 00038 typedef OrderType order_type; 00039 00041 00042 typedef typename order_type::lex_property lex_property; 00043 typedef typename order_type::ordered_property ordered_property; 00044 typedef typename order_type::symmetry_property symmetry_property; 00045 typedef typename order_type::degorder_property degorder_property; 00046 typedef typename order_type::blockorder_property blockorder_property; 00047 typedef typename order_type::totaldegorder_property totaldegorder_property; 00048 typedef typename order_type::ascending_property ascending_property; 00049 typedef typename order_type::descending_property descending_property; 00050 typedef typename order_type::degrevlexorder_property degrevlexorder_property; 00052 00054 00055 typedef typename order_type::size_type size_type; 00056 typedef typename order_type::idx_type idx_type; 00057 typedef typename order_type::bool_type bool_type; 00058 typedef typename order_type::ostream_type ostream_type; 00059 typedef typename order_type::hash_type hash_type; 00061 00063 enum { order_code = order_type::order_code }; 00064 00066 typedef typename order_type::idx_comparer_type idx_comparer_type; 00067 00069 is_same_type<ordered_property, valid_tag> orderedStandardIteration; 00070 00072 is_same_type<lex_property, valid_tag> isLexicographical; 00073 00075 is_same_type<symmetry_property, valid_tag> isSymmetric; 00076 00078 is_same_type<degorder_property, valid_tag> isDegreeOrder; 00079 00081 is_same_type<blockorder_property, valid_tag> isBlockOrder; 00082 00084 is_same_type<totaldegorder_property, valid_tag> isTotalDegreeOrder; 00085 00087 is_same_type<ascending_property, valid_tag> ascendingVariables; 00088 00090 is_same_type<descending_property, valid_tag> descendingVariables; 00091 00093 is_same_type<degrevlexorder_property, valid_tag> 00094 isDegreeReverseLexicographical; 00095 }; 00096 00097 00098 END_NAMESPACE_PBORI 00099 00100 #endif