Sophie

Sophie

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

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: CCacheManagement.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>CCacheManagement.h</h1><a href="CCacheManagement_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="l00157"></a>00157 <span class="comment"></span><span class="comment">//*****************************************************************************</span>
<a name="l00158"></a>00158 
<a name="l00159"></a>00159 <span class="comment">// include basic definitions</span>
<a name="l00160"></a>00160 <span class="preprocessor">#include "<a class="code" href="pbori__defs_8h.html">pbori_defs.h</a>"</span>
<a name="l00161"></a>00161 
<a name="l00162"></a>00162 <span class="comment">// get DD navigation</span>
<a name="l00163"></a>00163 <span class="preprocessor">#include "<a class="code" href="CCuddNavigator_8h.html">CCuddNavigator.h</a>"</span>
<a name="l00164"></a>00164 <span class="preprocessor">#include "<a class="code" href="CDDInterface_8h.html">CDDInterface.h</a>"</span>
<a name="l00165"></a>00165 <span class="preprocessor">#include "<a class="code" href="BooleRing_8h.html">BooleRing.h</a>"</span>
<a name="l00166"></a>00166 <span class="comment">// get standard functionality</span>
<a name="l00167"></a>00167 <span class="preprocessor">#include &lt;functional&gt;</span>
<a name="l00168"></a>00168 
<a name="l00169"></a>00169 <span class="preprocessor">#ifndef CCacheManagement_h_</span>
<a name="l00170"></a>00170 <span class="preprocessor"></span><span class="preprocessor">#define CCacheManagement_h_</span>
<a name="l00171"></a>00171 <span class="preprocessor"></span>
<a name="l00172"></a>00172 <a class="code" href="pbori__defs_8h.html#6ae360a591580558f31b6157ee792a10" title="Start project&amp;#39;s namespace.">BEGIN_NAMESPACE_PBORI</a>
<a name="l00173"></a>00173 
<a name="l00174"></a>00174 
<a name="l00175"></a><a class="code" href="classpolybori_1_1CCacheTypes.html">00175</a> <span class="keyword">class </span><a class="code" href="classpolybori_1_1CCacheTypes.html">CCacheTypes</a> {
<a name="l00176"></a>00176 
<a name="l00177"></a>00177 <span class="keyword">public</span>:
<a name="l00178"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1no__cache__tag.html#24b709400f41213d14458ed553d064b1c5359d1dc4672775bb7a512def2274c7">00178</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1no__cache__tag.html">no_cache_tag</a> { <span class="keyword">enum</span> { nargs = 0 }; };
<a name="l00179"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html#0c39def59a8edcc6980426740a9ce3504c691aeb66bc042c6451bdeab76d8227">00179</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html">unary_cache_tag</a> { <span class="keyword">enum</span> { nargs = 1 }; };
<a name="l00180"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html#8fb1beaa233e6afd6d283de4c05bdf616ed93da3503b7dfc1ad2ded51273d555">00180</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { <span class="keyword">enum</span> { nargs = 2 }; };
<a name="l00181"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1ternary__cache__tag.html#b1ea884b121e574ca167af81ca36823577bed6c655a516aabdd90e22939e6cf4">00181</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1ternary__cache__tag.html">ternary_cache_tag</a> { <span class="keyword">enum</span> { nargs = 3 }; };
<a name="l00182"></a>00182 
<a name="l00183"></a>00183   <span class="comment">// user functions</span>
<a name="l00184"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1no__cache.html">00184</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1no__cache.html">no_cache</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1no__cache__tag.html">no_cache_tag</a> { };
<a name="l00185"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1union__xor.html">00185</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1union__xor.html">union_xor</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00186"></a>00186 
<a name="l00187"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1multiply__recursive.html">00187</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1multiply__recursive.html">multiply_recursive</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00188"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1divide.html">00188</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1divide.html">divide</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00189"></a>00189 
<a name="l00190"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1minimal__mod.html">00190</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1minimal__mod.html">minimal_mod</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00191"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1minimal__elements.html">00191</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1minimal__elements.html">minimal_elements</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html">unary_cache_tag</a> { };
<a name="l00192"></a>00192 
<a name="l00193"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1multiplesof.html">00193</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1multiplesof.html">multiplesof</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00194"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1divisorsof.html">00194</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1divisorsof.html">divisorsof</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00195"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1ll__red__nf.html">00195</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1ll__red__nf.html">ll_red_nf</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00196"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1plug__1.html">00196</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1plug__1.html">plug_1</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00197"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1exist__abstract.html">00197</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1exist__abstract.html">exist_abstract</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00198"></a>00198 
<a name="l00199"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1degree.html">00199</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1degree.html">degree</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html">unary_cache_tag</a> { };
<a name="l00200"></a>00200 
<a name="l00201"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1has__factor__x.html">00201</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1has__factor__x.html">has_factor_x</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00202"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1has__factor__x__plus__one.html">00202</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1has__factor__x__plus__one.html">has_factor_x_plus_one</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00203"></a>00203 
<a name="l00204"></a>00204   
<a name="l00205"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1mod__varset.html">00205</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1mod__varset.html">mod_varset</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00206"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1interpolate.html">00206</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1interpolate.html">interpolate</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00207"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1zeros.html">00207</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1zeros.html">zeros</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00208"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1interpolate__smallest__lex.html">00208</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1interpolate__smallest__lex.html">interpolate_smallest_lex</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00209"></a>00209   
<a name="l00210"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1include__divisors.html">00210</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1include__divisors.html">include_divisors</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html">unary_cache_tag</a> { };
<a name="l00211"></a>00211   
<a name="l00212"></a>00212   <span class="comment">//struct mod_deg2_set: public binary_cache_tag { };</span>
<a name="l00213"></a><a class="code" href="classpolybori_1_1CCacheTypes.html#7b0e20ae68b9ae967bd7c57924158e8a">00213</a>   <span class="keyword">typedef</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1mod__varset.html">mod_varset</a> <a class="code" href="structpolybori_1_1CCacheTypes_1_1mod__varset.html">mod_deg2_set</a>;
<a name="l00214"></a><a class="code" href="classpolybori_1_1CCacheTypes.html#a6a57a671aacd9d96c20fe502e182bf7">00214</a>   <span class="keyword">typedef</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1mod__varset.html">mod_varset</a> <a class="code" href="structpolybori_1_1CCacheTypes_1_1mod__varset.html">mod_mon_set</a>;
<a name="l00215"></a>00215   
<a name="l00216"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1contained__deg2.html">00216</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1contained__deg2.html">contained_deg2</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html">unary_cache_tag</a> { };
<a name="l00217"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1contained__variables.html">00217</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1contained__variables.html">contained_variables</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html">unary_cache_tag</a> { };
<a name="l00218"></a>00218 
<a name="l00219"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1map__every__x__to__x__plus__one.html">00219</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1map__every__x__to__x__plus__one.html">map_every_x_to_x_plus_one</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html">unary_cache_tag</a> { };
<a name="l00220"></a>00220 
<a name="l00221"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1dlex__lead.html">00221</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1dlex__lead.html">dlex_lead</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html">unary_cache_tag</a> { };
<a name="l00222"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1dp__asc__lead.html">00222</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1dp__asc__lead.html">dp_asc_lead</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html">unary_cache_tag</a> { };
<a name="l00223"></a>00223 
<a name="l00224"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1divisorsof__fixedpath.html">00224</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1divisorsof__fixedpath.html">divisorsof_fixedpath</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1ternary__cache__tag.html">ternary_cache_tag</a> { };
<a name="l00225"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1testwise__ternary.html">00225</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1testwise__ternary.html">testwise_ternary</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1ternary__cache__tag.html">ternary_cache_tag</a> { };
<a name="l00226"></a>00226 
<a name="l00227"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1used__variables.html">00227</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1used__variables.html">used_variables</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html">unary_cache_tag</a> { };
<a name="l00228"></a>00228 
<a name="l00229"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1block__degree.html">00229</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1block__degree.html">block_degree</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00230"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1block__dlex__lead.html">00230</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1block__dlex__lead.html">block_dlex_lead</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1unary__cache__tag.html">unary_cache_tag</a> { };
<a name="l00231"></a>00231   
<a name="l00232"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1has__factor__x__plus__y.html">00232</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1has__factor__x__plus__y.html">has_factor_x_plus_y</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1ternary__cache__tag.html">ternary_cache_tag</a> { };
<a name="l00233"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1left__equals__right__x__branch__and__r__has__fac__x.html">00233</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1left__equals__right__x__branch__and__r__has__fac__x.html">left_equals_right_x_branch_and_r_has_fac_x</a>:
<a name="l00234"></a>00234     <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1ternary__cache__tag.html">ternary_cache_tag</a> { };
<a name="l00235"></a>00235 
<a name="l00236"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1graded__part.html">00236</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1graded__part.html">graded_part</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00237"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1mapping.html">00237</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1mapping.html">mapping</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a> { };
<a name="l00238"></a>00238   
<a name="l00239"></a><a class="code" href="structpolybori_1_1CCacheTypes_1_1is__rewriteable.html">00239</a>   <span class="keyword">struct </span><a class="code" href="structpolybori_1_1CCacheTypes_1_1is__rewriteable.html">is_rewriteable</a>: <span class="keyword">public</span> <a class="code" href="structpolybori_1_1CCacheTypes_1_1binary__cache__tag.html">binary_cache_tag</a>{};
<a name="l00240"></a>00240 };
<a name="l00241"></a>00241 
<a name="l00242"></a>00242 <span class="comment">// Reserve integer Numbers for Ternary operations (for cudd)</span>
<a name="l00243"></a>00243 <span class="keyword">template</span> &lt;<span class="keyword">class</span> TagType&gt;
<a name="l00244"></a>00244 <span class="keyword">struct </span>count_tags;
<a name="l00245"></a>00245 
<a name="l00246"></a>00246 <span class="keyword">template</span>&lt;&gt;
<a name="l00247"></a><a class="code" href="structpolybori_1_1count__tags_3_01CCacheTypes_1_1divisorsof__fixedpath_01_4.html">00247</a> <span class="keyword">struct </span>count_tags&lt;<a class="code" href="classpolybori_1_1CCacheTypes.html">CCacheTypes</a>::divisorsof_fixedpath&gt;{
<a name="l00248"></a><a class="code" href="structpolybori_1_1count__tags_3_01CCacheTypes_1_1divisorsof__fixedpath_01_4.html#62cf9a432a724716e6dacc6d11a498ab9078def71aa3accc93bf804e8a09e693">00248</a>   <span class="keyword">enum</span> { value = 0 };
<a name="l00249"></a>00249 };
<a name="l00250"></a>00250 
<a name="l00251"></a>00251 <span class="keyword">template</span> &lt;<span class="keyword">class</span> BaseTag&gt;
<a name="l00252"></a><a class="code" href="structpolybori_1_1increment__count__tags.html">00252</a> <span class="keyword">struct </span><a class="code" href="structpolybori_1_1increment__count__tags.html">increment_count_tags</a> {
<a name="l00253"></a><a class="code" href="structpolybori_1_1increment__count__tags.html#99586add6a89378ae350145bd406295e2c03947c1c2951d11f42dc8a11699efc">00253</a>   <span class="keyword">enum</span>{ value = count_tags&lt;BaseTag&gt;::value + 1 };
<a name="l00254"></a>00254 };
<a name="l00255"></a>00255 
<a name="l00256"></a>00256 <span class="keyword">template</span>&lt;&gt;
<a name="l00257"></a><a class="code" href="classpolybori_1_1count__tags_3_01CCacheTypes_1_1testwise__ternary_01_4.html">00257</a> <span class="keyword">class </span>count_tags&lt;<a class="code" href="classpolybori_1_1CCacheTypes.html">CCacheTypes</a>::testwise_ternary&gt;:
<a name="l00258"></a>00258   <span class="keyword">public</span> <a class="code" href="structpolybori_1_1increment__count__tags.html">increment_count_tags</a>&lt;CCacheTypes::divisorsof_fixedpath&gt;{ };
<a name="l00259"></a>00259 <span class="keyword">template</span>&lt;&gt;
<a name="l00260"></a><a class="code" href="classpolybori_1_1count__tags_3_01CCacheTypes_1_1left__equals__right__x__branch__and__r__has__fac__x_01_4.html">00260</a> <span class="keyword">class </span>count_tags&lt;<a class="code" href="classpolybori_1_1CCacheTypes.html">CCacheTypes</a>::left_equals_right_x_branch_and_r_has_fac_x&gt;:
<a name="l00261"></a>00261   <span class="keyword">public</span> <a class="code" href="structpolybori_1_1increment__count__tags.html">increment_count_tags</a>&lt;CCacheTypes::testwise_ternary&gt;{ };
<a name="l00262"></a>00262 <span class="keyword">template</span>&lt;&gt;
<a name="l00263"></a><a class="code" href="classpolybori_1_1count__tags_3_01CCacheTypes_1_1has__factor__x__plus__y_01_4.html">00263</a> <span class="keyword">class </span>count_tags&lt;<a class="code" href="classpolybori_1_1CCacheTypes.html">CCacheTypes</a>::has_factor_x_plus_y&gt;:
<a name="l00264"></a>00264   <span class="keyword">public</span> <a class="code" href="structpolybori_1_1increment__count__tags.html">increment_count_tags</a>&lt;CCacheTypes::left_equals_right_x_branch_and_r_has_fac_x&gt;{ };
<a name="l00265"></a>00265 <span class="comment">// generate tag number (special pattern with 4 usable bits)</span>
<a name="l00266"></a>00266 <span class="comment">// 18 bits are already used</span>
<a name="l00267"></a>00267 <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> Counted, <span class="keywordtype">unsigned</span> Offset = 18&gt;
<a name="l00268"></a><a class="code" href="classpolybori_1_1cudd__tag__number.html">00268</a> <span class="keyword">class </span><a class="code" href="classpolybori_1_1cudd__tag__number.html">cudd_tag_number</a> {
<a name="l00269"></a>00269 <span class="keyword">public</span>:
<a name="l00270"></a><a class="code" href="classpolybori_1_1cudd__tag__number.html#6f73fd5e6cd077816f3aa1ef95cec48d7c3c08f9b2373a5d17cab6cb8eaa22c6">00270</a>   <span class="keyword">enum</span> { value = 
<a name="l00271"></a>00271          ( ((Counted + Offset) &amp; 0x3 ) &lt;&lt; 2) | 
<a name="l00272"></a>00272          ( ((Counted + Offset) &amp; 0x1C ) &lt;&lt; 3) | 0x2 };
<a name="l00273"></a>00273 };
<a name="l00274"></a>00274 
<a name="l00280"></a>00280 <span class="keyword">template</span> &lt;<span class="keyword">class</span> MgrType&gt;
<a name="l00281"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html">00281</a> <span class="keyword">class </span><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html">CCuddLikeMgrStorage</a> {
<a name="l00282"></a>00282 <span class="keyword">public</span>:
<a name="l00284"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#2809148317418ff152916deb699d3f22">00284</a>   <span class="keyword">typedef</span> MgrType manager_type;
<a name="l00285"></a>00285 
<a name="l00287"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#87a8cb2fab02e10d76138170a3e6fd87">00287</a>   <span class="keyword">typedef</span> DdManager* internal_manager_type;
<a name="l00288"></a>00288 
<a name="l00290"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#7ae0bde2ea203cbf9ffd39a9cbaa431c">00290</a>   <span class="keyword">typedef</span> DdNode* node_type;
<a name="l00291"></a>00291 
<a name="l00293"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#1f2e1ee371a90ba1aa7bca8dbdb6f2b4">00293</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">CCuddNavigator</a> <a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">navigator</a>;
<a name="l00294"></a>00294 
<a name="l00296"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#c6e373a66b80f38f7655a78f9424320b">00296</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CDDInterface.html">CTypes::dd_type</a> <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a>;
<a name="l00297"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#eabc62a1518d801396418e94b709a722">00297</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCuddZDD.html" title="This class defines a C++ interface to CUDD&amp;#39;s zero-suppressed decision diagram...">CTypes::dd_base</a> <a class="code" href="classpolybori_1_1CCuddZDD.html" title="This class defines a C++ interface to CUDD&amp;#39;s zero-suppressed decision diagram...">dd_base</a>;
<a name="l00298"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#b9e263230388b184db745c2cec4f3b09">00298</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> manager_type::mgrcore_ptr mgrcore_ptr;
<a name="l00299"></a>00299 
<a name="l00301"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#a0128325390137086d143f660307593f">00301</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1BooleRing.html" title="This class is just a wrapper for reinterpreting decicion diagram managers as Boolean...">BooleRing</a> <a class="code" href="classpolybori_1_1BooleRing.html" title="This class is just a wrapper for reinterpreting decicion diagram managers as Boolean...">ring_type</a>;
<a name="l00302"></a>00302 
<a name="l00304"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#4abb71117019a2c7cb284051668c3dfb">00304</a>   <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html">CCuddLikeMgrStorage</a>(<span class="keyword">const</span> manager_type&amp; mgr): 
<a name="l00305"></a>00305     m_mgr(mgr.managerCore()) {}
<a name="l00306"></a>00306 
<a name="l00307"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#f0534317d5ced8a1d1fa3a718e09697f">00307</a>   <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html">CCuddLikeMgrStorage</a>(<span class="keyword">const</span> mgrcore_ptr&amp; mgr): 
<a name="l00308"></a>00308     m_mgr(mgr) {}
<a name="l00309"></a>00309 
<a name="l00311"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#50bea65ba30ad4068abbab322ecc6c24">00311</a>   manager_type <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#50bea65ba30ad4068abbab322ecc6c24" title="Accessing manager.">manager</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_mgr; }
<a name="l00312"></a>00312 
<a name="l00314"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#771cad070c1e016c03ed73df049b5a7d">00314</a>   <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a> <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#771cad070c1e016c03ed73df049b5a7d" title="Re-generate valid decision diagram from navigator.">generate</a>(<a class="code" href="classpolybori_1_1CCuddNavigator.html" title="This class defines an iterator for navigating through then and else branches of ZDDs...">navigator</a> navi)<span class="keyword"> const </span>{
<a name="l00315"></a>00315     <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1CCuddZDD.html" title="This class defines a C++ interface to CUDD&amp;#39;s zero-suppressed decision diagram...">dd_base</a>(m_mgr, navi.<a class="code" href="classpolybori_1_1CCuddNavigator.html#0244a90132338327589f7447edadfe56" title="Constant pointer access operator.">getNode</a>());
<a name="l00316"></a>00316   }
<a name="l00317"></a>00317 
<a name="l00319"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#32db3291e4c63bb990711839c720e32a">00319</a>   <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a> <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#32db3291e4c63bb990711839c720e32a" title="Get constant one.">one</a>()<span class="keyword"> const </span>{
<a name="l00320"></a>00320     <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1CCuddZDD.html" title="This class defines a C++ interface to CUDD&amp;#39;s zero-suppressed decision diagram...">dd_base</a>(m_mgr, DD_ONE(m_mgr-&gt;manager));<span class="comment">//manager().zddOne();</span>
<a name="l00321"></a>00321   }
<a name="l00323"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#1726df47a26eeb742e7bea0a09e2ca2d">00323</a>   <a class="code" href="classpolybori_1_1CDDInterface.html">dd_type</a> <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#1726df47a26eeb742e7bea0a09e2ca2d" title="Get constant zero.">zero</a>()<span class="keyword"> const </span>{
<a name="l00324"></a>00324     <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1CCuddZDD.html" title="This class defines a C++ interface to CUDD&amp;#39;s zero-suppressed decision diagram...">dd_base</a>(m_mgr, Cudd_ReadZero(m_mgr-&gt;manager));<span class="comment">//manager().zddZero();</span>
<a name="l00325"></a>00325   }
<a name="l00326"></a>00326 
<a name="l00327"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#ca1d7656fa1d9672f5789e9fd8da7154">00327</a>   <a class="code" href="classpolybori_1_1BooleRing.html" title="This class is just a wrapper for reinterpreting decicion diagram managers as Boolean...">ring_type</a> <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#ca1d7656fa1d9672f5789e9fd8da7154">ring</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classpolybori_1_1BooleRing.html" title="This class is just a wrapper for reinterpreting decicion diagram managers as Boolean...">ring_type</a>(manager()); }
<a name="l00328"></a>00328 <span class="keyword">protected</span>:
<a name="l00330"></a><a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#7e16f78c75610c4c23db095f9bd0c548">00330</a>   internal_manager_type <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html#7e16f78c75610c4c23db095f9bd0c548" title="Accessing Cudd-internal decision diagram manager.">internalManager</a>()<span class="keyword"> const </span>{ 
<a name="l00331"></a>00331     <span class="keywordflow">return</span> m_mgr-&gt;manager; 
<a name="l00332"></a>00332     <span class="comment">//  return manager().getManager(); </span>
<a name="l00333"></a>00333   }
<a name="l00334"></a>00334 
<a name="l00335"></a>00335 <span class="keyword">private</span>:
<a name="l00337"></a>00337   <span class="comment">//  const manager_type&amp; m_mgr;</span>
<a name="l00338"></a>00338   <span class="keyword">typename</span> manager_type::mgrcore_ptr  m_mgr;
<a name="l00339"></a>00339 };
<a name="l00340"></a>00340 
<a name="l00350"></a>00350 <span class="keyword">template</span> &lt;<span class="keyword">class</span> ManagerType, <span class="keyword">class</span> CacheType, <span class="keywordtype">unsigned</span> ArgumentLength&gt;
<a name="l00351"></a>00351 <span class="keyword">class </span><a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">CCacheManBase</a>;
<a name="l00352"></a>00352 
<a name="l00353"></a>00353 <span class="comment">// Fixing base type for Cudd-Like type Cudd</span>
<a name="l00354"></a>00354 <span class="keyword">template</span> &lt;<span class="keyword">class</span> CacheType, <span class="keywordtype">unsigned</span> ArgumentLength&gt;
<a name="l00355"></a><a class="code" href="structpolybori_1_1pbori__base_3_01CCacheManBase_3_01Cudd_00_01CacheType_00_01ArgumentLength_01_4_01_4.html">00355</a> <span class="keyword">struct </span>pbori_base&lt;<a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">CCacheManBase</a>&lt;Cudd, CacheType, ArgumentLength&gt; &gt; {
<a name="l00356"></a>00356 
<a name="l00357"></a><a class="code" href="structpolybori_1_1pbori__base_3_01CCacheManBase_3_01Cudd_00_01CacheType_00_01ArgumentLength_01_4_01_4.html#3d49622237f821259aac27af91d31b0e">00357</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html">CCuddLikeMgrStorage&lt;Cudd&gt;</a>  <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html">type</a>;
<a name="l00358"></a>00358 };
<a name="l00359"></a>00359 
<a name="l00360"></a>00360 <span class="comment">// Fixing base type for Cudd-Like type CCuddInterface</span>
<a name="l00361"></a>00361 <span class="keyword">template</span> &lt;<span class="keyword">class</span> CacheType, <span class="keywordtype">unsigned</span> ArgumentLength&gt;
<a name="l00362"></a><a class="code" href="structpolybori_1_1pbori__base_3_01CCacheManBase_3_01CCuddInterface_00_01CacheType_00_01ArgumentLength_01_4_01_4.html">00362</a> <span class="keyword">struct </span>pbori_base&lt;<a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">CCacheManBase</a>&lt;<a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&amp;#39;s decicion diagram manager.">CCuddInterface</a>, CacheType, ArgumentLength&gt; &gt; {
<a name="l00363"></a>00363 
<a name="l00364"></a><a class="code" href="structpolybori_1_1pbori__base_3_01CCacheManBase_3_01CCuddInterface_00_01CacheType_00_01ArgumentLength_01_4_01_4.html#a0bd3b85b87a632c03335ce74a6c2689">00364</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html">CCuddLikeMgrStorage&lt;CCuddInterface&gt;</a> <a class="code" href="classpolybori_1_1CCuddLikeMgrStorage.html">type</a>;
<a name="l00365"></a>00365 };
<a name="l00366"></a>00366 
<a name="l00367"></a>00367 <span class="comment">// Dummy variant for generating empty cache managers, e.g. for using generate()</span>
<a name="l00368"></a>00368 <span class="keyword">template</span> &lt;<span class="keyword">class</span> ManagerType, <span class="keyword">class</span> CacheType&gt;
<a name="l00369"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html">00369</a> <span class="keyword">class </span><a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">CCacheManBase</a>&lt;ManagerType, CacheType, 0&gt; :
<a name="l00370"></a>00370   <span class="keyword">public</span> pbori_base&lt;CCacheManBase&lt;ManagerType, CacheType, 0&gt; &gt;::type {
<a name="l00371"></a>00371 
<a name="l00372"></a>00372 <span class="keyword">public</span>:
<a name="l00374"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#fbf77407539ecb7eb37801e2fe585886">00374</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html">CCacheManBase&lt;ManagerType, CacheType, 0&gt;</a> <span class="keyword">self</span>;
<a name="l00375"></a>00375 
<a name="l00377"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#3f05a5d7a1dddaf94ce49a49e9804dd8">00377</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> pbori_base&lt;self&gt;::type base;
<a name="l00378"></a>00378 
<a name="l00380"></a>00380 
<a name="l00381"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#18987c1a38dc847c7b2c2cf64a9c472d">00381</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::node_type node_type;
<a name="l00382"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#3630bd6b82470b750e21330bd7c98436">00382</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::navigator navigator;
<a name="l00383"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#001cbc5697a5d96189625b8be6da6bed">00383</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::manager_type manager_type;
<a name="l00385"></a>00385 
<a name="l00387"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#577f06ce2f676c3878587f1f9219bc24">00387</a>   <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#577f06ce2f676c3878587f1f9219bc24" title="Constructor.">CCacheManBase</a>(<span class="keyword">const</span> manager_type&amp; mgr): base(mgr) {}
<a name="l00388"></a>00388 
<a name="l00390"></a>00390 
<a name="l00391"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#be760d9ab69f673bf0816cf600613486">00391</a>   navigator <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#be760d9ab69f673bf0816cf600613486">find</a>(navigator, ...)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> navigator(); }
<a name="l00392"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#feb9ed42efeec5c9d212cc43b2be90dd">00392</a>   node_type <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#feb9ed42efeec5c9d212cc43b2be90dd">find</a>(node_type, ...)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> NULL; }
<a name="l00393"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#15f0e205e52c502187db35f5ab84cba4">00393</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_010_01_4.html#15f0e205e52c502187db35f5ab84cba4">insert</a>(...)<span class="keyword"> const </span>{}
<a name="l00395"></a>00395 };
<a name="l00396"></a>00396 
<a name="l00397"></a>00397 
<a name="l00398"></a>00398 <span class="comment">// Variant for unary functions</span>
<a name="l00399"></a>00399 <span class="keyword">template</span> &lt;<span class="keyword">class</span> ManagerType, <span class="keyword">class</span> CacheType&gt;
<a name="l00400"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html">00400</a> <span class="keyword">class </span><a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">CCacheManBase</a>&lt;ManagerType, CacheType, 1&gt; :
<a name="l00401"></a>00401   <span class="keyword">public</span> pbori_base&lt;CCacheManBase&lt;ManagerType, CacheType, 1&gt; &gt;::type {
<a name="l00402"></a>00402 
<a name="l00403"></a>00403 <span class="keyword">public</span>:
<a name="l00405"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#1bb215df862d8921b675fd174c3b6c82">00405</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html">CCacheManBase&lt;ManagerType, CacheType, 1&gt;</a> <span class="keyword">self</span>;
<a name="l00406"></a>00406 
<a name="l00408"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#71b2bb031a8f01f79e09c6e9628c0adc">00408</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> pbori_base&lt;self&gt;::type base;
<a name="l00409"></a>00409 
<a name="l00411"></a>00411 
<a name="l00412"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#9da2e2336c23bbd31460980382cce60c">00412</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::node_type node_type;
<a name="l00413"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#422093c534ce8e47a1fed9657103755b">00413</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::navigator navigator;
<a name="l00414"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#8811c276f9605ca34a8dd163fcea94fa">00414</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::manager_type manager_type;
<a name="l00416"></a>00416 
<a name="l00418"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#72c9b52041a08fa2f1dd904f9793f490">00418</a>   <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#72c9b52041a08fa2f1dd904f9793f490" title="Constructor.">CCacheManBase</a>(<span class="keyword">const</span> manager_type&amp; mgr): base(mgr) {}
<a name="l00419"></a>00419 
<a name="l00421"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#5ae779c27f58d3543240f6d44a460a82">00421</a>   node_type <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#5ae779c27f58d3543240f6d44a460a82" title="Find cached value wrt. given node.">find</a>(node_type node)<span class="keyword"> const </span>{
<a name="l00422"></a>00422     <span class="keywordflow">return</span> cuddCacheLookup1Zdd(internalManager(), cache_dummy, node);
<a name="l00423"></a>00423   }
<a name="l00424"></a>00424 
<a name="l00426"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#d6733bcb96da69f5cc81c2a07745159f">00426</a>   navigator <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#d6733bcb96da69f5cc81c2a07745159f" title="Find cached value wrt. given node (for navigator type).">find</a>(navigator node)<span class="keyword"> const </span>{ 
<a name="l00427"></a>00427     <span class="keywordflow">return</span> <a class="code" href="namespacepolybori.html#2ce0359685ce17072aa1d5af3663dd0c">explicit_navigator_cast</a>(find(node.getNode())); 
<a name="l00428"></a>00428   }
<a name="l00429"></a>00429 
<a name="l00431"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#c512cedc7f04316f774297a63723337f">00431</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#c512cedc7f04316f774297a63723337f" title="Store cached value wrt. given node.">insert</a>(node_type node, node_type result)<span class="keyword"> const </span>{
<a name="l00432"></a>00432     Cudd_Ref(result);
<a name="l00433"></a>00433     cuddCacheInsert1(internalManager(), cache_dummy, node, result);
<a name="l00434"></a>00434     Cudd_Deref(result);
<a name="l00435"></a>00435   }
<a name="l00436"></a>00436 
<a name="l00438"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#0d48318be88a7fe9ea24895c31f5c4ff">00438</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_011_01_4.html#0d48318be88a7fe9ea24895c31f5c4ff" title="Store cached value wrt. given node.">insert</a>(navigator node, navigator result)<span class="keyword"> const </span>{
<a name="l00439"></a>00439     <a class="code" href="classinsert.html" title="Accessing .insert().">insert</a>(node.getNode(), result.getNode());
<a name="l00440"></a>00440   }
<a name="l00441"></a>00441 
<a name="l00442"></a>00442 <span class="keyword">protected</span>:
<a name="l00444"></a>00444   <span class="keyword">using</span> base::internalManager;
<a name="l00445"></a>00445 
<a name="l00446"></a>00446 <span class="keyword">private</span>:
<a name="l00448"></a>00448   <span class="keyword">static</span> node_type cache_dummy(<span class="keyword">typename</span> base::internal_manager_type,node_type){
<a name="l00449"></a>00449     <span class="keywordflow">return</span> NULL;
<a name="l00450"></a>00450   }
<a name="l00451"></a>00451 };
<a name="l00452"></a>00452 
<a name="l00453"></a>00453 <span class="comment">// Variant for binary functions</span>
<a name="l00454"></a>00454 <span class="keyword">template</span> &lt;<span class="keyword">class</span> ManagerType, <span class="keyword">class</span> CacheType&gt;
<a name="l00455"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html">00455</a> <span class="keyword">class </span><a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">CCacheManBase</a>&lt;ManagerType, CacheType, 2&gt; :
<a name="l00456"></a>00456   <span class="keyword">public</span> pbori_base&lt;CCacheManBase&lt;ManagerType, CacheType, 2&gt; &gt;::type {
<a name="l00457"></a>00457 
<a name="l00458"></a>00458 <span class="keyword">public</span>:
<a name="l00460"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#bffbd490bdc65a7fd9b4945f5b9c410f">00460</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html">CCacheManBase&lt;ManagerType, CacheType, 2&gt;</a> <span class="keyword">self</span>;
<a name="l00461"></a>00461 
<a name="l00463"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#b78bc3210147dca2c59e030bd54f24d1">00463</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> pbori_base&lt;self&gt;::type base;
<a name="l00464"></a>00464 
<a name="l00466"></a>00466 
<a name="l00467"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#afac3e5dea20c6c63c488d9d53d97be1">00467</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::node_type node_type;
<a name="l00468"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#2a914c4d9bb24d8637045ea605dcc2c0">00468</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::navigator navigator;
<a name="l00469"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#29a5d48849e2ca4c5272e3f821098623">00469</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::manager_type manager_type;
<a name="l00471"></a>00471 
<a name="l00473"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#f813ca507baa4c16cff243c9944c5b84">00473</a>   <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#f813ca507baa4c16cff243c9944c5b84" title="Constructor.">CCacheManBase</a>(<span class="keyword">const</span> manager_type&amp; mgr): base(mgr) {}
<a name="l00474"></a>00474 
<a name="l00476"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#9e7ea0d7e329285a072e642c3b591e7b">00476</a>   node_type <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#9e7ea0d7e329285a072e642c3b591e7b" title="Find cached value wrt. given node.">find</a>(node_type first, node_type second)<span class="keyword"> const </span>{
<a name="l00477"></a>00477     <span class="keywordflow">return</span> cuddCacheLookup2Zdd(internalManager(), cache_dummy, first, second);
<a name="l00478"></a>00478   }
<a name="l00480"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#6a963df02badbd0574f06d76a3c983ac">00480</a>   navigator <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#6a963df02badbd0574f06d76a3c983ac" title="Find cached value wrt. given node (for navigator type).">find</a>(navigator first, navigator second)<span class="keyword"> const </span>{ 
<a name="l00481"></a>00481     <span class="keywordflow">return</span> <a class="code" href="namespacepolybori.html#2ce0359685ce17072aa1d5af3663dd0c">explicit_navigator_cast</a>(find(first.getNode(), second.getNode()));
<a name="l00482"></a>00482   }
<a name="l00483"></a>00483 
<a name="l00485"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#bf77b2b55c25816a612109eeb45feba7">00485</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#bf77b2b55c25816a612109eeb45feba7" title="Store cached value wrt. given node.">insert</a>(node_type first, node_type second, node_type result)<span class="keyword"> const </span>{
<a name="l00486"></a>00486     Cudd_Ref(result);
<a name="l00487"></a>00487     cuddCacheInsert2(internalManager(), cache_dummy, first, second, result);
<a name="l00488"></a>00488     Cudd_Deref(result);
<a name="l00489"></a>00489   }
<a name="l00490"></a>00490 
<a name="l00492"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#b65726a938d814f529f920779c276779">00492</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_012_01_4.html#b65726a938d814f529f920779c276779" title="Store cached value wrt. given node.">insert</a>(navigator first, navigator second, navigator result)<span class="keyword"> const </span>{
<a name="l00493"></a>00493     <a class="code" href="classinsert.html" title="Accessing .insert().">insert</a>(first.getNode(), second.getNode(), result.getNode());
<a name="l00494"></a>00494   }
<a name="l00495"></a>00495 
<a name="l00496"></a>00496 <span class="keyword">protected</span>:
<a name="l00498"></a>00498   <span class="keyword">using</span> base::internalManager;
<a name="l00499"></a>00499 
<a name="l00500"></a>00500 <span class="keyword">private</span>:
<a name="l00502"></a>00502   <span class="keyword">static</span> node_type cache_dummy(<span class="keyword">typename</span> base::internal_manager_type, 
<a name="l00503"></a>00503                                node_type, node_type){
<a name="l00504"></a>00504     <span class="keywordflow">return</span> NULL;
<a name="l00505"></a>00505   }
<a name="l00506"></a>00506 };
<a name="l00507"></a>00507 
<a name="l00508"></a>00508 <span class="comment">// Variant for ternary functions</span>
<a name="l00509"></a>00509 <span class="keyword">template</span> &lt;<span class="keyword">class</span> ManagerType, <span class="keyword">class</span> CacheType&gt;
<a name="l00510"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html">00510</a> <span class="keyword">class </span><a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">CCacheManBase</a>&lt;ManagerType, CacheType, 3&gt; :
<a name="l00511"></a>00511   <span class="keyword">public</span> pbori_base&lt;CCacheManBase&lt;ManagerType, CacheType, 3&gt; &gt;::type {
<a name="l00512"></a>00512 
<a name="l00513"></a>00513 <span class="keyword">public</span>:
<a name="l00515"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#e1d4cda2594b136dd3f6b7d1b655b001">00515</a>   <span class="keyword">typedef</span> <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html">CCacheManBase&lt;ManagerType, CacheType, 3&gt;</a> <span class="keyword">self</span>;
<a name="l00516"></a>00516 
<a name="l00518"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#41420647a5feb9ae02a88f6e6542a143">00518</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> pbori_base&lt;self&gt;::type base;
<a name="l00519"></a>00519 
<a name="l00521"></a>00521 
<a name="l00522"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#7aee0c778a7e0cafa9372d0447a5645e">00522</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::node_type node_type;
<a name="l00523"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#1257982b83558eb19d4e1b180a1addc2">00523</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::navigator navigator;
<a name="l00524"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#d5865ccedd3645aeea4818d21313c3d4">00524</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::manager_type manager_type;
<a name="l00526"></a>00526 
<a name="l00528"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#ded9c22b2b88003d82c8680714669d8d">00528</a>   <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#ded9c22b2b88003d82c8680714669d8d" title="Constructor.">CCacheManBase</a>(<span class="keyword">const</span> manager_type&amp; mgr): base(mgr) {}
<a name="l00529"></a>00529 
<a name="l00531"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#250e927870958b858a3076920daaadc1">00531</a>   node_type <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#250e927870958b858a3076920daaadc1" title="Find cached value wrt. given node.">find</a>(node_type first, node_type second, node_type third)<span class="keyword"> const </span>{
<a name="l00532"></a>00532     <span class="keywordflow">return</span> cuddCacheLookupZdd(internalManager(), (ptruint)GENERIC_DD_TAG, 
<a name="l00533"></a>00533                               first, second, third);
<a name="l00534"></a>00534   }
<a name="l00535"></a>00535 
<a name="l00537"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#cb5a10649aaf76d1fab5990cde202c5d">00537</a>   navigator <a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#cb5a10649aaf76d1fab5990cde202c5d" title="Find cached value wrt. given node (for navigator type).">find</a>(navigator first, navigator second, navigator third)<span class="keyword"> const </span>{
<a name="l00538"></a>00538     <span class="keywordflow">return</span> <a class="code" href="namespacepolybori.html#2ce0359685ce17072aa1d5af3663dd0c">explicit_navigator_cast</a>(find(first.getNode(), second.getNode(),
<a name="l00539"></a>00539                                         third.getNode())); 
<a name="l00540"></a>00540   }
<a name="l00541"></a>00541 
<a name="l00543"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#d8507a7c1aa84c8e2f58e75538574b4a">00543</a>   <span class="keywordtype">void</span> <a class="code" href="classinsert.html" title="Accessing .insert().">insert</a>(node_type first, node_type second, node_type third, 
<a name="l00544"></a>00544               node_type result)<span class="keyword"> const </span>{
<a name="l00545"></a>00545     Cudd_Ref(result);
<a name="l00546"></a>00546     cuddCacheInsert(internalManager(), (ptruint)GENERIC_DD_TAG, 
<a name="l00547"></a>00547                     first, second, third, result);
<a name="l00548"></a>00548     Cudd_Deref(result);
<a name="l00549"></a>00549   }
<a name="l00551"></a><a class="code" href="classpolybori_1_1CCacheManBase_3_01ManagerType_00_01CacheType_00_013_01_4.html#91e8ead58d3149152a0031097aaaab63">00551</a>   <span class="keywordtype">void</span> <a class="code" href="classinsert.html" title="Accessing .insert().">insert</a>(navigator first, navigator second, navigator third, 
<a name="l00552"></a>00552               navigator result)<span class="keyword"> const </span>{
<a name="l00553"></a>00553     <a class="code" href="classinsert.html" title="Accessing .insert().">insert</a>(first.getNode(), second.getNode(), third.getNode(), 
<a name="l00554"></a>00554            result.getNode());  
<a name="l00555"></a>00555   }
<a name="l00556"></a>00556 
<a name="l00557"></a>00557 <span class="keyword">protected</span>:
<a name="l00559"></a>00559   <span class="keyword">using</span> base::internalManager;
<a name="l00560"></a>00560 
<a name="l00561"></a>00561 <span class="keyword">private</span>:
<a name="l00562"></a>00562   <span class="keyword">enum</span> { GENERIC_DD_TAG =
<a name="l00563"></a>00563          <a class="code" href="classpolybori_1_1cudd__tag__number.html">cudd_tag_number&lt;count_tags&lt;CacheType&gt;::value</a>&gt;::value };
<a name="l00564"></a>00564 };
<a name="l00565"></a>00565 
<a name="l00578"></a>00578 <span class="keyword">template</span> &lt;<span class="keyword">class </span>CacheType, 
<a name="l00579"></a>00579           <span class="keywordtype">unsigned</span> ArgumentLength = CacheType::nargs&gt;
<a name="l00580"></a><a class="code" href="classpolybori_1_1CCacheManagement.html">00580</a> <span class="keyword">class </span><a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">CCacheManagement</a>: 
<a name="l00581"></a>00581   <span class="keyword">public</span> <a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">CCacheManBase</a>&lt;typename CTypes::manager_base, 
<a name="l00582"></a>00582                        CacheType, ArgumentLength&gt; {
<a name="l00583"></a>00583 <span class="keyword">public</span>:
<a name="l00584"></a>00584 
<a name="l00586"></a>00586 
<a name="l00587"></a><a class="code" href="classpolybori_1_1CCacheManagement.html#243a55e9e7aaa5d64193fe77f92401a9">00587</a>   <span class="keyword">typedef</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="l00588"></a><a class="code" href="classpolybori_1_1CCacheManagement.html#2253b1c5e270190dbbb73d7f0aaac742">00588</a>   <span class="keyword">typedef</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="l00589"></a><a class="code" href="classpolybori_1_1CCacheManagement.html#0bf5ffaeba7e83ca60483311461d68d5">00589</a>   <span class="keyword">typedef</span> CacheType <a class="code" href="structpolybori_1_1CCacheTypes_1_1block__degree.html">cache_type</a>;
<a name="l00590"></a><a class="code" href="classpolybori_1_1CCacheManagement.html#8c58807ab46c74a599611ccfec4d3b978a8386cb5b19eed8ec993157e593d208">00590</a>   <span class="keyword">enum</span> { nargs = ArgumentLength };
<a name="l00592"></a>00592 
<a name="l00594"></a><a class="code" href="classpolybori_1_1CCacheManagement.html#ca09d8cd0184ebee421ce4eea81d97cf">00594</a>   <span class="keyword">typedef</span> <a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">CCacheManBase&lt;manager_type, cache_type, nargs&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="l00595"></a>00595 
<a name="l00597"></a><a class="code" href="classpolybori_1_1CCacheManagement.html#9e2ef638540a2f6722fc1db3c01ccfe1">00597</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::node_type node_type;
<a name="l00598"></a>00598 
<a name="l00600"></a><a class="code" href="classpolybori_1_1CCacheManagement.html#65839b3419c213733da1c55f7a03260d">00600</a>   <a class="code" href="classpolybori_1_1CCacheManagement.html" title="This template class forms the base for CCommutativeCacheManagement and CacheManager...">CCacheManagement</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 name="l00601"></a>00601     <a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">base</a>(mgr) {}
<a name="l00602"></a>00602 
<a name="l00603"></a>00603   <span class="keyword">using</span> base::find;
<a name="l00604"></a>00604   <span class="keyword">using</span> base::insert;
<a name="l00605"></a>00605 };
<a name="l00606"></a>00606 
<a name="l00610"></a>00610 <span class="keyword">template</span> &lt;<span class="keyword">class</span> CacheType&gt;
<a name="l00611"></a><a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html">00611</a> <span class="keyword">class </span><a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html">CCommutativeCacheManagement</a>: 
<a name="l00612"></a>00612   <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;CacheType, 2&gt; {
<a name="l00613"></a>00613 
<a name="l00614"></a>00614 <span class="keyword">public</span>:
<a name="l00616"></a>00616 
<a name="l00617"></a><a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#967021ff527f19f1b4d00272d6b97039">00617</a>   <span class="keyword">typedef</span> CacheType cache_type;
<a name="l00619"></a>00619 
<a name="l00621"></a><a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#3e2d9b6568e9d3ddde0b8ea3b18a92d0">00621</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;cache_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="l00622"></a>00622 
<a name="l00624"></a><a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#66d7d7b1725844aa768628fe36b52f34">00624</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::node_type node_type;
<a name="l00625"></a><a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#229f864e602e2cf879c56659b51ff7a3">00625</a>   <span class="keyword">typedef</span> <span class="keyword">typename</span> base::navigator navigator;
<a name="l00626"></a>00626 
<a name="l00628"></a><a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#b7e5b201cec387934ac2f091987ea3a6">00628</a>   <a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html">CCommutativeCacheManagement</a>(<span class="keyword">const</span> <span class="keyword">typename</span> base::manager_type&amp; mgr):
<a name="l00629"></a>00629     <a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">base</a>(mgr) {}
<a name="l00630"></a>00630 
<a name="l00632"></a><a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#2e86d0db8f2ec394ed07dfeda2aaecc0">00632</a>   node_type <a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#2e86d0db8f2ec394ed07dfeda2aaecc0" title="Find cached value wrt. given node.">find</a>(node_type first, node_type second)<span class="keyword"> const </span>{
<a name="l00633"></a>00633     <span class="keywordflow">if</span> ( std::less&lt;node_type&gt;()(first, second) )
<a name="l00634"></a>00634       <span class="keywordflow">return</span> base::find(first, second);
<a name="l00635"></a>00635     <span class="keywordflow">else</span>
<a name="l00636"></a>00636       <span class="keywordflow">return</span> base::find(second, first);
<a name="l00637"></a>00637   }
<a name="l00638"></a>00638 
<a name="l00640"></a><a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#eead5ae89629adf76f77e7dc69469e50">00640</a>   navigator <a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#eead5ae89629adf76f77e7dc69469e50" title="Find cached value wrt. given node (for navigator type).">find</a>(navigator first, navigator second)<span class="keyword"> const </span>{
<a name="l00641"></a>00641     <span class="keywordflow">return</span> <a class="code" href="namespacepolybori.html#2ce0359685ce17072aa1d5af3663dd0c">explicit_navigator_cast</a>(find(first.getNode(), second.getNode()));
<a name="l00642"></a>00642   }
<a name="l00643"></a>00643 
<a name="l00644"></a>00644 
<a name="l00646"></a><a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#6066e4bde339b916e3fbe1fbc9528b40">00646</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#6066e4bde339b916e3fbe1fbc9528b40" title="Store cached value wrt. given node.">insert</a>(node_type first, node_type second, node_type result)<span class="keyword"> const </span>{
<a name="l00647"></a>00647     <span class="keywordflow">if</span> ( std::less&lt;node_type&gt;()(first, second) )
<a name="l00648"></a>00648       base::insert(first, second, result);
<a name="l00649"></a>00649     <span class="keywordflow">else</span>
<a name="l00650"></a>00650       base::insert(second, first, result);   
<a name="l00651"></a>00651   }
<a name="l00652"></a>00652 
<a name="l00654"></a><a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#4b8a82caa9535907fb6024b0c495b765">00654</a>   <span class="keywordtype">void</span> <a class="code" href="classpolybori_1_1CCommutativeCacheManagement.html#4b8a82caa9535907fb6024b0c495b765" title="Store cached value wrt. given node (for navigator type).">insert</a>(navigator first, navigator second, navigator result)<span class="keyword"> const </span>{
<a name="l00655"></a>00655     <a class="code" href="classinsert.html" title="Accessing .insert().">insert</a>(first.getNode(), second.getNode(), result.getNode());
<a name="l00656"></a>00656   }
<a name="l00657"></a>00657 
<a name="l00658"></a>00658 };
<a name="l00659"></a>00659 
<a name="l00660"></a>00660 <a class="code" href="pbori__defs_8h.html#faf094fde6c1a7f1aad18bcb455f3b06" title="Finish project&amp;#39;s namespace.">END_NAMESPACE_PBORI</a>
<a name="l00661"></a>00661 
<a name="l00662"></a>00662 <span class="preprocessor">#endif</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Wed Sep 9 14:30:54 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>