PolyBoRi
|
00001 // -*- c++ -*- 00002 //***************************************************************************** 00066 //***************************************************************************** 00067 00068 // include basic definitions 00069 #include "pbori_defs.h" 00070 00071 // include base order definitions 00072 #include "COrderBase.h" 00073 00074 #ifndef DegLexOrder_h_ 00075 #define DegLexOrder_h_ 00076 00077 BEGIN_NAMESPACE_PBORI 00078 00084 class DegLexOrder: 00085 public COrderBase { 00086 00087 public: 00088 //------------------------------------------------------------------------- 00089 // types definitions 00090 //------------------------------------------------------------------------- 00091 00093 typedef DegLexOrder self; 00094 00096 00097 typedef valid_tag symmetry_property; 00098 typedef valid_tag degorder_property; 00099 typedef valid_tag totaldegorder_property; 00100 typedef valid_tag descending_property; 00101 typedef dlex_tag order_tag; 00103 00105 typedef std::less<idx_type> idx_comparer_type; 00106 00108 enum { order_code = CTypes::dlex, baseorder_code = order_code }; 00109 00111 DegLexOrder(): base() {}; 00112 00114 DegLexOrder(const self& rhs): base(rhs) {}; 00115 00117 ~DegLexOrder() {}; 00118 00120 comp_type compare(idx_type, idx_type) const; 00121 00123 comp_type compare(const monom_type&, const monom_type&) const; 00124 00126 comp_type compare(const exp_type&, const exp_type&) const; 00127 00129 monom_type lead(const poly_type&) const; 00130 00132 monom_type lead(const poly_type& poly, deg_type) const; 00133 00135 exp_type leadExp(const poly_type&) const; 00136 00138 exp_type leadExp(const poly_type&, deg_type) const; 00139 00141 indirect_iterator leadIteratorBegin(const poly_type&) const; 00142 indirect_iterator leadIteratorEnd() const; 00143 indirect_exp_iterator leadExpIteratorBegin(const poly_type&) const; 00144 indirect_exp_iterator leadExpIteratorEnd() const; 00145 }; 00146 00147 00148 END_NAMESPACE_PBORI 00149 00150 #endif // DegLexOrder_h_