00001 // -*- c++ -*- 00002 //***************************************************************************** 00031 //***************************************************************************** 00032 00033 // load PolyBoRi settings 00034 # include "pbori_defs.h" 00035 00036 // include basic decision diagram manager interface 00037 #include "CDDManager.h" 00038 00039 00040 #ifndef BooleRing_h_ 00041 #define BooleRing_h_ 00042 00043 BEGIN_NAMESPACE_PBORI 00044 00050 class BooleRing: 00051 public CTypes::orderenums_type, public CTypes::compenums_type, 00052 public CTypes::auxtypes_type { 00053 00054 public: 00055 //------------------------------------------------------------------------- 00056 // types definitions 00057 //------------------------------------------------------------------------- 00058 00060 typedef BooleRing self; 00061 00063 typedef CTypes::orderenums_type base; 00064 00066 00067 typedef CTypes::ordercode_type ordercode_type; 00068 typedef CTypes::manager_type manager_type; 00069 typedef CTypes::manager_reference manager_reference; 00070 typedef CTypes::manager_ptr manager_ptr; 00071 typedef CTypes::dd_type dd_type; 00072 typedef CTypes::vartext_type vartext_type; 00074 00076 using base::ordercodes; 00077 00079 BooleRing(size_type nvars = 100): 00080 m_mgr(nvars) {} 00081 00082 BooleRing(const manager_type& mgr): 00083 m_mgr(mgr) {} 00084 00086 ~BooleRing() {} 00087 00089 manager_type& manager() { return m_mgr; } 00090 00092 const manager_type& manager() const { return m_mgr; } 00093 00095 dd_type ddVariable(idx_type nvar) const { return m_mgr.ddVariable(nvar); } 00096 00098 dd_type variable(idx_type nvar) const { return m_mgr.variable(nvar); } 00099 00101 dd_type persistentVariable(idx_type nvar) const { 00102 return m_mgr.persistentVariable(nvar); 00103 } 00104 00106 dd_type zero() const { return m_mgr.empty(); } 00107 00109 dd_type one() const { return m_mgr.blank(); } 00110 00112 size_type nVariables() const { return m_mgr.nVariables(); } 00113 00115 void clearCache() { cuddCacheFlush(m_mgr.manager().getManager()); } 00116 00118 void printInfo() { return m_mgr.printInfo(); } 00119 00120 protected: 00122 manager_type m_mgr; 00123 }; 00124 00125 00126 END_NAMESPACE_PBORI 00127 #endif