PolyBoRi

LexOrder.h

Go to the documentation of this file.
00001 // -*- c++ -*-
00002 //*****************************************************************************
00081 //*****************************************************************************
00082 
00083 // include basic definitions
00084 #include "pbori_defs.h"
00085 
00086 // include base order definitions
00087 #include "COrderBase.h"
00088 
00089 #ifndef LexOrder_h_
00090 #define LexOrder_h_
00091 
00092 BEGIN_NAMESPACE_PBORI
00093 
00099 class LexOrder:
00100   public COrderBase {
00101 
00102  public:
00103   //-------------------------------------------------------------------------
00104   // types definitions
00105   //-------------------------------------------------------------------------
00106 
00108   typedef LexOrder self;
00109 
00111 
00112   typedef valid_tag lex_property; 
00113   typedef valid_tag ordered_property;
00114   typedef valid_tag symmetry_property;
00115   typedef valid_tag descending_property;
00116   typedef lex_tag order_tag;
00118 
00120   enum { order_code = CTypes::lp, baseorder_code = order_code };
00121 
00123   typedef std::less<idx_type> idx_comparer_type;
00124 
00126   LexOrder(): base() {};
00127 
00129   LexOrder(const self& rhs): base(rhs) {};
00130 
00132   ~LexOrder() {};
00133 
00135   comp_type compare(idx_type, idx_type) const;
00136 
00138   comp_type compare(const monom_type&, const monom_type&) const;
00139 
00141   comp_type compare(const exp_type&, const exp_type&) const;
00142 
00144   monom_type lead(const poly_type&) const;
00145 
00147   monom_type lead(const poly_type& poly, deg_type) const { return lead(poly); }
00148 
00150   exp_type leadExp(const poly_type&) const;
00151 
00153   exp_type leadExp(const poly_type& poly, deg_type) const {
00154     return leadExp(poly); }
00155 
00157   indirect_iterator leadIteratorBegin(const poly_type&) const;
00158   indirect_iterator leadIteratorEnd() const;
00159   indirect_exp_iterator leadExpIteratorBegin(const poly_type&) const;
00160   indirect_exp_iterator leadExpIteratorEnd() const;
00161 
00162 };
00163 
00164 
00165 END_NAMESPACE_PBORI
00166 
00167 #endif // LexOrder_h_