PolyBoRi
DegRevLexAscOrder.h
Go to the documentation of this file.
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_