• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

COrderBase.h

Go to the documentation of this file.
00001 // -*- c++ -*-
00002 //*****************************************************************************
00072 //*****************************************************************************
00073 
00074 // include basic definitions
00075 #include "pbori_defs.h"
00076 
00077 // include basic definitions for orderings
00078 #include "pbori_tags.h"
00079 
00080 // include polynomial definitions
00081 #include "BoolePolynomial.h"
00082 
00083 // include monomial definitions
00084 #include "BooleMonomial.h"
00085 
00086 // include exponent vector definitions
00087 #include "BooleExponent.h"
00088 
00089 #include "COrderedIter.h"
00090 
00091 #ifndef COrderBase_h_
00092 #define COrderBase_h_
00093 
00094 BEGIN_NAMESPACE_PBORI
00095 
00096 
00102 class COrderBase:
00103   public CTypes::auxtypes_type {
00104 
00105  public:
00106   //-------------------------------------------------------------------------
00107   // types definitions
00108   //-------------------------------------------------------------------------
00109 
00111   typedef COrderBase base;
00112 
00114   typedef BoolePolynomial poly_type;
00115 
00117   typedef poly_type::size_type size_type;
00118 
00120   typedef poly_type::deg_type deg_type;
00121 
00123   typedef poly_type::idx_type idx_type;
00124 
00126   typedef BooleMonomial monom_type;
00127 
00128   typedef BoolePolynomial::navigator navigator;
00129 
00130   typedef COrderedIter<navigator, monom_type> indirect_iterator;
00131 
00133   typedef BooleSet set_type;
00134 
00136   typedef BooleExponent exp_type;
00137 
00138   typedef COrderedIter<navigator, exp_type> indirect_exp_iterator;
00139 
00141   typedef std::vector<idx_type> block_idx_type;
00142 
00144   typedef block_idx_type::const_iterator block_iterator;
00145 
00147 
00148   typedef invalid_tag lex_property; 
00149   typedef invalid_tag ordered_property;
00150   typedef invalid_tag symmetry_property;
00151   typedef invalid_tag degorder_property;
00152   typedef invalid_tag blockorder_property;
00153   typedef invalid_tag degrevlexorder_property; 
00154   typedef invalid_tag totaldegorder_property;
00155   typedef invalid_tag ascending_property;
00156   typedef invalid_tag descending_property;
00158 
00160   COrderBase() {};
00161 
00163   COrderBase(const COrderBase&) {};
00164 
00166   virtual ~COrderBase() {};
00167 
00169   virtual comp_type compare(idx_type, idx_type) const = 0;
00170 
00172   virtual comp_type compare(const monom_type&, const monom_type&) const = 0;
00173 
00175   virtual comp_type compare(const exp_type&, const exp_type&) const = 0;
00176 
00178   virtual monom_type lead(const poly_type&) const = 0;
00179 
00181   virtual monom_type lead(const poly_type&, deg_type) const = 0;
00182 
00184   virtual exp_type leadExp(const poly_type&) const = 0;
00185 
00187   virtual exp_type leadExp(const poly_type&, deg_type) const = 0;
00188 
00190   virtual indirect_iterator leadIteratorBegin(const poly_type&) const = 0;
00191   virtual indirect_iterator leadIteratorEnd() const = 0;
00192   virtual indirect_exp_iterator leadExpIteratorBegin(const poly_type&) const = 0;
00193   virtual indirect_exp_iterator leadExpIteratorEnd() const = 0;
00194 
00196 
00197   virtual block_iterator blockBegin() const { return block_iterator(); }
00198   virtual block_iterator blockEnd() const { return block_iterator(); }
00199   virtual void appendBlock(idx_type) const { }
00200   virtual void clearBlocks() const { }
00202 
00203 
00204 protected:
00206   monom_type monom(const set_type& rhs) const { return monom_type(rhs); }
00207 };
00208 
00209 END_NAMESPACE_PBORI
00210 
00211 #endif

Generated on Tue Sep 14 2010 for PolyBoRi by  doxygen 1.7.1