00001 // -*- c++ -*- 00002 //***************************************************************************** 00020 //***************************************************************************** 00021 00022 // include basic definitions 00023 #include "pbori_defs.h" 00024 00025 // include base order definitions 00026 #include "COrderBase.h" 00027 00028 #ifndef DegRevLexAscOrder_h_ 00029 #define DegRevLexAscOrder_h_ 00030 00031 BEGIN_NAMESPACE_PBORI 00032 00038 class DegRevLexAscOrder: 00039 public COrderBase { 00040 00041 public: 00042 //------------------------------------------------------------------------- 00043 // types definitions 00044 //------------------------------------------------------------------------- 00045 00047 typedef DegRevLexAscOrder self; 00048 00050 00051 typedef valid_tag symmetry_property; 00052 typedef valid_tag degorder_property; 00053 typedef valid_tag totaldegorder_property; 00054 typedef valid_tag ascending_property; 00055 typedef valid_tag degrevlexorder_property; 00056 typedef dp_asc_tag order_tag; 00058 00060 enum { order_code = CTypes::dp_asc, baseorder_code = order_code }; 00061 00063 typedef std::greater<idx_type> idx_comparer_type; 00064 00066 DegRevLexAscOrder(): base() {}; 00067 00069 DegRevLexAscOrder(const self& rhs): base(rhs) {}; 00070 00072 ~DegRevLexAscOrder() {}; 00073 00075 comp_type compare(idx_type, idx_type) const; 00076 00078 comp_type compare(const monom_type&, const monom_type&) const; 00079 00081 comp_type compare(const exp_type&, const exp_type&) const; 00082 00084 monom_type lead(const poly_type&) const; 00085 00087 monom_type lead(const poly_type& poly, size_type) const; 00088 00090 exp_type leadExp(const poly_type&) const; 00091 00093 exp_type leadExp(const poly_type&, size_type) const; 00094 00096 indirect_iterator leadIteratorBegin(const poly_type&) const; 00097 indirect_iterator leadIteratorEnd() const; 00098 indirect_exp_iterator leadExpIteratorBegin(const poly_type&) const; 00099 indirect_exp_iterator leadExpIteratorEnd() const; 00100 }; 00101 00102 00103 END_NAMESPACE_PBORI 00104 00105 #endif // DegRevLexAscOrder_h_