PolyBoRi
DegRevLexAscOrder.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
20 //*****************************************************************************
21 
22 // include basic definitions
23 #include "pbori_defs.h"
24 
25 // include base order definitions
26 #include "COrderBase.h"
27 
28 #ifndef DegRevLexAscOrder_h_
29 #define DegRevLexAscOrder_h_
30 
32 
39  public COrderBase {
40 
41  public:
42  //-------------------------------------------------------------------------
43  // types definitions
44  //-------------------------------------------------------------------------
45 
47  typedef DegRevLexAscOrder self;
48 
50 
58 
60  enum { order_code = CTypes::dp_asc, baseorder_code = order_code };
61 
63  typedef std::greater<idx_type> idx_comparer_type;
64 
66  DegRevLexAscOrder(): base() {};
67 
69  DegRevLexAscOrder(const self& rhs): base(rhs) {};
70 
73 
75  comp_type compare(idx_type, idx_type) const;
76 
78  comp_type compare(const monom_type&, const monom_type&) const;
79 
81  comp_type compare(const exp_type&, const exp_type&) const;
82 
84  monom_type lead(const poly_type&) const;
85 
87  monom_type lead(const poly_type& poly, size_type) const;
88 
90  exp_type leadExp(const poly_type&) const;
91 
93  exp_type leadExp(const poly_type&, size_type) const;
94 
96  indirect_iterator leadIteratorBegin(const poly_type&) const;
97  indirect_iterator leadIteratorEnd() const;
98  indirect_exp_iterator leadExpIteratorBegin(const poly_type&) const;
99  indirect_exp_iterator leadExpIteratorEnd() const;
100 };
101 
102 
104 
105 #endif // DegRevLexAscOrder_h_