Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > a24e1a39141f9b4ca49bd1e2e23a54ba > files > 65

polybori-doc-0.5rc.p9-6mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>PolyBoRi: CDegreeCache.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
<h1>CDegreeCache.h</h1><a href="CDegreeCache_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// -*- c++ -*-</span>
<a name="l00002"></a>00002 <span class="comment">//*****************************************************************************</span>
<a name="l00070"></a>00070 <span class="comment"></span><span class="comment">//*****************************************************************************</span>
<a name="l00071"></a>00071 
<a name="l00072"></a>00072 <span class="comment">// include basic definitions</span>
<a name="l00073"></a>00073 <span class="preprocessor">#include "<a class="code" href="pbori__defs_8h.html">pbori_defs.h</a>"</span>
<a name="l00074"></a>00074 
<a name="l00075"></a>00075 <span class="preprocessor">#include "<a class="code" href="BooleEnv_8h.html">BooleEnv.h</a>"</span>
<a name="l00076"></a>00076 
<a name="l00077"></a>00077 <span class="preprocessor">#include "<a class="code" href="CCacheManagement_8h.html">CCacheManagement.h</a>"</span>
<a name="l00078"></a>00078 
<a name="l00079"></a>00079 <span class="preprocessor">#ifndef CDegreeCache_h_</span>
<a name="l00080"></a>00080 <span class="preprocessor"></span><span class="preprocessor">#define CDegreeCache_h_ </span>
<a name="l00081"></a>00081 <span class="preprocessor"></span>
<a name="l00082"></a>00082 <a class="code" href="pbori__defs_8h.html#6ae360a591580558f31b6157ee792a10" title="Start project&amp;#39;s namespace.">BEGIN_NAMESPACE_PBORI</a>
<a name="l00083"></a>00083 <span class="comment">//class BoolePolyRing;</span>
<a name="l00090"></a>00090 <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> NaviType&gt;
<a name="l00091"></a><a class="code" href="classpolybori_1_1CIndexHandle.html">00091</a> <span class="keyword">class </span><a class="code" href="classpolybori_1_1CIndexHandle.html" title="This class defines an uses an navigator-like type for storing integer values from...">CIndexHandle</a> {
<a name="l00092"></a>00092 <span class="keyword">public</span>:
<a name="l00093"></a>00093 
<a name="l00094"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#00d61032cc1f807015c1b202d220ffcfc3c76eaed4fcb470869af9c75a49ba7a">00094</a>   <span class="keyword">enum</span> { invalid  = CTypes::max_idx };
<a name="l00095"></a>00095 
<a name="l00097"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#bc729ee8c28ddf492f05689340914b46">00097</a>   <span class="keyword">typedef</span> NaviType navigator;
<a name="l00098"></a>00098 
<a name="l00100"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#ac606138466bb7f3ba763305eda28d2d">00100</a>   <span class="keyword">typedef</span> navigator base;
<a name="l00101"></a>00101 
<a name="l00103"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#af0b191a9e097d4882e1f79477d52cec">00103</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> navigator::bool_type bool_type;
<a name="l00104"></a>00104 
<a name="l00106"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#b7e98a0b95cb78ad18c713b4fddd3e3c">00106</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">CTypes::idx_type</a> <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a>;
<a name="l00107"></a>00107 
<a name="l00109"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#4cd6ec6895a31a83e99743dbca33d1ec">00109</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> CTypes::size_type size_type;
<a name="l00110"></a>00110 
<a name="l00112"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#23e724b27cba8370f06662d8cdd5d2e7">00112</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">CTypes::manager_base</a> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>;
<a name="l00113"></a>00113 
<a name="l00115"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#e1b5f633e56d1982307da563fd100acc">00115</a>   <a class="code" href="classpolybori_1_1CIndexHandle.html#e1b5f633e56d1982307da563fd100acc" title="Construct from index.">CIndexHandle</a>(<a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a> idx): m_idx(idx) {}
<a name="l00116"></a>00116 
<a name="l00118"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#22ba1334a975fa44c9b63b9a391b9a81">00118</a>   <span class="keyword">explicit</span> <a class="code" href="classpolybori_1_1CIndexHandle.html" title="This class defines an uses an navigator-like type for storing integer values from...">CIndexHandle</a>(navigator navi, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>&amp; mgr): 
<a name="l00119"></a>00119     m_idx(fromNode(navi, mgr)) {}
<a name="l00120"></a>00120 
<a name="l00122"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#476725d033ba9c765edcbc83e7298050">00122</a>   <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a> <a class="code" href="classpolybori_1_1CIndexHandle.html#476725d033ba9c765edcbc83e7298050" title="Dereference to get stored index.">operator*</a>()<span class="keyword"> const </span>{
<a name="l00123"></a>00123     <span class="keywordflow">return</span> m_idx;
<a name="l00124"></a>00124   }
<a name="l00125"></a>00125 
<a name="l00126"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#adfd99d518dbf5cead8f961ab34445be">00126</a>   <span class="keywordtype">bool</span> <a class="code" href="classpolybori_1_1CIndexHandle.html#adfd99d518dbf5cead8f961ab34445be">isValid</a>()<span class="keyword"> const </span>{
<a name="l00127"></a>00127     <span class="keywordflow">return</span> (m_idx != invalid);
<a name="l00128"></a>00128   }
<a name="l00129"></a>00129 <span class="keyword">protected</span>:
<a name="l00131"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#f060fd5a8107f05312b5ca672df4b703">00131</a>   <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a> <a class="code" href="classpolybori_1_1CIndexHandle.html#f060fd5a8107f05312b5ca672df4b703" title="Dereference to get stored index.">fromNode</a>(navigator navi, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>&amp; mgr)<span class="keyword"> const </span>{
<a name="l00132"></a>00132 
<a name="l00133"></a>00133     <span class="keywordflow">if</span> (!navi.isValid())
<a name="l00134"></a>00134       <span class="keywordflow">return</span> invalid;
<a name="l00135"></a>00135 
<a name="l00136"></a>00136     <span class="keywordflow">if</span> <a class="code" href="pbori__defs_8h.html#2e5f5338d3e6181b9083eff7b9a3a50c">UNLIKELY</a>(navi.isConstant())
<a name="l00137"></a>00137       <span class="keywordflow">return</span> mgr.<a class="code" href="classpolybori_1_1CCuddInterface.html#e9e30ae7f4aa6c597598e7544555e3fb" title="Get number of managed variables.">nVariables</a>();
<a name="l00138"></a>00138     <span class="keywordflow">else</span> 
<a name="l00139"></a>00139       <span class="keywordflow">return</span> *navi;
<a name="l00140"></a>00140   }
<a name="l00141"></a>00141 
<a name="l00142"></a>00142 
<a name="l00143"></a>00143 
<a name="l00144"></a><a class="code" href="classpolybori_1_1CIndexHandle.html#fd7c20e6fc20252985545837859fa511">00144</a>   <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a> m_idx;
<a name="l00145"></a>00145 };
<a name="l00146"></a>00146 
<a name="l00147"></a>00147 
<a name="l00148"></a>00148 <span class="keyword">template</span> &lt;<span class="keyword">class</span> NaviType&gt;
<a name="l00149"></a><a class="code" href="classpolybori_1_1CIndexCacheHandle.html">00149</a> <span class="keyword">class </span><a class="code" href="classpolybori_1_1CIndexCacheHandle.html">CIndexCacheHandle</a> {
<a name="l00150"></a>00150 <span class="keyword">public</span>:
<a name="l00151"></a>00151 
<a name="l00153"></a><a class="code" href="classpolybori_1_1CIndexCacheHandle.html#72e55de0686121d64b58ef38543ad3c7">00153</a>   <span class="keyword">typedef</span> NaviType navigator;
<a name="l00154"></a>00154 
<a name="l00156"></a>00156   <span class="comment">//  typedef navigator base;</span>
<a name="l00157"></a>00157 
<a name="l00159"></a><a class="code" href="classpolybori_1_1CIndexCacheHandle.html#d1fca6cf997a67544a86c9ee54537eab">00159</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> navigator::bool_type bool_type;
<a name="l00160"></a>00160 
<a name="l00162"></a><a class="code" href="classpolybori_1_1CIndexCacheHandle.html#e6155c202a3f7b4836a916dd2bbdc50b">00162</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> navigator::value_type <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a>;
<a name="l00163"></a>00163 
<a name="l00165"></a><a class="code" href="classpolybori_1_1CIndexCacheHandle.html#ecbec27921266ef18456c982952b52d2">00165</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> navigator::size_type size_type;
<a name="l00166"></a>00166 
<a name="l00168"></a><a class="code" href="classpolybori_1_1CIndexCacheHandle.html#e841fea9464d4a2bce8979fdeca3ee24">00168</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">CTypes::manager_base</a> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>;
<a name="l00169"></a>00169 
<a name="l00171"></a><a class="code" href="classpolybori_1_1CIndexCacheHandle.html#43d6dd12a3633890943b798d7006adff">00171</a>   <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">CIndexCacheHandle</a>(<a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a> idx, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>&amp; mgr):
<a name="l00172"></a>00172     m_navi( toNode(idx, mgr) ) {}
<a name="l00173"></a>00173 
<a name="l00175"></a><a class="code" href="classpolybori_1_1CIndexCacheHandle.html#3e36266d1d6d4c8cd7237379d870bf45">00175</a>   <span class="keyword">explicit</span> <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">CIndexCacheHandle</a>(navigator navi): 
<a name="l00176"></a>00176     m_navi(navi) {}
<a name="l00177"></a>00177 
<a name="l00178"></a><a class="code" href="classpolybori_1_1CIndexCacheHandle.html#5b12e510f5404ae966098e8d7dd10f1d">00178</a>   <a class="code" href="classpolybori_1_1CIndexCacheHandle.html#5b12e510f5404ae966098e8d7dd10f1d">operator navigator</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_navi; }
<a name="l00179"></a>00179 
<a name="l00180"></a>00180 <span class="keyword">protected</span>:
<a name="l00182"></a><a class="code" href="classpolybori_1_1CIndexCacheHandle.html#6dd3c3c80926ab8d1748735496ebe781">00182</a>   navigator <a class="code" href="classpolybori_1_1CIndexCacheHandle.html#6dd3c3c80926ab8d1748735496ebe781" title="Convert plain number to navigation type.">toNode</a>(<a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a> idx, <span class="keyword">const</span> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>&amp; mgr)<span class="keyword"> const </span>{
<a name="l00183"></a>00183 
<a name="l00184"></a>00184     <span class="keywordflow">if</span> <a class="code" href="pbori__defs_8h.html#1c5951c9a391674be15ca2883c98c7e1" title="For optimizing if-branches.">LIKELY</a>((size_type)idx &lt; mgr.<a class="code" href="classpolybori_1_1CCuddInterface.html#e9e30ae7f4aa6c597598e7544555e3fb" title="Get number of managed variables.">nVariables</a>())
<a name="l00185"></a>00185       <span class="keywordflow">return</span>  navigator(mgr.<a class="code" href="classpolybori_1_1CCuddInterface.html#cb901bd858bf75ecd1cde0c8e7b8ca00">getVar</a>(idx));
<a name="l00186"></a>00186 
<a name="l00187"></a>00187     <span class="keywordflow">return</span>  navigator(mgr.<a class="code" href="classpolybori_1_1CCuddInterface.html#1bf7d4499c8d8f33bcfd5d072d07d685" title="Get 0-terminal for ZDDs.">zddZero</a>());
<a name="l00188"></a>00188   }
<a name="l00189"></a>00189 
<a name="l00191"></a><a class="code" href="classpolybori_1_1CIndexCacheHandle.html#d61af37194b12e433dbba4626d978463">00191</a>   navigator m_navi;
<a name="l00192"></a>00192 };
<a name="l00193"></a>00193 
<a name="l00194"></a>00194 <span class="keyword">template</span> &lt;<span class="keyword">class </span>TagType = <span class="keyword">typename</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1degree.html">CCacheTypes::degree</a>,
<a name="l00195"></a>00195           <span class="keyword">class </span>DDType = <span class="keyword">typename</span> <a class="code" href="classpolybori_1_1CDDInterface.html">CTypes::dd_type</a>&gt;
<a name="l00196"></a><a class="code" href="classpolybori_1_1CDegreeCache.html">00196</a> <span class="keyword">class </span><a class="code" href="classpolybori_1_1CDegreeCache.html">CDegreeCache</a>:
<a name="l00197"></a>00197   <span class="keyword">public</span> <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">CCacheManagement</a>&lt;TagType, 1&gt; {
<a name="l00198"></a>00198 
<a name="l00199"></a>00199 <span class="keyword">public</span>:
<a name="l00201"></a>00201 
<a name="l00202"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#5f5a928617c0b806632129f4cd9ff30b">00202</a>   <span class="keyword">typedef</span> DDType dd_type;
<a name="l00203"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#3ee99ae7da4eeca0344e6804f596d0c5">00203</a>   <span class="keyword">typedef</span> TagType tag_type;
<a name="l00204"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#7c2b6a785ed7489f2e150e2c42c83faa">00204</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">CCacheManagement&lt;tag_type, 1&gt;</a> <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">base</a>;
<a name="l00205"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#c7cdeb6028112b7e5e25877622561ee3">00205</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CDegreeCache.html">CDegreeCache&lt;tag_type, dd_type&gt;</a> <span class="keyword">self</span>;
<a name="l00207"></a>00207 
<a name="l00209"></a>00209 
<a name="l00210"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#5497afe86493df7841a0c48e711097cd">00210</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::node_type input_node_type;
<a name="l00211"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#f4b514520ab9f6e3f70914450f90dd04">00211</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">base::manager_type</a> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>;
<a name="l00212"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#69c14c9296cd4c09d6b2a3a88e954a0e">00212</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> dd_type::size_type size_type;
<a name="l00213"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#dc1a76b9ddb840db17bc195567691f58">00213</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> dd_type::navigator navi_type;
<a name="l00214"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#7ed3a98b1054d79d5cc82573aaff365d">00214</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CIndexHandle.html" title="This class defines an uses an navigator-like type for storing integer values from...">CIndexHandle&lt;navi_type&gt;</a> <a class="code" href="classpolybori_1_1CIndexHandle.html" title="This class defines an uses an navigator-like type for storing integer values from...">node_type</a>;
<a name="l00215"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#ee82b649c780ae3a2a2f83b599cee1d0">00215</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">CIndexCacheHandle&lt;navi_type&gt;</a> <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">node_cache_type</a>;
<a name="l00217"></a>00217 
<a name="l00219"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#0903b7593c1dc103434418e43a82696d">00219</a>   <a class="code" href="classpolybori_1_1CDegreeCache.html#0903b7593c1dc103434418e43a82696d" title="Constructor.">CDegreeCache</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>&amp; mgr): <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">base</a>(mgr) {}
<a name="l00220"></a>00220 
<a name="l00222"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#71de3e832112ef27d993f92a9b0a6ae2">00222</a>   <a class="code" href="classpolybori_1_1CDegreeCache.html#71de3e832112ef27d993f92a9b0a6ae2" title="Copy Constructor.">CDegreeCache</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp; rhs): <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">base</a>(rhs) {}
<a name="l00223"></a>00223 
<a name="l00225"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#b82030f10c3c8c36128960ab87241832">00225</a>   <a class="code" href="classpolybori_1_1CDegreeCache.html#b82030f10c3c8c36128960ab87241832" title="Destructor.">~CDegreeCache</a>() {}
<a name="l00226"></a>00226 
<a name="l00228"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#9343caf9861b82b5c7dd9cd5b74c397d">00228</a>   <a class="code" href="classpolybori_1_1CIndexHandle.html" title="This class defines an uses an navigator-like type for storing integer values from...">node_type</a> <a class="code" href="classpolybori_1_1CDegreeCache.html#9343caf9861b82b5c7dd9cd5b74c397d" title="Find cached degree wrt. given navigator.">find</a>(input_node_type navi)<span class="keyword"> const</span>{ 
<a name="l00229"></a>00229     <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1CIndexHandle.html" title="This class defines an uses an navigator-like type for storing integer values from...">node_type</a>(base::find(navi), base::manager()); }
<a name="l00230"></a>00230 
<a name="l00231"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#fef9103889281138ec749daacba1d6c1">00231</a>   <a class="code" href="classpolybori_1_1CIndexHandle.html" title="This class defines an uses an navigator-like type for storing integer values from...">node_type</a> <a class="code" href="classpolybori_1_1CDegreeCache.html#fef9103889281138ec749daacba1d6c1">find</a>(navi_type navi)<span class="keyword"> const</span>{ 
<a name="l00232"></a>00232     <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1CIndexHandle.html" title="This class defines an uses an navigator-like type for storing integer values from...">node_type</a>(base::find(navi), base::manager()); }
<a name="l00233"></a>00233 
<a name="l00235"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#702d0ac9549904368f92171920f81728">00235</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CDegreeCache.html#702d0ac9549904368f92171920f81728" title="Store cached degree wrt. given navigator.">insert</a>(input_node_type navi, size_type deg)<span class="keyword"> const </span>{
<a name="l00236"></a>00236     base::insert(navi, <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">node_cache_type</a>(deg, base::manager()));
<a name="l00237"></a>00237   }
<a name="l00238"></a>00238 
<a name="l00240"></a><a class="code" href="classpolybori_1_1CDegreeCache.html#3311bc69c98afe15d6e681391f60d6ad">00240</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CDegreeCache.html#3311bc69c98afe15d6e681391f60d6ad" title="Store cached degree wrt. given navigator.">insert</a>(navi_type navi, size_type deg)<span class="keyword"> const </span>{
<a name="l00241"></a>00241     base::insert(navi, <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">node_cache_type</a>(deg, base::manager()));
<a name="l00242"></a>00242   }
<a name="l00243"></a>00243 
<a name="l00244"></a>00244 };
<a name="l00245"></a>00245 
<a name="l00246"></a>00246 
<a name="l00247"></a>00247 
<a name="l00248"></a>00248 
<a name="l00249"></a>00249 <span class="keyword">template</span> &lt;<span class="keyword">class </span>TagType =  <span class="keyword">typename</span> CCacheTypes::block_degree,
<a name="l00250"></a>00250           <span class="keyword">class </span>DDType = <span class="keyword">typename</span> CTypes::dd_type&gt;
<a name="l00251"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html">00251</a> <span class="keyword">class </span><a class="code" href="classpolybori_1_1CBlockDegreeCache.html">CBlockDegreeCache</a>:
<a name="l00252"></a>00252   <span class="keyword">public</span> <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">CCacheManagement</a>&lt;TagType, 2&gt; {
<a name="l00253"></a>00253 
<a name="l00254"></a>00254 <span class="keyword">public</span>:
<a name="l00256"></a>00256 
<a name="l00257"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#76c0de6d5133f1b73b775625ad5f81ae">00257</a>   <span class="keyword">typedef</span> DDType <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a>;
<a name="l00258"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#2ef05c010e31d560c4c060c1b1bc38dc">00258</a>   <span class="keyword">typedef</span> TagType <a class="code" href="structpolybori_1_1CCacheTypes_1_1block__degree.html">tag_type</a>;
<a name="l00259"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#24bbbfd1977a65b32e5606874d260bfa">00259</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">CCacheManagement&lt;tag_type, 2&gt;</a> <a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">base</a>;
<a name="l00260"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#eba1f54e4de2998257fd2c6ca462e88d">00260</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CBlockDegreeCache.html">CBlockDegreeCache&lt;tag_type, dd_type&gt;</a> <span class="keyword">self</span>;
<a name="l00262"></a>00262 
<a name="l00264"></a>00264 
<a name="l00265"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#9ab1e0dac1670d0bb59ede2f0a14011d">00265</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::node_type input_node_type;
<a name="l00266"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#880600106b38226654114a8b6bc2430c">00266</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::manager_type <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>;
<a name="l00267"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#7a192c265a66bbd5d1224564e11edb53">00267</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">dd_type::idx_type</a> <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a>;
<a name="l00268"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#987c1edd28616ef371f857ee91f208ea">00268</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> dd_type::size_type size_type;
<a name="l00269"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#5ec76247d28017debfdfbac6b3e98280">00269</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">dd_type::navigator</a> <a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">navi_type</a>;
<a name="l00270"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#e062a8fdbd2816ab83eac303a012363e">00270</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CIndexHandle.html" title="This class defines an uses an navigator-like type for storing integer values from...">CIndexHandle&lt;navi_type&gt;</a> node_type;
<a name="l00271"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#9f6533dbfa96d4f6c575af876a31faa7">00271</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">CIndexCacheHandle&lt;navi_type&gt;</a> <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">node_cache_type</a>;
<a name="l00273"></a>00273 
<a name="l00275"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#ecce245d1d48bae7943c1defdf2a07a3">00275</a>   <a class="code" href="classpolybori_1_1CBlockDegreeCache.html#ecce245d1d48bae7943c1defdf2a07a3" title="Constructor.">CBlockDegreeCache</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>&amp; mgr): <a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">base</a>(mgr) {}
<a name="l00276"></a>00276 
<a name="l00278"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#9ec38ea1a64c94db1ab0b35577da3043">00278</a>   <a class="code" href="classpolybori_1_1CBlockDegreeCache.html#9ec38ea1a64c94db1ab0b35577da3043" title="Copy Constructor.">CBlockDegreeCache</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp; rhs): <a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">base</a>(rhs) {}
<a name="l00279"></a>00279 
<a name="l00281"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#d9891830e979d2b6917af3d58d65e6e0">00281</a>   <a class="code" href="classpolybori_1_1CBlockDegreeCache.html#d9891830e979d2b6917af3d58d65e6e0" title="Destructor.">~CBlockDegreeCache</a>() {}
<a name="l00282"></a>00282 
<a name="l00284"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#f550ce117fbaabbd6d5b6c050154a6c6">00284</a>   node_type <a class="code" href="classpolybori_1_1CBlockDegreeCache.html#f550ce117fbaabbd6d5b6c050154a6c6" title="Find cached degree wrt. given navigator.">find</a>(input_node_type navi, <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a> idx)<span class="keyword"> const</span>{ 
<a name="l00285"></a>00285     <span class="keywordflow">return</span> node_type(base::find(navi, <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">node_cache_type</a>(idx, base::manager())), 
<a name="l00286"></a>00286                      base::manager()); }
<a name="l00287"></a>00287 
<a name="l00288"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#86c2fa39d51516cba8a89c9bfcee73d0">00288</a>   node_type <a class="code" href="classpolybori_1_1CBlockDegreeCache.html#86c2fa39d51516cba8a89c9bfcee73d0">find</a>(<a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">navi_type</a> navi, <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a> idx)<span class="keyword"> const</span>{ 
<a name="l00289"></a>00289     <span class="keywordflow">return</span> node_type(base::find(navi, <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">node_cache_type</a>(idx, base::manager())), 
<a name="l00290"></a>00290                      base::manager()); }
<a name="l00291"></a>00291 
<a name="l00293"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#e183732f64e7092e0cd45afd89cf543f">00293</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CBlockDegreeCache.html#e183732f64e7092e0cd45afd89cf543f" title="Store cached degree wrt. given navigator.">insert</a>(input_node_type navi, <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a> idx, size_type deg)<span class="keyword"> const </span>{
<a name="l00294"></a>00294     base::insert(navi, <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">node_cache_type</a>(idx, base::manager()), 
<a name="l00295"></a>00295                  <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">node_cache_type</a>(deg, base::manager()));
<a name="l00296"></a>00296   }
<a name="l00297"></a>00297 
<a name="l00299"></a><a class="code" href="classpolybori_1_1CBlockDegreeCache.html#68784509aaa17ac7bd9542f82676c258">00299</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CBlockDegreeCache.html#68784509aaa17ac7bd9542f82676c258" title="Store cached degree wrt. given navigator.">insert</a>(<a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">navi_type</a> navi, <a class="code" href="namespacepolybori_1_1groebner.html#ef37a95e97afbd561cc4c5f84d660765">idx_type</a> idx, size_type deg)<span class="keyword"> const </span>{
<a name="l00300"></a>00300     base::insert(navi, <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">node_cache_type</a>(idx, base::manager()), 
<a name="l00301"></a>00301                  <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">node_cache_type</a>(deg, base::manager()));
<a name="l00302"></a>00302   }
<a name="l00303"></a>00303 };
<a name="l00304"></a>00304 
<a name="l00305"></a>00305 <span class="keyword">template</span> &lt;<span class="keyword">class </span>TagType, 
<a name="l00306"></a>00306           <span class="keyword">class </span>DDType = <span class="keyword">typename</span> CTypes::dd_type&gt;
<a name="l00307"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html">00307</a> <span class="keyword">class </span><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html">CDegreeArgumentCache</a>:
<a name="l00308"></a>00308   <span class="keyword">public</span> <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">CCacheManagement</a>&lt;TagType, 2&gt; {
<a name="l00309"></a>00309 
<a name="l00310"></a>00310 <span class="keyword">public</span>:
<a name="l00312"></a>00312 
<a name="l00313"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#6325c397a97b431dc68ee8a7e43fc44d">00313</a>   <span class="keyword">typedef</span> DDType dd_type;
<a name="l00314"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#62fb080c5802a9154c153da76de67b04">00314</a>   <span class="keyword">typedef</span> TagType tag_type;
<a name="l00315"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#199db5177e8df3e68afcac3a9e30bf4d">00315</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">CCacheManagement&lt;tag_type, 2&gt;</a> <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">base</a>;
<a name="l00316"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#bc39c72b9a82fa2c0b2ab00a971410f0">00316</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CDegreeArgumentCache.html">CDegreeArgumentCache&lt;tag_type, dd_type&gt;</a> <span class="keyword">self</span>;
<a name="l00318"></a>00318 
<a name="l00320"></a>00320 
<a name="l00321"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#d14ecb25c4d60a2d2d05cc5e2ec67305">00321</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::node_type node_type;
<a name="l00322"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#035f4993522d5dceee27c2ce717d0015">00322</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">base::manager_type</a> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>;
<a name="l00323"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#294046dfd8d50fef25a575a5edecb233">00323</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> dd_type::size_type size_type;
<a name="l00324"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#48a48523f12e4132226b3d323476394f">00324</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> dd_type::navigator navi_type;
<a name="l00325"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#4e4b5f7b581fca3d8c09fd4d0889af0d">00325</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">CIndexCacheHandle&lt;navi_type&gt;</a> <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">degree_node_type</a>;
<a name="l00327"></a>00327 
<a name="l00329"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#1339d3b4f8e50c29f7aa6eb2c59b93fc">00329</a>   <a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#1339d3b4f8e50c29f7aa6eb2c59b93fc" title="Constructor.">CDegreeArgumentCache</a>(<span class="keyword">const</span> <a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">manager_type</a>&amp; mgr): <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">base</a>(mgr) {}
<a name="l00330"></a>00330 
<a name="l00332"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#876ef3ab29c4c9da528ef4213e9f0be4">00332</a>   <a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#876ef3ab29c4c9da528ef4213e9f0be4" title="Copy Constructor.">CDegreeArgumentCache</a>(<span class="keyword">const</span> <span class="keyword">self</span>&amp; rhs): <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">base</a>(rhs) {}
<a name="l00333"></a>00333 
<a name="l00335"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#6302b655d62a50b3ec7c7d7266960516">00335</a>   <a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#6302b655d62a50b3ec7c7d7266960516" title="Destructor.">~CDegreeArgumentCache</a>() {}
<a name="l00336"></a>00336 
<a name="l00338"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#2cb1f41320dd4caadb8d70cd2b35fc7b">00338</a>   navi_type <a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#2cb1f41320dd4caadb8d70cd2b35fc7b" title="Find cached degree wrt. given navigator.">find</a>(navi_type navi, size_type deg)<span class="keyword"> const</span>{ 
<a name="l00339"></a>00339     <span class="keywordflow">return</span> base::find(navi, <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">degree_node_type</a>(deg, base::manager())); 
<a name="l00340"></a>00340   }
<a name="l00341"></a>00341 
<a name="l00343"></a><a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#67601a415b6d3ac5f1ec72f4c6a7e71e">00343</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CDegreeArgumentCache.html#67601a415b6d3ac5f1ec72f4c6a7e71e" title="Store cached degree wrt. given navigator.">insert</a>(navi_type navi, size_type deg, navi_type result)<span class="keyword"> const </span>{
<a name="l00344"></a>00344     base::insert(navi, <a class="code" href="classpolybori_1_1CIndexCacheHandle.html">degree_node_type</a>(deg, base::manager()), result);
<a name="l00345"></a>00345   }
<a name="l00346"></a>00346 
<a name="l00347"></a>00347 };
<a name="l00348"></a>00348 
<a name="l00349"></a>00349 
<a name="l00350"></a>00350 <a class="code" href="pbori__defs_8h.html#faf094fde6c1a7f1aad18bcb455f3b06" title="Finish project&amp;#39;s namespace.">END_NAMESPACE_PBORI</a>
<a name="l00351"></a>00351 
<a name="l00352"></a>00352 <span class="preprocessor">#endif</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Wed Sep 9 14:30:55 2009 for PolyBoRi by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>