00001 // -*- c++ -*- 00002 //***************************************************************************** 00031 //***************************************************************************** 00032 00033 // load PolyBoRi settings 00034 # include "pbori_defs.h" 00035 #include <vector> 00036 00037 #ifndef BooleEnv_h_ 00038 #define BooleEnv_h_ 00039 00040 00041 BEGIN_NAMESPACE_PBORI 00042 00043 00044 class BoolePolyRing; 00045 extern BoolePolyRing active_ring; 00046 class CDynamicOrderBase; 00047 00055 class BooleEnv: 00056 public CTypes::orderenums_type, public CTypes::compenums_type, 00057 public CTypes::auxtypes_type { 00058 00059 public: 00060 //------------------------------------------------------------------------- 00061 // types definitions 00062 //------------------------------------------------------------------------- 00063 00065 typedef BooleEnv self; 00066 00068 typedef CTypes::orderenums_type base; 00069 00071 00072 typedef CTypes::ordercode_type ordercode_type; 00073 typedef CTypes::manager_type manager_type; 00074 typedef CTypes::manager_reference manager_reference; 00075 typedef CTypes::manager_ptr manager_ptr; 00076 typedef CTypes::dd_type dd_type; 00077 typedef CTypes::vartext_type vartext_type; 00079 00081 typedef std::vector<idx_type> block_idx_type; 00082 00084 typedef block_idx_type::const_iterator block_iterator; 00085 00086 //------------------------------------------------------------------------- 00087 // constructors and destructor 00088 //------------------------------------------------------------------------- 00089 00091 using base::ordercodes; 00092 00094 static dd_type variable(idx_type idx); 00095 00097 static dd_type persistentVariable(idx_type idx); 00098 00100 static ordercode_type getOrderCode(); 00101 00104 static ordercode_type getBaseOrderCode(); 00105 00107 static dd_type zero(); 00108 00110 static dd_type one(); 00111 00113 static size_type nVariables(); 00114 00115 typedef BoolePolyRing ring_type; 00116 00117 typedef CDynamicOrderBase order_type; 00118 static ring_type& ring(){ 00119 return active_ring; 00120 } 00121 00122 static manager_type& manager(); 00123 static order_type& ordering(); 00125 static void setVariableName(idx_type idx, vartext_type varname); 00126 00128 static vartext_type getVariableName(idx_type idx); 00129 00131 00132 static block_iterator blockBegin(); 00133 static block_iterator blockEnd(); 00134 static void appendBlock(idx_type idx); 00135 static void clearBlocks(); 00136 00137 static idx_type lastBlockStart(); 00139 00141 static void changeOrdering(ordercode_type code); 00142 00143 static void printInfo(); 00144 00145 static void set(ring_type& theRing); 00146 00147 00148 protected: 00149 00150 00151 }; 00152 00154 00155 END_NAMESPACE_PBORI 00156 00157 #endif // of #ifndef BooleEnv_h_