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

BoolePolyRing.h

Go to the documentation of this file.
00001 // -*- c++ -*-
00002 //*****************************************************************************
00160 //*****************************************************************************
00161 
00162 // load PolyBoRi settings
00163 # include "pbori_defs.h"
00164 
00165 // include basic decision diagram manager interface 
00166 #include "CDDManager.h"
00167 #include "OrderedManager.h"
00168 
00169 #include "BooleRing.h"
00170 
00171   // temporarily for work around
00172 #include <list>
00173 
00174 #ifndef BoolePolyRing_h_
00175 #define BoolePolyRing_h_
00176 
00177 
00178 BEGIN_NAMESPACE_PBORI
00179 
00180 class COrderBase;
00181 class CDynamicOrderBase;
00182 
00183 class BooleExponent;
00184 class BooleMonomial;
00185 
00186 
00192 class BoolePolyRing: 
00193   public BooleRing {
00194 
00195  public:
00196   //-------------------------------------------------------------------------
00197   // types definitions
00198   //-------------------------------------------------------------------------
00199 
00201   typedef BoolePolyRing self;
00202 
00204   typedef BooleRing base;
00205 
00207   typedef BooleExponent exp_type;
00208 
00210   typedef BooleMonomial monom_type;
00211 
00213   typedef std::vector<idx_type> block_idx_type;
00214 
00216   typedef block_idx_type::const_iterator block_iterator;
00217 
00219   typedef CDynamicOrderBase order_type;
00220   
00222   typedef PBORI_SHARED_PTR(order_type) order_ptr;
00223 
00225   typedef order_type& order_reference;
00226 
00227   //-------------------------------------------------------------------------
00228   // constructors and destructor
00229   //-------------------------------------------------------------------------
00230 
00232   using base::ordercodes;
00233 
00235   BoolePolyRing(size_type nvars=100, 
00236                 ordercode_type order = lp,
00237                 bool_type make_active = true);
00238 
00240   ~BoolePolyRing() {}
00241 
00243   void activate();
00244 
00245 
00247   void changeOrdering(ordercode_type);
00248 
00249   idx_type lastBlockStart() {
00250     if (ordering().isBlockOrder()) {
00251       return *(ordering().blockEnd() - 2);
00252     }
00253     else if (ordering().isLexicographical()) {
00254       return CTypes::max_idx;
00255     }
00256     return 0;
00257   }
00258 
00260   order_reference ordering() const { return *pOrder; }
00261 
00262 protected:
00264   order_ptr pOrder;
00265 };
00266 
00267 END_NAMESPACE_PBORI
00268 
00269 #endif // of #ifndef BoolePolyRing_h_

Generated on Thu Oct 21 2010 06:56:29 for PolyBoRi by  doxygen 1.7.1