PolyBoRi
LexOrder.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
14 //*****************************************************************************
15 
16 #ifndef polybori_LexOrder_h_
17 #define polybori_LexOrder_h_
18 
19 // include basic definitions
20 #include <polybori/pbori_defs.h>
21 
22 // include base order definitions
25 
27 
33 class LexOrder:
34  public COrderingFacade<LexOrder, lex_tag> {
35 
37  typedef LexOrder self;
38 
39  public:
40 
42  typedef std::less<idx_type> idx_comparer_type;
43 
45  LexOrder(): base() {};
46 
48  LexOrder(const self& rhs): base(rhs) {};
49 
51  ~LexOrder() {};
52 
54  comp_type compare(idx_type, idx_type) const;
55 
57  comp_type compare(const monom_type&, const monom_type&) const;
58 
60  comp_type compare(const exp_type&, const exp_type&) const;
61 
63  monom_type lead(const poly_type&) const;
64 
67  monom_type lead(const poly_type& poly, deg_type) const {
68  return lead(poly);
69  }
70 
72  exp_type leadExp(const poly_type&) const;
73 
76  exp_type leadExp(const poly_type& poly, deg_type) const {
77  return leadExp(poly);
78  }
79 };
80 
81 
83 
84 #endif // polybori_LexOrder_h_