<!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 Page</span></a></li> <li><a href="pages.html"><span>Related 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 List</span></a></li> <li><a href="globals.html"><span>File 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 <functional></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&#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> <<span class="keyword">class</span> TagType> <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><> <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<<a class="code" href="classpolybori_1_1CCacheTypes.html">CCacheTypes</a>::divisorsof_fixedpath>{ <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> <<span class="keyword">class</span> BaseTag> <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<BaseTag>::value + 1 }; <a name="l00254"></a>00254 }; <a name="l00255"></a>00255 <a name="l00256"></a>00256 <span class="keyword">template</span><> <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<<a class="code" href="classpolybori_1_1CCacheTypes.html">CCacheTypes</a>::testwise_ternary>: <a name="l00258"></a>00258 <span class="keyword">public</span> <a class="code" href="structpolybori_1_1increment__count__tags.html">increment_count_tags</a><CCacheTypes::divisorsof_fixedpath>{ }; <a name="l00259"></a>00259 <span class="keyword">template</span><> <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<<a class="code" href="classpolybori_1_1CCacheTypes.html">CCacheTypes</a>::left_equals_right_x_branch_and_r_has_fac_x>: <a name="l00261"></a>00261 <span class="keyword">public</span> <a class="code" href="structpolybori_1_1increment__count__tags.html">increment_count_tags</a><CCacheTypes::testwise_ternary>{ }; <a name="l00262"></a>00262 <span class="keyword">template</span><> <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<<a class="code" href="classpolybori_1_1CCacheTypes.html">CCacheTypes</a>::has_factor_x_plus_y>: <a name="l00264"></a>00264 <span class="keyword">public</span> <a class="code" href="structpolybori_1_1increment__count__tags.html">increment_count_tags</a><CCacheTypes::left_equals_right_x_branch_and_r_has_fac_x>{ }; <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> <<span class="keywordtype">unsigned</span> Counted, <span class="keywordtype">unsigned</span> Offset = 18> <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) & 0x3 ) << 2) | <a name="l00272"></a>00272 ( ((Counted + Offset) & 0x1C ) << 3) | 0x2 }; <a name="l00273"></a>00273 }; <a name="l00274"></a>00274 <a name="l00280"></a>00280 <span class="keyword">template</span> <<span class="keyword">class</span> MgrType> <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&#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&#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& 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& 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&#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&#39;s zero-suppressed decision diagram...">dd_base</a>(m_mgr, DD_ONE(m_mgr->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&#39;s zero-suppressed decision diagram...">dd_base</a>(m_mgr, Cudd_ReadZero(m_mgr->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->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& 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> <<span class="keyword">class</span> ManagerType, <span class="keyword">class</span> CacheType, <span class="keywordtype">unsigned</span> ArgumentLength> <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> <<span class="keyword">class</span> CacheType, <span class="keywordtype">unsigned</span> ArgumentLength> <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<<a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">CCacheManBase</a><Cudd, CacheType, ArgumentLength> > { <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<Cudd></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> <<span class="keyword">class</span> CacheType, <span class="keywordtype">unsigned</span> ArgumentLength> <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<<a class="code" href="classCCacheManBase.html" title="This template forms the base for CCacheManagement. It implements routines for finding...">CCacheManBase</a><<a class="code" href="classpolybori_1_1CCuddInterface.html" title="This class defines a C++ interface to CUDD&#39;s decicion diagram manager.">CCuddInterface</a>, CacheType, ArgumentLength> > { <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<CCuddInterface></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> <<span class="keyword">class</span> ManagerType, <span class="keyword">class</span> CacheType> <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><ManagerType, CacheType, 0> : <a name="l00370"></a>00370 <span class="keyword">public</span> pbori_base<CCacheManBase<ManagerType, CacheType, 0> >::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<ManagerType, CacheType, 0></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<self>::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& 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> <<span class="keyword">class</span> ManagerType, <span class="keyword">class</span> CacheType> <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><ManagerType, CacheType, 1> : <a name="l00401"></a>00401 <span class="keyword">public</span> pbori_base<CCacheManBase<ManagerType, CacheType, 1> >::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<ManagerType, CacheType, 1></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<self>::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& 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> <<span class="keyword">class</span> ManagerType, <span class="keyword">class</span> CacheType> <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><ManagerType, CacheType, 2> : <a name="l00456"></a>00456 <span class="keyword">public</span> pbori_base<CCacheManBase<ManagerType, CacheType, 2> >::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<ManagerType, CacheType, 2></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<self>::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& 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> <<span class="keyword">class</span> ManagerType, <span class="keyword">class</span> CacheType> <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><ManagerType, CacheType, 3> : <a name="l00511"></a>00511 <span class="keyword">public</span> pbori_base<CCacheManBase<ManagerType, CacheType, 3> >::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<ManagerType, CacheType, 3></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<self>::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& 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<count_tags<CacheType>::value</a>>::value }; <a name="l00564"></a>00564 }; <a name="l00565"></a>00565 <a name="l00578"></a>00578 <span class="keyword">template</span> <<span class="keyword">class </span>CacheType, <a name="l00579"></a>00579 <span class="keywordtype">unsigned</span> ArgumentLength = CacheType::nargs> <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><typename CTypes::manager_base, <a name="l00582"></a>00582 CacheType, ArgumentLength> { <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&#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&#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<manager_type, cache_type, nargs></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&#39;s decicion diagram manager.">manager_type</a>& 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> <<span class="keyword">class</span> CacheType> <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><CacheType, 2> { <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<cache_type, 2></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& 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<node_type>()(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<node_type>()(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&#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 <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>