00001 // -*- c++ -*- 00002 //***************************************************************************** 00014 //***************************************************************************** 00015 00016 #ifndef polybori_BlockDegRevLexAscOrder_h_ 00017 #define polybori_BlockDegRevLexAscOrder_h_ 00018 00019 // include basic definitions 00020 #include <polybori/pbori_defs.h> 00021 00022 // include base order definitions 00023 #include <polybori/orderings/CBlockOrderingFacade.h> 00024 #include <polybori/orderings/COrderingTags.h> 00025 00026 BEGIN_NAMESPACE_PBORI 00027 00033 class BlockDegRevLexAscOrder: 00034 public CBlockOrderingFacade<BlockDegRevLexAscOrder, block_dp_asc_tag> { 00035 00037 typedef BlockDegRevLexAscOrder self; 00038 00039 public: 00041 typedef std::greater<idx_type> idx_comparer_type; 00042 00044 BlockDegRevLexAscOrder(): base() {}; 00045 00047 BlockDegRevLexAscOrder(const self& rhs): base(rhs) {}; 00048 00050 ~BlockDegRevLexAscOrder() {}; 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 00061 }; 00062 00063 00064 END_NAMESPACE_PBORI 00065 00066 #endif // polybori_BlockDegRevLexAscOrder_h_