00001 // -*- c++ -*- 00002 //***************************************************************************** 00014 //***************************************************************************** 00015 00016 #ifndef polybori_DegRevLexAscOrder_h_ 00017 #define polybori_DegRevLexAscOrder_h_ 00018 00019 // include basic definitions 00020 #include <polybori/pbori_defs.h> 00021 00022 // include base order definitions 00023 #include <polybori/orderings/COrderingFacade.h> 00024 #include <polybori/orderings/COrderingTags.h> 00025 00026 BEGIN_NAMESPACE_PBORI 00027 00033 class DegRevLexAscOrder: 00034 public COrderingFacade<DegRevLexAscOrder, dp_asc_tag> { 00035 00037 typedef DegRevLexAscOrder self; 00038 00039 public: 00041 typedef std::greater<idx_type> idx_comparer_type; 00042 00044 DegRevLexAscOrder(): base() {}; 00045 00047 DegRevLexAscOrder(const self& rhs): base(rhs) {}; 00048 00050 ~DegRevLexAscOrder() {}; 00051 00053 comp_type compare(idx_type, idx_type) const; 00054 00056 comp_type compare(const monom_type&, const monom_type&) const; 00057 00059 comp_type compare(const exp_type&, const exp_type&) const; 00060 00062 monom_type lead(const poly_type&) const; 00063 00066 monom_type lead(const poly_type& poly, deg_type bound) const; 00067 00069 exp_type leadExp(const poly_type&) const; 00070 00073 exp_type leadExp(const poly_type&, deg_type) const; 00074 }; 00075 00076 00077 END_NAMESPACE_PBORI 00078 00079 #endif // polybori_DegRevLexAscOrder_h_