PolyBoRi
BoolePolyRing.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
160 //*****************************************************************************
161 
162 // load PolyBoRi settings
163 # include "pbori_defs.h"
164 
165 // include basic decision diagram manager interface
166 #include "CDDManager.h"
167 #include "OrderedManager.h"
168 
169 #include "BooleRing.h"
170 
171  // temporarily for work around
172 #include <list>
173 
174 #ifndef BoolePolyRing_h_
175 #define BoolePolyRing_h_
176 
177 
179 
180 class COrderBase;
181 class CDynamicOrderBase;
182 
183 class BooleExponent;
184 class BooleMonomial;
185 
186 
193  public BooleRing {
194 
195  public:
196  //-------------------------------------------------------------------------
197  // types definitions
198  //-------------------------------------------------------------------------
199 
201  typedef BoolePolyRing self;
202 
204  typedef BooleRing base;
205 
208 
211 
213  typedef std::vector<idx_type> block_idx_type;
214 
216  typedef block_idx_type::const_iterator block_iterator;
217 
219  typedef CDynamicOrderBase order_type;
220 
223 
226 
227  //-------------------------------------------------------------------------
228  // constructors and destructor
229  //-------------------------------------------------------------------------
230 
232  using base::ordercodes;
233 
235  BoolePolyRing(size_type nvars=100,
236  ordercode_type order = lp,
237  bool_type make_active = true);
238 
241 
243  void activate();
244 
245 
247  void changeOrdering(ordercode_type);
248 
250  if (ordering().isBlockOrder()) {
251  return *(ordering().blockEnd() - 2);
252  }
253  else if (ordering().isLexicographical()) {
254  return CTypes::max_idx;
255  }
256  return 0;
257  }
258 
260  order_reference ordering() const { return *pOrder; }
261 
262 protected:
265 };
266 
268 
269 #endif // of #ifndef BoolePolyRing_h_