svf-tools 1.0.295 → 1.0.296

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/CMakeLists.txt +1 -1
  2. package/Dockerfile +1 -1
  3. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
  4. package/SVF-doxygen/html/html/CHG_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/GraphPrinter_8h.html +1 -0
  12. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +5 -5
  13. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/PAG_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  28. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +1 -1
  29. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +1 -1
  30. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  31. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +1 -1
  32. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
  33. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +1 -1
  34. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
  35. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +1 -1
  36. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
  37. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
  38. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
  39. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
  40. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
  41. package/SVF-doxygen/html/html/classSVF_1_1PAG.html +1 -1
  42. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  43. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +2 -2
  44. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +1 -1
  45. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +1 -1
  46. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
  47. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
  48. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
  49. package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +7 -7
  50. package/build.sh +6 -3
  51. package/include/Graphs/GraphPrinter.h +2 -1
  52. package/include/MemoryModel/MutablePointsToDS.h +1 -1
  53. package/include/MemoryModel/PointerAnalysisImpl.h +4 -4
  54. package/include/Util/BasicTypes.h +1 -1
  55. package/lib/DDA/DDAPass.cpp +1 -1
  56. package/lib/MemoryModel/PointerAnalysis.cpp +7 -7
  57. package/lib/MemoryModel/PointerAnalysisImpl.cpp +3 -3
  58. package/lib/SVF-FE/Graph2Json.cpp +1 -1
  59. package/lib/SVF-FE/LLVMModule.cpp +1 -1
  60. package/lib/Util/TypeBasedHeapCloning.cpp +6 -6
  61. package/lib/WPA/FlowSensitive.cpp +2 -2
  62. package/lib/WPA/FlowSensitiveTBHC.cpp +2 -2
  63. package/lib/WPA/WPAPass.cpp +7 -7
  64. package/package.json +1 -1
  65. package/setup.sh +1 -1
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">MutablePointsToDS.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="MutablePointsToDS_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#ifndef MUTABLE_POINTSTO_H_</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#define MUTABLE_POINTSTO_H_</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="AbstractPointsToDS_8h.html">MemoryModel/AbstractPointsToDS.h</a>&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFBasicTypes_8h.html">Util/SVFBasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;{</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html"> 15</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html"> 19</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad92cfe345043b1bc8d6c7a03df43310f"> 21</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ab88ea00589ec9353bccf3629a1c4e5d3"> 23</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutablePTData.html#ab88ea00589ec9353bccf3629a1c4e5d3">BasePTData</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a9e69cb846a8d2da102981d1f48cb16dd"> 24</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1MutablePTData.html#a9e69cb846a8d2da102981d1f48cb16dd">PTDataTy</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e"> 26</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Key, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">PtsMap</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a6d491581d17876625d0265cd26acd8e1"> 27</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Data, KeySet&gt;</a> <a class="code" href="classSVF_1_1MutablePTData.html#a6d491581d17876625d0265cd26acd8e1">RevPtsMap</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad08dbfa28cd0d622322091d6600748ed"> 28</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> PtsMap::iterator <a class="code" href="classSVF_1_1MutablePTData.html#ad08dbfa28cd0d622322091d6600748ed">PtsMapIter</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03"> 29</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> PtsMap::const_iterator <a class="code" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03">PtsMapConstIter</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ae856f07441da3988d6a31eea1e30a7d9"> 30</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> DataSet::iterator <a class="code" href="classSVF_1_1MutablePTData.html#ae856f07441da3988d6a31eea1e30a7d9">iterator</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5086e718e98482a7a0330ed05993feaa"> 33</a></span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a5086e718e98482a7a0330ed05993feaa">MutablePTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::MutBase) : BasePTData(reversePT, ty) { }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a90ca0be479d5c30ba96db2f8513be7be"> 35</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutablePTData.html#a90ca0be479d5c30ba96db2f8513be7be">~MutablePTData</a>() { }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b"> 38</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ac8da1a3357c3bc529f6ca85615486951"> 43</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#ac8da1a3357c3bc529f6ca85615486951">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>.clear();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>.clear();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62"> 49</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a36aa05b8f5c308035315d6df7036c096"> 54</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1MutablePTData.html#a36aa05b8f5c308035315d6df7036c096">getRevPts</a>(<span class="keyword">const</span> Data&amp; datum)<span class="keyword"> override</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;MutablePTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[datum];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1"> 60</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[element], dstKey);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], element);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f"> 66</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[srcKey], dstKey);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcKey));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a124e8cc8d2dbbd70682a4b7845e5d600"> 72</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a124e8cc8d2dbbd70682a4b7845e5d600">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> DataSet&amp; srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(srcDataSet,dstKey);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], srcDataSet);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3206473b309c231d7d4b991a36a35279"> 78</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3206473b309c231d7d4b991a36a35279">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a684461bb7043fd344f7999b82bbf0889">dumpPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5ca2c5a8908d003b7ec2c17f949ae6aa"> 83</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ca2c5a8908d003b7ec2c17f949ae6aa">clearPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[element], var);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var].reset(element);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3bf34d8040779b4d251bb08a58604d77"> 89</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3bf34d8040779b4d251bb08a58604d77">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; DataSet &amp;pts = <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var];</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da">clearRevPts</a>(pts, var);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; pts.clear();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3b4cd5b4f8704a5b0049923d22ce7665"> 96</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3b4cd5b4f8704a5b0049923d22ce7665">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &amp;ppt : <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>) ppt.second.checkAndRemap();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad20254ace6d9976da2099413f5790458"> 101</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1MutablePTData.html#ad20254ace6d9976da2099413f5790458">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type ppt : <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">const</span> DataSet &amp;pt = ppt.second;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; ++allPts[pt];</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a589d71ff881e53133e5c688f1c616ab3"> 115</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a589d71ff881e53133e5c688f1c616ab3">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a577a7fce1affd462afeb9fefa4bdb4a8"> 120</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a577a7fce1affd462afeb9fefa4bdb4a8">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutBase;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a684461bb7043fd344f7999b82bbf0889"> 127</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a684461bb7043fd344f7999b82bbf0889">dumpPts</a>(<span class="keyword">const</span> PtsMap &amp; ptsSet,<a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &amp; O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>())<span class="keyword"> const</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">for</span> (PtsMapConstIter nodeIt = ptsSet.begin(); nodeIt != ptsSet.end(); nodeIt++)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">const</span> Key&amp; var = nodeIt-&gt;first;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">const</span> DataSet &amp; pts = nodeIt-&gt;second;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (pts.empty())</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; O &lt;&lt; var &lt;&lt; <span class="stringliteral">&quot; ==&gt; { &quot;</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> DataSet::iterator cit = pts.begin(), ecit=pts.end(); cit!=ecit; ++cit)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; O &lt;&lt; *cit &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#abaf96c47ab029c6bc91ff23a4c061505"> 147</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#abaf96c47ab029c6bc91ff23a4c061505">unionPts</a>(DataSet&amp; dstDataSet, <span class="keyword">const</span> DataSet&amp; srcDataSet)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> dstDataSet |= srcDataSet;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a8cdeda0ef0e976102d05de3004bd8c8a"> 151</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a8cdeda0ef0e976102d05de3004bd8c8a">addPts</a>(DataSet &amp;d, <span class="keyword">const</span> Data&amp; e)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> d.test_and_set(e);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662"> 155</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(KeySet &amp;revData, <span class="keyword">const</span> Key&amp; tgr)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVFUtil::insertKey</a>(tgr, revData);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb"> 162</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(<span class="keyword">const</span> DataSet &amp;ptsData, <span class="keyword">const</span> Key&amp; tgr)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">for</span>(iterator it = ptsData.begin(), eit = ptsData.end(); it!=eit; ++it)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[*it], tgr);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7"> 170</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(KeySet &amp;revSet, <span class="keyword">const</span> Key &amp;k)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">SVFUtil::removeKey</a>(k, revSet);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da"> 177</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da">clearRevPts</a>(<span class="keyword">const</span> DataSet &amp;pts, <span class="keyword">const</span> Key &amp;k)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Data &amp;d : pts) <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[d], k);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942"> 187</a></span>&#160; PtsMap <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>;</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64"> 188</a></span>&#160; RevPtsMap <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;};</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html"> 193</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDiffPTData.html">MutableDiffPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a562f0f584cd4f3b2d18f3973fde9c068"> 196</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a562f0f584cd4f3b2d18f3973fde9c068">BasePTData</a>;</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ab50b8026258c7c9103d2315ea3091340"> 197</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#ab50b8026258c7c9103d2315ea3091340">BaseDiffPTData</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a9d829f0eab7f5ecf1a1d7eaf5f47daf6"> 198</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a9d829f0eab7f5ecf1a1d7eaf5f47daf6">PTDataTy</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a5d64ef2d4b9ab65cc7a9e33bb6fe47cf"> 200</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;::PtsMap</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a5d64ef2d4b9ab65cc7a9e33bb6fe47cf">PtsMap</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ae087d0307844312710c2d4c05535ea86"> 203</a></span>&#160; <a class="code" href="classSVF_1_1MutableDiffPTData.html#ae087d0307844312710c2d4c05535ea86">MutableDiffPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::Diff) : BaseDiffPTData(reversePT, ty), mutPTData(reversePT) { }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8d69bae0bcbeecc98b51a23d50c064b6"> 205</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8d69bae0bcbeecc98b51a23d50c064b6">~MutableDiffPTData</a>() { }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8261a24cfb34056f3720cd6fbc0a4870"> 207</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8261a24cfb34056f3720cd6fbc0a4870">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">return</span> mutPTData.getPtsMap();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8ae9624ac7fb1502eaa43173dacbe7b7"> 212</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8ae9624ac7fb1502eaa43173dacbe7b7">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; mutPTData.clear();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9"> 217</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9">getPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> mutPTData.getPts(var);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ad9bd6762fc6525afaed4a6c6da63688d"> 222</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1MutableDiffPTData.html#ad9bd6762fc6525afaed4a6c6da63688d">getRevPts</a>(<span class="keyword">const</span> Data&amp; datum)<span class="keyword"> override</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;MutableDiffPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> mutPTData.getRevPts(datum);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a717c166c5efdf2e1d71be1772fc0898d"> 228</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a717c166c5efdf2e1d71be1772fc0898d">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> mutPTData.addPts(dstKey, element);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a1596ef828786325ca06a3f5bada31757"> 233</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a1596ef828786325ca06a3f5bada31757">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> mutPTData.unionPts(dstKey, srcKey);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a746c384cf4633c3b07b4362e7b6c087a"> 238</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a746c384cf4633c3b07b4362e7b6c087a">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> DataSet&amp; srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> mutPTData.unionPts(dstKey, srcDataSet);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a65028f1634a18f6adbd4cfdb526d1d20"> 243</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a65028f1634a18f6adbd4cfdb526d1d20">clearPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; mutPTData.clearPts(var, element);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8b6e2e5e016a5ae00ae440e3f383bb16"> 248</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8b6e2e5e016a5ae00ae440e3f383bb16">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; mutPTData.clearFullPts(var);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a80142c1961d5e71c8f0dbadbb3c82184"> 253</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a80142c1961d5e71c8f0dbadbb3c82184">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; mutPTData.remapAllPts();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &amp;ppt : diffPtsMap) ppt.second.checkAndRemap();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &amp;ppt : propaPtsMap) ppt.second.checkAndRemap();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#adf10cc451517f8d3ee7aec8baa61772f"> 260</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#adf10cc451517f8d3ee7aec8baa61772f">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; mutPTData.dumpPTData();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a83dd3047c72cd1cd6ceb044cd1a924e4"> 265</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1MutableDiffPTData.html#a83dd3047c72cd1cd6ceb044cd1a924e4">getDiffPts</a>(Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> diffPtsMap[var];</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ac97bd53101f306c46ab4349a808f67c9"> 270</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#ac97bd53101f306c46ab4349a808f67c9">computeDiffPts</a>(Key &amp;var, <span class="keyword">const</span> DataSet &amp;all)<span class="keyword"> override</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; DataSet&amp; diff = diffPtsMap[var];</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; diff.clear();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; DataSet&amp; propa = getPropaPts(var);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; diff.intersectWithComplement(all, propa);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; propa = all;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> !diff.empty();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a2feb36e64e27e6f0bcc0e108da433278"> 282</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a2feb36e64e27e6f0bcc0e108da433278">updatePropaPtsMap</a>(Key &amp;src, Key &amp;dst)<span class="keyword"> override</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; DataSet&amp; srcPropa = getPropaPts(src);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; DataSet&amp; dstPropa = getPropaPts(dst);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; dstPropa &amp;= srcPropa;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a3946e3b737d95539cb57b10e53d356fc"> 289</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a3946e3b737d95539cb57b10e53d356fc">clearPropaPts</a>(Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; getPropaPts(var).clear();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#adb89579b46a478f6d0e30e790838dca9"> 294</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#adb89579b46a478f6d0e30e790838dca9">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">return</span> mutPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a1b2d520d24a8d19de00e26237e5cd098"> 301</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a1b2d520d24a8d19de00e26237e5cd098">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html">MutableDiffPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#af27d457e1905876631bcf74e434257ae"> 306</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#af27d457e1905876631bcf74e434257ae">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutDiff;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a450ed4470b1d83d44218904dd391fd75"> 314</a></span>&#160; <span class="keyword">inline</span> DataSet &amp;<a class="code" href="classSVF_1_1MutableDiffPTData.html#a450ed4470b1d83d44218904dd391fd75">getPropaPts</a>(Key &amp;var)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> propaPtsMap[var];</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a3603cb4baf60b1aa83b7807ac5591484"> 321</a></span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a3603cb4baf60b1aa83b7807ac5591484">mutPTData</a>;</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a9ee7874e987e93eb4cb9d75ed08effd5"> 323</a></span>&#160; PtsMap <a class="code" href="classSVF_1_1MutableDiffPTData.html#a9ee7874e987e93eb4cb9d75ed08effd5">diffPtsMap</a>;</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#acd3c327ee7c8fd077d51751cc7069dee"> 325</a></span>&#160; PtsMap <a class="code" href="classSVF_1_1MutableDiffPTData.html#acd3c327ee7c8fd077d51751cc7069dee">propaPtsMap</a>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;};</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;{</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a25274e3029dfa655c47b72f291b906de"> 332</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a25274e3029dfa655c47b72f291b906de">BasePTData</a>;</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad02e5645ef7a73ba4c20c557a6f11789"> 333</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad02e5645ef7a73ba4c20c557a6f11789">BaseMutPTData</a>;</div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a17a5aa4a749a5ffc75c663d057454e4a"> 334</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a17a5aa4a749a5ffc75c663d057454e4a">BaseDFPTData</a>;</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#af3074a07345844ecd97e420218b39255"> 335</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#af3074a07345844ecd97e420218b39255">PTDataTy</a>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae847b982baec8115ede5d7d28cd91d34"> 337</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae847b982baec8115ede5d7d28cd91d34">LocID</a>;</div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae7456fccd4c95227cdd7163176703205"> 338</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">BaseMutPTData::PtsMap</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae7456fccd4c95227cdd7163176703205">PtsMap</a>;</div><div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a3f234abc0def4815a03de164fa258f24"> 339</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03">BaseMutPTData::PtsMapConstIter</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a3f234abc0def4815a03de164fa258f24">PtsMapConstIter</a>;</div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a0c73427f957d310bc85955bec6654352"> 340</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;LocID, PtsMap&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a0c73427f957d310bc85955bec6654352">DFPtsMap</a>; </div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a31ad5da37a88d2b97633d590393b0e64"> 341</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> DFPtsMap::iterator <a class="code" href="classSVF_1_1MutableDFPTData.html#a31ad5da37a88d2b97633d590393b0e64">DFPtsMapIter</a>;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#adb30678f5bbdea0f196d3b0ab67d2bad"> 342</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> DFPtsMap::const_iterator <a class="code" href="classSVF_1_1MutableDFPTData.html#adb30678f5bbdea0f196d3b0ab67d2bad">DFPtsMapconstIter</a>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#aed141fb836cb22e02032ea46e3e5f51b"> 345</a></span>&#160; <a class="code" href="classSVF_1_1MutableDFPTData.html#aed141fb836cb22e02032ea46e3e5f51b">MutableDFPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = BaseDFPTData::MutDataFlow) : BaseDFPTData(reversePT, ty), mutPTData(reversePT) { }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a96331853265be5129964a9751f64bd8d"> 347</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a96331853265be5129964a9751f64bd8d">~MutableDFPTData</a>() { }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a8b1814326e71f6c6fd31d5aef0592a1d"> 349</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a8b1814326e71f6c6fd31d5aef0592a1d">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span> mutPTData.getPtsMap();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a446112803c54ca937f8b85e42a4a1381"> 354</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a446112803c54ca937f8b85e42a4a1381">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; mutPTData.clear();</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b"> 359</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b">getPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> mutPTData.getPts(var);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a2f98940bd8266ad37a975c6d30d948b4"> 364</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a2f98940bd8266ad37a975c6d30d948b4">getRevPts</a>(<span class="keyword">const</span> Data&amp; datum)<span class="keyword"> override</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;MutableDFPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> mutPTData.getRevPts(datum);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9"> 370</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9">hasDFInSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> (dfInPtsMap.find(loc) != dfInPtsMap.end());</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac6d487a4af529ecb30366be54b29260a"> 375</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac6d487a4af529ecb30366be54b29260a">hasDFOutSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> (dfOutPtsMap.find(loc) != dfOutPtsMap.end());</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#aa8b85dee2b70031a2f97e1a36c9b25de"> 380</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#aa8b85dee2b70031a2f97e1a36c9b25de">hasDFInSet</a>(LocID loc,<span class="keyword">const</span> Key&amp; var)<span class="keyword"> const override</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; DFPtsMapconstIter it = dfInPtsMap.find(loc);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> ( it == dfInPtsMap.end())</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = it-&gt;second;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> (ptsMap.find(var) != ptsMap.end());</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#af6d234ae2b0aa91b510f3a2fba877340"> 389</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#af6d234ae2b0aa91b510f3a2fba877340">hasDFOutSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> const override</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; DFPtsMapconstIter it = dfOutPtsMap.find(loc);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> ( it == dfOutPtsMap.end())</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = it-&gt;second;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">return</span> (ptsMap.find(var) != ptsMap.end());</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a44aad57ac0de594e404a6c4ceff0bd53"> 398</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a44aad57ac0de594e404a6c4ceff0bd53">getDFInPtsSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; PtsMap&amp; inSet = dfInPtsMap[loc];</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> inSet[var];</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab6b0496d0c34642ddd2707142334f4a2"> 404</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#ab6b0496d0c34642ddd2707142334f4a2">getDFOutPtsSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; PtsMap&amp; outSet = dfOutPtsMap[loc];</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">return</span> outSet[var];</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a7559810e1ad40588f5fd82123ea1f150"> 412</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a7559810e1ad40588f5fd82123ea1f150">getDFInPtsMap</a>(LocID loc)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> dfInPtsMap[loc];</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a034c1bf20ab8a73a97863073e08dcd4e"> 416</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a034c1bf20ab8a73a97863073e08dcd4e">getDFOutPtsMap</a>(LocID loc)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> dfOutPtsMap[loc];</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae999df6f94a097f1fcb36979327790de"> 420</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DFPtsMap&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#ae999df6f94a097f1fcb36979327790de">getDFIn</a>()</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">return</span> dfInPtsMap;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a6d02392602cf7956ff41e345518d683c"> 424</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DFPtsMap&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a6d02392602cf7956ff41e345518d683c">getDFOut</a>()</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> dfOutPtsMap;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac3ebc5afa531118b2b4446d23e3b8c7a"> 430</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac3ebc5afa531118b2b4446d23e3b8c7a">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFInPtsSet(dstLoc,dstVar), getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a85c0d93ee01d2c93c255e5a369248d1b"> 435</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a85c0d93ee01d2c93c255e5a369248d1b">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFInPtsSet(dstLoc,dstVar), getDFOutPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab3c517be91b4711ace581df075d4647a"> 440</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab3c517be91b4711ace581df075d4647a">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFOutPtsSet(dstLoc,dstVar), getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a7c7eff549ea0d153e7a72ed5bf79c30e"> 445</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a7c7eff549ea0d153e7a72ed5bf79c30e">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">return</span> this-&gt;updateDFInFromOut(srcLoc,srcVar,dstLoc,dstVar);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a23fca889a29399a91dfc916f5fab46ee"> 450</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a23fca889a29399a91dfc916f5fab46ee">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">return</span> this-&gt;updateDFInFromIn(srcLoc,srcVar,dstLoc,dstVar);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a51365299a34e3386798e78a076d6e1f5"> 455</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a51365299a34e3386798e78a076d6e1f5">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key&amp; singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFInSet(loc))</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keyword">const</span> PtsMap &amp; <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = getDFInPtsMap(loc);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::const_iterator ptsIt = ptsMap.begin(), ptsEit = ptsMap.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keyword">const</span> Key var = ptsIt-&gt;first;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">if</span> (strongUpdates &amp;&amp; var == singleton)</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var))</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a21b29c2d3e429017d910025e4ec73fc6"> 475</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a21b29c2d3e429017d910025e4ec73fc6">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(dstVar, this-&gt;getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a0ce585790bba942291bb7c7ffcaa3914"> 480</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a0ce585790bba942291bb7c7ffcaa3914">updateATVPts</a>(<span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">return</span> (this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFOutPtsSet(dstLoc, dstVar), this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcVar)));</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a43a45997f6147245fe8a552b42f3f632"> 485</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a43a45997f6147245fe8a552b42f3f632">clearAllDFOutUpdatedVar</a>(LocID)<span class="keyword"> override</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab75373d16f57dbbf1e9472e9a27d6b4b"> 492</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab75373d16f57dbbf1e9472e9a27d6b4b">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(mutPTData.ptsMap[dstKey], srcKey);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad64eed26e054eb4e91ec1139867cd196"> 496</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad64eed26e054eb4e91ec1139867cd196">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(mutPTData.ptsMap[dstKey], <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcKey));</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab675653138960b16f23c801298e80f48"> 500</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab675653138960b16f23c801298e80f48">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> DataSet&amp; srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(mutPTData.ptsMap[dstKey], srcDataSet);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div><div class="line"><a name="l00504"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae0495fcba25d4baffda9f85254591ae1"> 504</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae0495fcba25d4baffda9f85254591ae1">clearPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; mutPTData.clearPts(var, element);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab345e148997b9e1c6e4c2c76267880b7"> 508</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab345e148997b9e1c6e4c2c76267880b7">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; mutPTData.clearFullPts(var);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div><div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad34e442581dfe57ce7f1add25c8414b2"> 512</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad34e442581dfe57ce7f1add25c8414b2">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; mutPTData.remapAllPts();</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type &amp;lopt : dfInPtsMap)</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &amp;opt : lopt.second) opt.second.checkAndRemap();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type &amp;lopt : dfOutPtsMap)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &amp;opt : lopt.second) opt.second.checkAndRemap();</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; }</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac9120fbb056e23cdf84646a37d809a8d"> 527</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac9120fbb056e23cdf84646a37d809a8d">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts = mutPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type lptsmap : dfInPtsMap)</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type vpt : lptsmap.second)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; ++allPts[vpt.second];</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type lptm : dfOutPtsMap)</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type vpt : lptm.second)</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; ++allPts[vpt.second];</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a5baa6fffedfd0ac356590f9a0b222ee0"> 551</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a5baa6fffedfd0ac356590f9a0b222ee0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#acb338bbe5773001a15b81e596a764222"> 555</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#acb338bbe5773001a15b81e596a764222">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BaseDFPTData::MutDataFlow</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BaseDFPTData::MutIncDataFlow;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a8b30798ad9485a88238cc340e5da3db7"> 565</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a8b30798ad9485a88238cc340e5da3db7">unionPts</a>(DataSet&amp; dstDataSet, <span class="keyword">const</span> DataSet&amp; srcDataSet)</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> dstDataSet |= srcDataSet;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab7d1a3464e561029573f6f3c13c9bff4"> 569</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab7d1a3464e561029573f6f3c13c9bff4">addPts</a>(DataSet &amp;d, <span class="keyword">const</span> Data&amp; e)</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">return</span> d.test_and_set(e);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a95f4644a82f84674164651db66b084b8"> 578</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a95f4644a82f84674164651db66b084b8">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; mutPTData.dumpPTData();</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; std::error_code ErrInfo;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="namespaceSVF.html#acde6a1d496f1b655088ccbe023820277">ToolOutputFile</a> F(<span class="stringliteral">&quot;svfg_pts.data&quot;</span>, ErrInfo, llvm::sys::fs::F_None);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">if</span> (!ErrInfo)</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> &amp; osm = F.os();</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> locs;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">for</span>(DFPtsMapconstIter it = dfInPtsMap.begin(), eit = dfInPtsMap.end(); it!=eit; ++it)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; locs.set(it-&gt;first);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">for</span>(DFPtsMapconstIter it = dfOutPtsMap.begin(), eit = dfOutPtsMap.end(); it!=eit; ++it)</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; locs.set(it-&gt;first);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">for</span> (NodeBS::iterator it = locs.begin(), eit = locs.end(); it != eit; it++)</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; {</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; LocID loc = *it;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFInSet(loc))</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; osm &lt;&lt; <span class="stringliteral">&quot;Loc:&quot;</span> &lt;&lt; loc &lt;&lt; <span class="stringliteral">&quot; IN:{&quot;</span>;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a684461bb7043fd344f7999b82bbf0889">dumpPts</a>(this-&gt;getDFInPtsMap(loc), osm);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; osm &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; }</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFOutSet(loc))</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; osm &lt;&lt; <span class="stringliteral">&quot;Loc:&quot;</span> &lt;&lt; loc &lt;&lt; <span class="stringliteral">&quot; OUT:{&quot;</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a684461bb7043fd344f7999b82bbf0889">dumpPts</a>(this-&gt;getDFOutPtsMap(loc), osm);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; osm &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; F.os().close();</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">if</span> (!F.os().has_error())</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; F.keep();</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for writing!\n&quot;</span>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; F.os().clear_error();</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a4678c8962e8af934a994dacace198107"> 624</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a4678c8962e8af934a994dacace198107">dumpPts</a>(<span class="keyword">const</span> PtsMap &amp; ptsSet,<a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &amp; O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>())<span class="keyword"> const</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">for</span> (PtsMapConstIter nodeIt = ptsSet.begin(); nodeIt != ptsSet.end(); nodeIt++)</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keyword">const</span> Key&amp; var = nodeIt-&gt;first;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keyword">const</span> DataSet &amp; pts = nodeIt-&gt;second;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (pts.empty())</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;&lt;&quot;</span> &lt;&lt; var &lt;&lt; <span class="stringliteral">&quot;,{&quot;</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a220f4c09e4c09c58d018719d44ec1dc3">SVFUtil::dumpSet</a>(pts,O);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;}&gt; &quot;</span>;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; }</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00641"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#abb59ef7367e353e65b82b54dac509f36"> 641</a></span>&#160; DFPtsMap <a class="code" href="classSVF_1_1MutableDFPTData.html#abb59ef7367e353e65b82b54dac509f36">dfInPtsMap</a>;</div><div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad3c53ef1c8e221299f3afe078946fbe0"> 643</a></span>&#160; DFPtsMap <a class="code" href="classSVF_1_1MutableDFPTData.html#ad3c53ef1c8e221299f3afe078946fbe0">dfOutPtsMap</a>;</div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#acf40f716470f73095d44a1b9e3bb939e"> 646</a></span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#acf40f716470f73095d44a1b9e3bb939e">mutPTData</a>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;};</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html"> 651</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutableIncDFPTData.html">MutableIncDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;{</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00654"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a14651359d0efe886c1313fd843e4d1db"> 654</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a14651359d0efe886c1313fd843e4d1db">BasePTData</a>;</div><div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a92f00e91a338113383bcf7bc8ce0026a"> 655</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a92f00e91a338113383bcf7bc8ce0026a">BaseMutPTData</a>;</div><div class="line"><a name="l00656"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a4b944ec759d0e78a7a2238db587752a9"> 656</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a4b944ec759d0e78a7a2238db587752a9">BaseDFPTData</a>;</div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a58f9b6357a5cf0243cf3b4ece30e8cf6"> 657</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a58f9b6357a5cf0243cf3b4ece30e8cf6">BaseMutDFPTData</a>;</div><div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a5f1715813082c1f02d6888b9ec32a75e"> 658</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a5f1715813082c1f02d6888b9ec32a75e">PTDataTy</a>;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a74d9f271ea0fa69e56ddbe16f10f3241"> 660</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a74d9f271ea0fa69e56ddbe16f10f3241">LocID</a>;</div><div class="line"><a name="l00661"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a67c24cebffdcea9c8059f6769c7f9798"> 661</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;LocID, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a67c24cebffdcea9c8059f6769c7f9798">UpdatedVarMap</a>; </div><div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a8b30326d3fa3f4054e67268f512aec9e"> 662</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> UpdatedVarMap::iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a8b30326d3fa3f4054e67268f512aec9e">UpdatedVarMapIter</a>;</div><div class="line"><a name="l00663"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#af815dd2108c16e1dfddbcd5bdbcceeb6"> 663</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> UpdatedVarMap::const_iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#af815dd2108c16e1dfddbcd5bdbcceeb6">UpdatedVarconstIter</a>;</div><div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a1fc4dff28f9044234fdfeede6f4b1cb0"> 664</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> DataSet::iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a1fc4dff28f9044234fdfeede6f4b1cb0">DataIter</a>;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00667"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#af5f7db6c55037a0e117a36982736039e"> 667</a></span>&#160; UpdatedVarMap <a class="code" href="classSVF_1_1MutableIncDFPTData.html#af5f7db6c55037a0e117a36982736039e">outUpdatedVarMap</a>;</div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ab5e9ebf9e71652b5fa63d59c97d016e4"> 668</a></span>&#160; UpdatedVarMap <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ab5e9ebf9e71652b5fa63d59c97d016e4">inUpdatedVarMap</a>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00672"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a9b06421a9043dc61485acf51cfc26a91"> 672</a></span>&#160; <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a9b06421a9043dc61485acf51cfc26a91">MutableIncDFPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c">BasePTData::MutIncDataFlow</a>) : BaseMutDFPTData(reversePT, ty) { }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;</div><div class="line"><a name="l00674"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#adf4e5c57d7b7ae7da37bb1a4eabfe8a6"> 674</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#adf4e5c57d7b7ae7da37bb1a4eabfe8a6">~MutableIncDFPTData</a>() { }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;</div><div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a775ef6458314a1febef3f7372f6a2bbc"> 676</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a775ef6458314a1febef3f7372f6a2bbc">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc, srcVar) &amp;&amp;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFInPtsSet(dstLoc,dstVar), this-&gt;getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad199b4b84f7aab48ff1510b118e2982f"> 687</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad199b4b84f7aab48ff1510b118e2982f">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">if</span>(varHasNewDFOutPts(srcLoc, srcVar) &amp;&amp;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFInPtsSet(dstLoc,dstVar), this-&gt;getDFOutPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;</div><div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa326ac77577a8a4a0ce3e29cc03a3989"> 698</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa326ac77577a8a4a0ce3e29cc03a3989">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc,srcVar))</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; removeVarFromDFInUpdatedSet(srcLoc,srcVar);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFOutPtsSet(dstLoc,dstVar), this-&gt;getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; {</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; setVarDFOutSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a2dd9dad547c389d5cd488b165dd145eb"> 712</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a2dd9dad547c389d5cd488b165dd145eb">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">if</span>(this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFInPtsSet(dstLoc,dstVar), this-&gt;getDFOutPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div><div class="line"><a name="l00722"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad68b23ed56b2c18bf75c23a658523404"> 722</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad68b23ed56b2c18bf75c23a658523404">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">if</span>(this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFInPtsSet(dstLoc,dstVar), this-&gt;getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; }</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a3f397aaf4f3d6d04ec005c2577652e04"> 732</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a3f397aaf4f3d6d04ec005c2577652e04">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key&amp; singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFInSet(loc))</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; {</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; DataSet pts = getDFInUpdatedVar(loc);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">for</span> (DataIter ptsIt = pts.begin(), ptsEit = pts.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; {</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keyword">const</span> Key var = *ptsIt;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (strongUpdates &amp;&amp; var == singleton)</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var))</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; }</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;</div><div class="line"><a name="l00752"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a7778be60515fa3ff247b6d2cec138cfc"> 752</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a7778be60515fa3ff247b6d2cec138cfc">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc,srcVar))</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; removeVarFromDFInUpdatedSet(srcLoc,srcVar);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">return</span> this-&gt;mutPTData.unionPts(dstVar, this-&gt;getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; }</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa8fdf0f82d3d94af34d5bc1386ed21f9"> 762</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa8fdf0f82d3d94af34d5bc1386ed21f9">updateATVPts</a>(<span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFOutPtsSet(dstLoc, dstVar), this-&gt;mutPTData.getPts(srcVar)))</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; setVarDFOutSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;</div><div class="line"><a name="l00772"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ac9ff175dbdf75232a104e2aa34f87d43"> 772</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ac9ff175dbdf75232a104e2aa34f87d43">clearAllDFOutUpdatedVar</a>(LocID loc)<span class="keyword"> override</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFOutSet(loc))</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; DataSet pts = getDFOutUpdatedVar(loc);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">for</span> (DataIter ptsIt = pts.begin(), ptsEit = pts.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keyword">const</span> Key var = *ptsIt;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; removeVarFromDFOutUpdatedSet(loc, var);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; }</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; }</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a89f65d37096c82fcdddb1c324ec206d2"> 787</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a89f65d37096c82fcdddb1c324ec206d2">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html">MutableIncDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;</div><div class="line"><a name="l00792"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa4c262f0d62e902912d4cd7999731d3d"> 792</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa4c262f0d62e902912d4cd7999731d3d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; {</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c">BasePTData::MutIncDataFlow</a>;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setVarDFInSetUpdated(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; inUpdatedVarMap[loc].set(var);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; }</div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a913c1a2c48526160eeecd028bd22cfc4"> 806</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a913c1a2c48526160eeecd028bd22cfc4">removeVarFromDFInUpdatedSet</a>(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; {</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; UpdatedVarMapIter it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">if</span> (it != inUpdatedVarMap.end())</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; it-&gt;second.reset(var);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div><div class="line"><a name="l00813"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ae7ed810cf4de695072ba5c4d0c882353"> 813</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ae7ed810cf4de695072ba5c4d0c882353">varHasNewDFInPts</a>(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; UpdatedVarMapIter it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">if</span> (it != inUpdatedVarMap.end())</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">return</span> it-&gt;second.test(var);</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; }</div><div class="line"><a name="l00821"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ae4d0989cb98814f943bd4dfd09a37017"> 821</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ae4d0989cb98814f943bd4dfd09a37017">getDFInUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">return</span> inUpdatedVarMap[loc];</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setVarDFOutSetUpdated(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; outUpdatedVarMap[loc].set(var);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; }</div><div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ac055ad77582b36083ca1950c39207f5e"> 835</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ac055ad77582b36083ca1950c39207f5e">removeVarFromDFOutUpdatedSet</a>(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; {</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; UpdatedVarMapIter it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">if</span> (it != outUpdatedVarMap.end())</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; it-&gt;second.reset(var);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; }</div><div class="line"><a name="l00842"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a55b19f617d11dfc6632b690694f264ab"> 842</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a55b19f617d11dfc6632b690694f264ab">varHasNewDFOutPts</a>(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; {</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; UpdatedVarMapIter it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">if</span> (it != outUpdatedVarMap.end())</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">return</span> it-&gt;second.test(var);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div><div class="line"><a name="l00850"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad1ae7faf04ba10ac4ac6a6f1cc498547"> 850</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad1ae7faf04ba10ac4ac6a6f1cc498547">getDFOutUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; {</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">return</span> outUpdatedVarMap[loc];</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;};</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet, <span class="keyword">typename</span> VersionedKey, <span class="keyword">typename</span> VersionedKeySet&gt;</div><div class="line"><a name="l00861"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html"> 861</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutableVersionedPTData.html">MutableVersionedPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData</a>&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;{</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00864"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a31fd15a8147e3146b15b4d24fe34cf46"> 864</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a31fd15a8147e3146b15b4d24fe34cf46">BasePTData</a>;</div><div class="line"><a name="l00865"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa80044e3b4c3ed58117573dfa54d803b"> 865</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa80044e3b4c3ed58117573dfa54d803b">BaseVersionedPTData</a>;</div><div class="line"><a name="l00866"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#af7bf99aeb752c4216a60d1fa5187b49e"> 866</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#af7bf99aeb752c4216a60d1fa5187b49e">PTDataTy</a>;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;</div><div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ad2f9950ad71a39c400a4835e6e84fcd9"> 868</a></span>&#160; <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ad2f9950ad71a39c400a4835e6e84fcd9">MutableVersionedPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::MutVersioned)</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; : BaseVersionedPTData(reversePT, ty), tlPTData(reversePT), atPTData(reversePT) { }</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;</div><div class="line"><a name="l00871"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#adf809b61632067b0a987d2975e6377dc"> 871</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#adf809b61632067b0a987d2975e6377dc">~MutableVersionedPTData</a>() { }</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;</div><div class="line"><a name="l00873"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ab476e1b59aead37b440fd5735df3814b"> 873</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ab476e1b59aead37b440fd5735df3814b">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; tlPTData.clear();</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; atPTData.clear();</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;</div><div class="line"><a name="l00879"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aaf519166d2e0ca3c81088b52a1cf3066"> 879</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aaf519166d2e0ca3c81088b52a1cf3066">getPts</a>(<span class="keyword">const</span> Key&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">return</span> tlPTData.getPts(vk);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div><div class="line"><a name="l00883"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#afcc34f6cedca6a8f151b1a7251832818"> 883</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableVersionedPTData.html#afcc34f6cedca6a8f151b1a7251832818">getPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">return</span> atPTData.getPts(vk);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; }</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;</div><div class="line"><a name="l00888"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a7de508c0d83895aee785524d28eac8b9"> 888</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a7de508c0d83895aee785524d28eac8b9">getRevPts</a>(<span class="keyword">const</span> Data&amp; datum)<span class="keyword"> override</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;MutableVersionedPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">return</span> tlPTData.getRevPts(datum);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; }</div><div class="line"><a name="l00893"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#afaef5c61bee74cbd649c787cfdef2a03"> 893</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> VersionedKeySet&amp; <a class="code" href="classSVF_1_1MutableVersionedPTData.html#afaef5c61bee74cbd649c787cfdef2a03">getVersionedKeyRevPts</a>(<span class="keyword">const</span> Data&amp; datum)<span class="keyword"> override</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;MutableVersionedPTData::getVersionedKeyRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">return</span> atPTData.getRevPts(datum);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;</div><div class="line"><a name="l00899"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a00a88cc3e802921c6a0951801ec712a6"> 899</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a00a88cc3e802921c6a0951801ec712a6">addPts</a>(<span class="keyword">const</span> Key&amp; k, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">return</span> tlPTData.addPts(k, element);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; }</div><div class="line"><a name="l00903"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#af39232f64ff0ede20161c7f265da6cf5"> 903</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#af39232f64ff0ede20161c7f265da6cf5">addPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">return</span> atPTData.addPts(vk, element);</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; }</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;</div><div class="line"><a name="l00908"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ae79628fc101567ba84215b624dd00c01"> 908</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ae79628fc101567ba84215b624dd00c01">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; }</div><div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a56e752a83620f482a4b1e2f8d395dd75"> 912</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a56e752a83620f482a4b1e2f8d395dd75">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; }</div><div class="line"><a name="l00916"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a5647b7fad5c14f7ec57d3de3480758eb"> 916</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a5647b7fad5c14f7ec57d3de3480758eb">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">return</span> atPTData.unionPts(dstVar, tlPTData.getPts(srcVar));</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; }</div><div class="line"><a name="l00920"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a9967c530d3955a0a726b7a00653ef0ba"> 920</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a9967c530d3955a0a726b7a00653ef0ba">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, atPTData.getPts(srcVar));</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; }</div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa9ab46b7afc7f47df20e74bda300dc42"> 924</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa9ab46b7afc7f47df20e74bda300dc42">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> DataSet&amp; srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div><div class="line"><a name="l00928"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa9d24a4defb025c075e4ec5bc7f3b618"> 928</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa9d24a4defb025c075e4ec5bc7f3b618">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> DataSet&amp; srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; }</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;</div><div class="line"><a name="l00933"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ab20b71c9e2f31439c95071c375bf89e0"> 933</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ab20b71c9e2f31439c95071c375bf89e0">clearPts</a>(<span class="keyword">const</span> Key&amp; k, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; tlPTData.clearPts(k, element);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; }</div><div class="line"><a name="l00937"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a21e823484199946541b8b79d736b2601"> 937</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a21e823484199946541b8b79d736b2601">clearPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; atPTData.clearPts(vk, element);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; }</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;</div><div class="line"><a name="l00942"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a9f985ff2daee53fb661e4b2bcfd17f05"> 942</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a9f985ff2daee53fb661e4b2bcfd17f05">clearFullPts</a>(<span class="keyword">const</span> Key&amp; k)<span class="keyword"> override</span></div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; tlPTData.clearFullPts(k);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; }</div><div class="line"><a name="l00946"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aaf3df7501f84233f6a687ef9f2f0ae90"> 946</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aaf3df7501f84233f6a687ef9f2f0ae90">clearFullPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; atPTData.clearFullPts(vk);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; }</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;</div><div class="line"><a name="l00951"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a72cbf33b77f5a19221ad265691065695"> 951</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a72cbf33b77f5a19221ad265691065695">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; tlPTData.remapAllPts();</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; atPTData.remapAllPts();</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; }</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;</div><div class="line"><a name="l00957"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a6cac338e74f869d0e708c7e2b356b5d7"> 957</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a6cac338e74f869d0e708c7e2b356b5d7">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts = tlPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; SVFUtil::mergePtsOccMaps&lt;DataSet&gt;(allPts, atPTData.getAllPts(liveOnly));</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;</div><div class="line"><a name="l00964"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a796c1676dd5180a27dbebae5a99b57b7"> 964</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a796c1676dd5180a27dbebae5a99b57b7">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;== Top-level points-to information\n&quot;</span>;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; tlPTData.dumpPTData();</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;== Address-taken points-to information\n&quot;</span>;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; atPTData.dumpPTData();</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;</div><div class="line"><a name="l00974"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a6be54447671288a666af5d48972e2ccf"> 974</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a6be54447671288a666af5d48972e2ccf">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html">MutableVersionedPTData&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</a> *)</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; {</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; }</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;</div><div class="line"><a name="l00979"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a646111552a7112b8e48c00e766ce8d9b"> 979</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a646111552a7112b8e48c00e766ce8d9b">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutVersioned;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00987"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a01974968b7cf60a4231cc83c93b26d7f"> 987</a></span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a01974968b7cf60a4231cc83c93b26d7f">tlPTData</a>;</div><div class="line"><a name="l00989"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a3e5337d4189e98f11305491a9ef3c439"> 989</a></span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;VersionedKey, VersionedKeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a3e5337d4189e98f11305491a9ef3c439">atPTData</a>;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;};</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;<span class="preprocessor">#endif // MUTABLE_POINTSTO_H_</span></div><div class="ttc" id="classSVF_1_1MutableDFPTData_html_a9a9641305c9d670e09f02b71a3e384a9"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9">SVF::MutableDFPTData::hasDFInSet</a></div><div class="ttdeci">virtual bool hasDFInSet(LocID loc) const override</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00370">MutablePointsToDS.h:370</a></div></div>
69
+ <a href="MutablePointsToDS_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#ifndef MUTABLE_POINTSTO_H_</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#define MUTABLE_POINTSTO_H_</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="AbstractPointsToDS_8h.html">MemoryModel/AbstractPointsToDS.h</a>&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFBasicTypes_8h.html">Util/SVFBasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;{</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html"> 15</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html"> 19</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad92cfe345043b1bc8d6c7a03df43310f"> 21</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ab88ea00589ec9353bccf3629a1c4e5d3"> 23</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutablePTData.html#ab88ea00589ec9353bccf3629a1c4e5d3">BasePTData</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a9e69cb846a8d2da102981d1f48cb16dd"> 24</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1MutablePTData.html#a9e69cb846a8d2da102981d1f48cb16dd">PTDataTy</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e"> 26</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Key, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">PtsMap</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a6d491581d17876625d0265cd26acd8e1"> 27</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Data, KeySet&gt;</a> <a class="code" href="classSVF_1_1MutablePTData.html#a6d491581d17876625d0265cd26acd8e1">RevPtsMap</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad08dbfa28cd0d622322091d6600748ed"> 28</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> PtsMap::iterator <a class="code" href="classSVF_1_1MutablePTData.html#ad08dbfa28cd0d622322091d6600748ed">PtsMapIter</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03"> 29</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> PtsMap::const_iterator <a class="code" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03">PtsMapConstIter</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ae856f07441da3988d6a31eea1e30a7d9"> 30</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> DataSet::iterator <a class="code" href="classSVF_1_1MutablePTData.html#ae856f07441da3988d6a31eea1e30a7d9">iterator</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5086e718e98482a7a0330ed05993feaa"> 33</a></span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a5086e718e98482a7a0330ed05993feaa">MutablePTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::MutBase) : BasePTData(reversePT, ty) { }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a90ca0be479d5c30ba96db2f8513be7be"> 35</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutablePTData.html#a90ca0be479d5c30ba96db2f8513be7be">~MutablePTData</a>() { }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b"> 38</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ac8da1a3357c3bc529f6ca85615486951"> 43</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#ac8da1a3357c3bc529f6ca85615486951">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>.clear();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>.clear();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62"> 49</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a36aa05b8f5c308035315d6df7036c096"> 54</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1MutablePTData.html#a36aa05b8f5c308035315d6df7036c096">getRevPts</a>(<span class="keyword">const</span> Data&amp; datum)<span class="keyword"> override</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;MutablePTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[datum];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1"> 60</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[element], dstKey);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], element);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f"> 66</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[srcKey], dstKey);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcKey));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a124e8cc8d2dbbd70682a4b7845e5d600"> 72</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a124e8cc8d2dbbd70682a4b7845e5d600">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> DataSet&amp; srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(srcDataSet,dstKey);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], srcDataSet);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3206473b309c231d7d4b991a36a35279"> 78</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3206473b309c231d7d4b991a36a35279">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a684461bb7043fd344f7999b82bbf0889">dumpPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5ca2c5a8908d003b7ec2c17f949ae6aa"> 83</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ca2c5a8908d003b7ec2c17f949ae6aa">clearPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[element], var);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var].reset(element);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3bf34d8040779b4d251bb08a58604d77"> 89</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3bf34d8040779b4d251bb08a58604d77">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; DataSet &amp;pts = <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var];</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da">clearRevPts</a>(pts, var);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; pts.clear();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3b4cd5b4f8704a5b0049923d22ce7665"> 96</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3b4cd5b4f8704a5b0049923d22ce7665">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &amp;ppt : <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>) ppt.second.checkAndRemap();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad20254ace6d9976da2099413f5790458"> 101</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1MutablePTData.html#ad20254ace6d9976da2099413f5790458">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type ppt : <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">const</span> DataSet &amp;pt = ppt.second;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; ++allPts[pt];</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a589d71ff881e53133e5c688f1c616ab3"> 115</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a589d71ff881e53133e5c688f1c616ab3">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a577a7fce1affd462afeb9fefa4bdb4a8"> 120</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a577a7fce1affd462afeb9fefa4bdb4a8">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutBase;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a684461bb7043fd344f7999b82bbf0889"> 127</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a684461bb7043fd344f7999b82bbf0889">dumpPts</a>(<span class="keyword">const</span> PtsMap &amp; ptsSet,<a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &amp; O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>())<span class="keyword"> const</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">for</span> (PtsMapConstIter nodeIt = ptsSet.begin(); nodeIt != ptsSet.end(); nodeIt++)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">const</span> Key&amp; var = nodeIt-&gt;first;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">const</span> DataSet &amp; pts = nodeIt-&gt;second;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (pts.empty())</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; O &lt;&lt; var &lt;&lt; <span class="stringliteral">&quot; ==&gt; { &quot;</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">typename</span> DataSet::iterator cit = pts.begin(), ecit=pts.end(); cit!=ecit; ++cit)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; O &lt;&lt; *cit &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#abaf96c47ab029c6bc91ff23a4c061505"> 147</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#abaf96c47ab029c6bc91ff23a4c061505">unionPts</a>(DataSet&amp; dstDataSet, <span class="keyword">const</span> DataSet&amp; srcDataSet)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> dstDataSet |= srcDataSet;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a8cdeda0ef0e976102d05de3004bd8c8a"> 151</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a8cdeda0ef0e976102d05de3004bd8c8a">addPts</a>(DataSet &amp;d, <span class="keyword">const</span> Data&amp; e)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> d.test_and_set(e);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662"> 155</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(KeySet &amp;revData, <span class="keyword">const</span> Key&amp; tgr)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVFUtil::insertKey</a>(tgr, revData);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb"> 162</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(<span class="keyword">const</span> DataSet &amp;ptsData, <span class="keyword">const</span> Key&amp; tgr)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">for</span>(iterator it = ptsData.begin(), eit = ptsData.end(); it!=eit; ++it)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[*it], tgr);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7"> 170</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(KeySet &amp;revSet, <span class="keyword">const</span> Key &amp;k)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">SVFUtil::removeKey</a>(k, revSet);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da"> 177</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da">clearRevPts</a>(<span class="keyword">const</span> DataSet &amp;pts, <span class="keyword">const</span> Key &amp;k)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Data &amp;d : pts) <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[d], k);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942"> 187</a></span>&#160; PtsMap <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>;</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64"> 188</a></span>&#160; RevPtsMap <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;};</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html"> 193</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDiffPTData.html">MutableDiffPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a562f0f584cd4f3b2d18f3973fde9c068"> 196</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a562f0f584cd4f3b2d18f3973fde9c068">BasePTData</a>;</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ab50b8026258c7c9103d2315ea3091340"> 197</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#ab50b8026258c7c9103d2315ea3091340">BaseDiffPTData</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a9d829f0eab7f5ecf1a1d7eaf5f47daf6"> 198</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a9d829f0eab7f5ecf1a1d7eaf5f47daf6">PTDataTy</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a5d64ef2d4b9ab65cc7a9e33bb6fe47cf"> 200</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;::PtsMap</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a5d64ef2d4b9ab65cc7a9e33bb6fe47cf">PtsMap</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ae087d0307844312710c2d4c05535ea86"> 203</a></span>&#160; <a class="code" href="classSVF_1_1MutableDiffPTData.html#ae087d0307844312710c2d4c05535ea86">MutableDiffPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::Diff) : BaseDiffPTData(reversePT, ty), mutPTData(reversePT) { }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8d69bae0bcbeecc98b51a23d50c064b6"> 205</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8d69bae0bcbeecc98b51a23d50c064b6">~MutableDiffPTData</a>() { }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8261a24cfb34056f3720cd6fbc0a4870"> 207</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8261a24cfb34056f3720cd6fbc0a4870">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">return</span> mutPTData.getPtsMap();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8ae9624ac7fb1502eaa43173dacbe7b7"> 212</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8ae9624ac7fb1502eaa43173dacbe7b7">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; mutPTData.clear();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9"> 217</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9">getPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> mutPTData.getPts(var);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ad9bd6762fc6525afaed4a6c6da63688d"> 222</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1MutableDiffPTData.html#ad9bd6762fc6525afaed4a6c6da63688d">getRevPts</a>(<span class="keyword">const</span> Data&amp; datum)<span class="keyword"> override</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;MutableDiffPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> mutPTData.getRevPts(datum);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a717c166c5efdf2e1d71be1772fc0898d"> 228</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a717c166c5efdf2e1d71be1772fc0898d">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> mutPTData.addPts(dstKey, element);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a1596ef828786325ca06a3f5bada31757"> 233</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a1596ef828786325ca06a3f5bada31757">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> mutPTData.unionPts(dstKey, srcKey);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a746c384cf4633c3b07b4362e7b6c087a"> 238</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a746c384cf4633c3b07b4362e7b6c087a">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> DataSet&amp; srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> mutPTData.unionPts(dstKey, srcDataSet);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a65028f1634a18f6adbd4cfdb526d1d20"> 243</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a65028f1634a18f6adbd4cfdb526d1d20">clearPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; mutPTData.clearPts(var, element);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8b6e2e5e016a5ae00ae440e3f383bb16"> 248</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8b6e2e5e016a5ae00ae440e3f383bb16">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; mutPTData.clearFullPts(var);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a80142c1961d5e71c8f0dbadbb3c82184"> 253</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a80142c1961d5e71c8f0dbadbb3c82184">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; mutPTData.remapAllPts();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &amp;ppt : diffPtsMap) ppt.second.checkAndRemap();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &amp;ppt : propaPtsMap) ppt.second.checkAndRemap();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#adf10cc451517f8d3ee7aec8baa61772f"> 260</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#adf10cc451517f8d3ee7aec8baa61772f">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; mutPTData.dumpPTData();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a83dd3047c72cd1cd6ceb044cd1a924e4"> 265</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1MutableDiffPTData.html#a83dd3047c72cd1cd6ceb044cd1a924e4">getDiffPts</a>(Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> diffPtsMap[var];</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ac97bd53101f306c46ab4349a808f67c9"> 270</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#ac97bd53101f306c46ab4349a808f67c9">computeDiffPts</a>(Key &amp;var, <span class="keyword">const</span> DataSet &amp;all)<span class="keyword"> override</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; DataSet&amp; diff = diffPtsMap[var];</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; diff.clear();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; DataSet&amp; propa = getPropaPts(var);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; diff.intersectWithComplement(all, propa);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; propa = all;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> !diff.empty();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a2feb36e64e27e6f0bcc0e108da433278"> 282</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a2feb36e64e27e6f0bcc0e108da433278">updatePropaPtsMap</a>(Key &amp;src, Key &amp;dst)<span class="keyword"> override</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; DataSet&amp; srcPropa = getPropaPts(src);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; DataSet&amp; dstPropa = getPropaPts(dst);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; dstPropa &amp;= srcPropa;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a3946e3b737d95539cb57b10e53d356fc"> 289</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a3946e3b737d95539cb57b10e53d356fc">clearPropaPts</a>(Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; getPropaPts(var).clear();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#adb89579b46a478f6d0e30e790838dca9"> 294</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#adb89579b46a478f6d0e30e790838dca9">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">return</span> mutPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a1b2d520d24a8d19de00e26237e5cd098"> 301</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a1b2d520d24a8d19de00e26237e5cd098">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html">MutableDiffPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#af27d457e1905876631bcf74e434257ae"> 306</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#af27d457e1905876631bcf74e434257ae">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutDiff;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a450ed4470b1d83d44218904dd391fd75"> 314</a></span>&#160; <span class="keyword">inline</span> DataSet &amp;<a class="code" href="classSVF_1_1MutableDiffPTData.html#a450ed4470b1d83d44218904dd391fd75">getPropaPts</a>(Key &amp;var)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> propaPtsMap[var];</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a3603cb4baf60b1aa83b7807ac5591484"> 321</a></span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a3603cb4baf60b1aa83b7807ac5591484">mutPTData</a>;</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a9ee7874e987e93eb4cb9d75ed08effd5"> 323</a></span>&#160; PtsMap <a class="code" href="classSVF_1_1MutableDiffPTData.html#a9ee7874e987e93eb4cb9d75ed08effd5">diffPtsMap</a>;</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#acd3c327ee7c8fd077d51751cc7069dee"> 325</a></span>&#160; PtsMap <a class="code" href="classSVF_1_1MutableDiffPTData.html#acd3c327ee7c8fd077d51751cc7069dee">propaPtsMap</a>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;};</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;{</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a25274e3029dfa655c47b72f291b906de"> 332</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a25274e3029dfa655c47b72f291b906de">BasePTData</a>;</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad02e5645ef7a73ba4c20c557a6f11789"> 333</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad02e5645ef7a73ba4c20c557a6f11789">BaseMutPTData</a>;</div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a17a5aa4a749a5ffc75c663d057454e4a"> 334</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a17a5aa4a749a5ffc75c663d057454e4a">BaseDFPTData</a>;</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#af3074a07345844ecd97e420218b39255"> 335</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#af3074a07345844ecd97e420218b39255">PTDataTy</a>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae847b982baec8115ede5d7d28cd91d34"> 337</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae847b982baec8115ede5d7d28cd91d34">LocID</a>;</div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae7456fccd4c95227cdd7163176703205"> 338</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">BaseMutPTData::PtsMap</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae7456fccd4c95227cdd7163176703205">PtsMap</a>;</div><div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a3f234abc0def4815a03de164fa258f24"> 339</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03">BaseMutPTData::PtsMapConstIter</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a3f234abc0def4815a03de164fa258f24">PtsMapConstIter</a>;</div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a0c73427f957d310bc85955bec6654352"> 340</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;LocID, PtsMap&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a0c73427f957d310bc85955bec6654352">DFPtsMap</a>; </div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a31ad5da37a88d2b97633d590393b0e64"> 341</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> DFPtsMap::iterator <a class="code" href="classSVF_1_1MutableDFPTData.html#a31ad5da37a88d2b97633d590393b0e64">DFPtsMapIter</a>;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#adb30678f5bbdea0f196d3b0ab67d2bad"> 342</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> DFPtsMap::const_iterator <a class="code" href="classSVF_1_1MutableDFPTData.html#adb30678f5bbdea0f196d3b0ab67d2bad">DFPtsMapconstIter</a>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#aed141fb836cb22e02032ea46e3e5f51b"> 345</a></span>&#160; <a class="code" href="classSVF_1_1MutableDFPTData.html#aed141fb836cb22e02032ea46e3e5f51b">MutableDFPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = BaseDFPTData::MutDataFlow) : BaseDFPTData(reversePT, ty), mutPTData(reversePT) { }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a96331853265be5129964a9751f64bd8d"> 347</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a96331853265be5129964a9751f64bd8d">~MutableDFPTData</a>() { }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a8b1814326e71f6c6fd31d5aef0592a1d"> 349</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a8b1814326e71f6c6fd31d5aef0592a1d">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span> mutPTData.getPtsMap();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a446112803c54ca937f8b85e42a4a1381"> 354</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a446112803c54ca937f8b85e42a4a1381">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; mutPTData.clear();</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b"> 359</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b">getPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> mutPTData.getPts(var);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a2f98940bd8266ad37a975c6d30d948b4"> 364</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a2f98940bd8266ad37a975c6d30d948b4">getRevPts</a>(<span class="keyword">const</span> Data&amp; datum)<span class="keyword"> override</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;MutableDFPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> mutPTData.getRevPts(datum);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9"> 370</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9">hasDFInSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> (dfInPtsMap.find(loc) != dfInPtsMap.end());</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac6d487a4af529ecb30366be54b29260a"> 375</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac6d487a4af529ecb30366be54b29260a">hasDFOutSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> (dfOutPtsMap.find(loc) != dfOutPtsMap.end());</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#aa8b85dee2b70031a2f97e1a36c9b25de"> 380</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#aa8b85dee2b70031a2f97e1a36c9b25de">hasDFInSet</a>(LocID loc,<span class="keyword">const</span> Key&amp; var)<span class="keyword"> const override</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; DFPtsMapconstIter it = dfInPtsMap.find(loc);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> ( it == dfInPtsMap.end())</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = it-&gt;second;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> (ptsMap.find(var) != ptsMap.end());</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#af6d234ae2b0aa91b510f3a2fba877340"> 389</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#af6d234ae2b0aa91b510f3a2fba877340">hasDFOutSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> const override</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; DFPtsMapconstIter it = dfOutPtsMap.find(loc);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> ( it == dfOutPtsMap.end())</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = it-&gt;second;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">return</span> (ptsMap.find(var) != ptsMap.end());</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a44aad57ac0de594e404a6c4ceff0bd53"> 398</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a44aad57ac0de594e404a6c4ceff0bd53">getDFInPtsSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; PtsMap&amp; inSet = dfInPtsMap[loc];</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> inSet[var];</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab6b0496d0c34642ddd2707142334f4a2"> 404</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#ab6b0496d0c34642ddd2707142334f4a2">getDFOutPtsSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; PtsMap&amp; outSet = dfOutPtsMap[loc];</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">return</span> outSet[var];</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a7559810e1ad40588f5fd82123ea1f150"> 412</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a7559810e1ad40588f5fd82123ea1f150">getDFInPtsMap</a>(LocID loc)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> dfInPtsMap[loc];</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a034c1bf20ab8a73a97863073e08dcd4e"> 416</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a034c1bf20ab8a73a97863073e08dcd4e">getDFOutPtsMap</a>(LocID loc)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> dfOutPtsMap[loc];</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae999df6f94a097f1fcb36979327790de"> 420</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DFPtsMap&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#ae999df6f94a097f1fcb36979327790de">getDFIn</a>()</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">return</span> dfInPtsMap;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a6d02392602cf7956ff41e345518d683c"> 424</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DFPtsMap&amp; <a class="code" href="classSVF_1_1MutableDFPTData.html#a6d02392602cf7956ff41e345518d683c">getDFOut</a>()</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> dfOutPtsMap;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac3ebc5afa531118b2b4446d23e3b8c7a"> 430</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac3ebc5afa531118b2b4446d23e3b8c7a">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFInPtsSet(dstLoc,dstVar), getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a85c0d93ee01d2c93c255e5a369248d1b"> 435</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a85c0d93ee01d2c93c255e5a369248d1b">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFInPtsSet(dstLoc,dstVar), getDFOutPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab3c517be91b4711ace581df075d4647a"> 440</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab3c517be91b4711ace581df075d4647a">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFOutPtsSet(dstLoc,dstVar), getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a7c7eff549ea0d153e7a72ed5bf79c30e"> 445</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a7c7eff549ea0d153e7a72ed5bf79c30e">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">return</span> this-&gt;updateDFInFromOut(srcLoc,srcVar,dstLoc,dstVar);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a23fca889a29399a91dfc916f5fab46ee"> 450</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a23fca889a29399a91dfc916f5fab46ee">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">return</span> this-&gt;updateDFInFromIn(srcLoc,srcVar,dstLoc,dstVar);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a51365299a34e3386798e78a076d6e1f5"> 455</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a51365299a34e3386798e78a076d6e1f5">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key&amp; singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFInSet(loc))</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keyword">const</span> PtsMap &amp; <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = getDFInPtsMap(loc);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::const_iterator ptsIt = ptsMap.begin(), ptsEit = ptsMap.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keyword">const</span> Key var = ptsIt-&gt;first;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">if</span> (strongUpdates &amp;&amp; var == singleton)</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var))</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a21b29c2d3e429017d910025e4ec73fc6"> 475</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a21b29c2d3e429017d910025e4ec73fc6">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(dstVar, this-&gt;getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a0ce585790bba942291bb7c7ffcaa3914"> 480</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a0ce585790bba942291bb7c7ffcaa3914">updateATVPts</a>(<span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">return</span> (this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFOutPtsSet(dstLoc, dstVar), this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcVar)));</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a43a45997f6147245fe8a552b42f3f632"> 485</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a43a45997f6147245fe8a552b42f3f632">clearAllDFOutUpdatedVar</a>(LocID)<span class="keyword"> override</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab75373d16f57dbbf1e9472e9a27d6b4b"> 492</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab75373d16f57dbbf1e9472e9a27d6b4b">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(mutPTData.ptsMap[dstKey], srcKey);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad64eed26e054eb4e91ec1139867cd196"> 496</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad64eed26e054eb4e91ec1139867cd196">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(mutPTData.ptsMap[dstKey], <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcKey));</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab675653138960b16f23c801298e80f48"> 500</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab675653138960b16f23c801298e80f48">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> DataSet&amp; srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(mutPTData.ptsMap[dstKey], srcDataSet);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div><div class="line"><a name="l00504"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae0495fcba25d4baffda9f85254591ae1"> 504</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae0495fcba25d4baffda9f85254591ae1">clearPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; mutPTData.clearPts(var, element);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab345e148997b9e1c6e4c2c76267880b7"> 508</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab345e148997b9e1c6e4c2c76267880b7">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; mutPTData.clearFullPts(var);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div><div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad34e442581dfe57ce7f1add25c8414b2"> 512</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad34e442581dfe57ce7f1add25c8414b2">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; mutPTData.remapAllPts();</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type &amp;lopt : dfInPtsMap)</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &amp;opt : lopt.second) opt.second.checkAndRemap();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type &amp;lopt : dfOutPtsMap)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &amp;opt : lopt.second) opt.second.checkAndRemap();</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; }</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac9120fbb056e23cdf84646a37d809a8d"> 527</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac9120fbb056e23cdf84646a37d809a8d">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts = mutPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type lptsmap : dfInPtsMap)</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type vpt : lptsmap.second)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; ++allPts[vpt.second];</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type lptm : dfOutPtsMap)</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type vpt : lptm.second)</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; ++allPts[vpt.second];</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a5baa6fffedfd0ac356590f9a0b222ee0"> 551</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a5baa6fffedfd0ac356590f9a0b222ee0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#acb338bbe5773001a15b81e596a764222"> 555</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#acb338bbe5773001a15b81e596a764222">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BaseDFPTData::MutDataFlow</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BaseDFPTData::MutIncDataFlow;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a8b30798ad9485a88238cc340e5da3db7"> 565</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a8b30798ad9485a88238cc340e5da3db7">unionPts</a>(DataSet&amp; dstDataSet, <span class="keyword">const</span> DataSet&amp; srcDataSet)</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> dstDataSet |= srcDataSet;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab7d1a3464e561029573f6f3c13c9bff4"> 569</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab7d1a3464e561029573f6f3c13c9bff4">addPts</a>(DataSet &amp;d, <span class="keyword">const</span> Data&amp; e)</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">return</span> d.test_and_set(e);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a95f4644a82f84674164651db66b084b8"> 578</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a95f4644a82f84674164651db66b084b8">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; mutPTData.dumpPTData();</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; std::error_code ErrInfo;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="namespaceSVF.html#acde6a1d496f1b655088ccbe023820277">ToolOutputFile</a> F(<span class="stringliteral">&quot;svfg_pts.data&quot;</span>, ErrInfo, llvm::sys::fs::OF_None);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">if</span> (!ErrInfo)</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> &amp; osm = F.os();</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> locs;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">for</span>(DFPtsMapconstIter it = dfInPtsMap.begin(), eit = dfInPtsMap.end(); it!=eit; ++it)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; locs.set(it-&gt;first);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">for</span>(DFPtsMapconstIter it = dfOutPtsMap.begin(), eit = dfOutPtsMap.end(); it!=eit; ++it)</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; locs.set(it-&gt;first);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">for</span> (NodeBS::iterator it = locs.begin(), eit = locs.end(); it != eit; it++)</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; {</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; LocID loc = *it;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFInSet(loc))</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; osm &lt;&lt; <span class="stringliteral">&quot;Loc:&quot;</span> &lt;&lt; loc &lt;&lt; <span class="stringliteral">&quot; IN:{&quot;</span>;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a684461bb7043fd344f7999b82bbf0889">dumpPts</a>(this-&gt;getDFInPtsMap(loc), osm);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; osm &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; }</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFOutSet(loc))</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; osm &lt;&lt; <span class="stringliteral">&quot;Loc:&quot;</span> &lt;&lt; loc &lt;&lt; <span class="stringliteral">&quot; OUT:{&quot;</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a684461bb7043fd344f7999b82bbf0889">dumpPts</a>(this-&gt;getDFOutPtsMap(loc), osm);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; osm &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; F.os().close();</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">if</span> (!F.os().has_error())</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; F.keep();</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for writing!\n&quot;</span>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; F.os().clear_error();</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a4678c8962e8af934a994dacace198107"> 624</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a4678c8962e8af934a994dacace198107">dumpPts</a>(<span class="keyword">const</span> PtsMap &amp; ptsSet,<a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &amp; O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>())<span class="keyword"> const</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">for</span> (PtsMapConstIter nodeIt = ptsSet.begin(); nodeIt != ptsSet.end(); nodeIt++)</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keyword">const</span> Key&amp; var = nodeIt-&gt;first;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keyword">const</span> DataSet &amp; pts = nodeIt-&gt;second;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (pts.empty())</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;&lt;&quot;</span> &lt;&lt; var &lt;&lt; <span class="stringliteral">&quot;,{&quot;</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a220f4c09e4c09c58d018719d44ec1dc3">SVFUtil::dumpSet</a>(pts,O);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;}&gt; &quot;</span>;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; }</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00641"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#abb59ef7367e353e65b82b54dac509f36"> 641</a></span>&#160; DFPtsMap <a class="code" href="classSVF_1_1MutableDFPTData.html#abb59ef7367e353e65b82b54dac509f36">dfInPtsMap</a>;</div><div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad3c53ef1c8e221299f3afe078946fbe0"> 643</a></span>&#160; DFPtsMap <a class="code" href="classSVF_1_1MutableDFPTData.html#ad3c53ef1c8e221299f3afe078946fbe0">dfOutPtsMap</a>;</div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#acf40f716470f73095d44a1b9e3bb939e"> 646</a></span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#acf40f716470f73095d44a1b9e3bb939e">mutPTData</a>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;};</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html"> 651</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutableIncDFPTData.html">MutableIncDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;{</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00654"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a14651359d0efe886c1313fd843e4d1db"> 654</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a14651359d0efe886c1313fd843e4d1db">BasePTData</a>;</div><div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a92f00e91a338113383bcf7bc8ce0026a"> 655</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a92f00e91a338113383bcf7bc8ce0026a">BaseMutPTData</a>;</div><div class="line"><a name="l00656"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a4b944ec759d0e78a7a2238db587752a9"> 656</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a4b944ec759d0e78a7a2238db587752a9">BaseDFPTData</a>;</div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a58f9b6357a5cf0243cf3b4ece30e8cf6"> 657</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a58f9b6357a5cf0243cf3b4ece30e8cf6">BaseMutDFPTData</a>;</div><div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a5f1715813082c1f02d6888b9ec32a75e"> 658</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a5f1715813082c1f02d6888b9ec32a75e">PTDataTy</a>;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a74d9f271ea0fa69e56ddbe16f10f3241"> 660</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a74d9f271ea0fa69e56ddbe16f10f3241">LocID</a>;</div><div class="line"><a name="l00661"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a67c24cebffdcea9c8059f6769c7f9798"> 661</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;LocID, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a67c24cebffdcea9c8059f6769c7f9798">UpdatedVarMap</a>; </div><div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a8b30326d3fa3f4054e67268f512aec9e"> 662</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> UpdatedVarMap::iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a8b30326d3fa3f4054e67268f512aec9e">UpdatedVarMapIter</a>;</div><div class="line"><a name="l00663"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#af815dd2108c16e1dfddbcd5bdbcceeb6"> 663</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> UpdatedVarMap::const_iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#af815dd2108c16e1dfddbcd5bdbcceeb6">UpdatedVarconstIter</a>;</div><div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a1fc4dff28f9044234fdfeede6f4b1cb0"> 664</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> DataSet::iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a1fc4dff28f9044234fdfeede6f4b1cb0">DataIter</a>;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00667"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#af5f7db6c55037a0e117a36982736039e"> 667</a></span>&#160; UpdatedVarMap <a class="code" href="classSVF_1_1MutableIncDFPTData.html#af5f7db6c55037a0e117a36982736039e">outUpdatedVarMap</a>;</div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ab5e9ebf9e71652b5fa63d59c97d016e4"> 668</a></span>&#160; UpdatedVarMap <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ab5e9ebf9e71652b5fa63d59c97d016e4">inUpdatedVarMap</a>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00672"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a9b06421a9043dc61485acf51cfc26a91"> 672</a></span>&#160; <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a9b06421a9043dc61485acf51cfc26a91">MutableIncDFPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c">BasePTData::MutIncDataFlow</a>) : BaseMutDFPTData(reversePT, ty) { }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;</div><div class="line"><a name="l00674"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#adf4e5c57d7b7ae7da37bb1a4eabfe8a6"> 674</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#adf4e5c57d7b7ae7da37bb1a4eabfe8a6">~MutableIncDFPTData</a>() { }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;</div><div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a775ef6458314a1febef3f7372f6a2bbc"> 676</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a775ef6458314a1febef3f7372f6a2bbc">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc, srcVar) &amp;&amp;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFInPtsSet(dstLoc,dstVar), this-&gt;getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad199b4b84f7aab48ff1510b118e2982f"> 687</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad199b4b84f7aab48ff1510b118e2982f">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">if</span>(varHasNewDFOutPts(srcLoc, srcVar) &amp;&amp;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFInPtsSet(dstLoc,dstVar), this-&gt;getDFOutPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;</div><div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa326ac77577a8a4a0ce3e29cc03a3989"> 698</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa326ac77577a8a4a0ce3e29cc03a3989">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc,srcVar))</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; removeVarFromDFInUpdatedSet(srcLoc,srcVar);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFOutPtsSet(dstLoc,dstVar), this-&gt;getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; {</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; setVarDFOutSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a2dd9dad547c389d5cd488b165dd145eb"> 712</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a2dd9dad547c389d5cd488b165dd145eb">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">if</span>(this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFInPtsSet(dstLoc,dstVar), this-&gt;getDFOutPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div><div class="line"><a name="l00722"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad68b23ed56b2c18bf75c23a658523404"> 722</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad68b23ed56b2c18bf75c23a658523404">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">if</span>(this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFInPtsSet(dstLoc,dstVar), this-&gt;getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; }</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a3f397aaf4f3d6d04ec005c2577652e04"> 732</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a3f397aaf4f3d6d04ec005c2577652e04">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key&amp; singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFInSet(loc))</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; {</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; DataSet pts = getDFInUpdatedVar(loc);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">for</span> (DataIter ptsIt = pts.begin(), ptsEit = pts.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; {</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keyword">const</span> Key var = *ptsIt;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (strongUpdates &amp;&amp; var == singleton)</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var))</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; }</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;</div><div class="line"><a name="l00752"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a7778be60515fa3ff247b6d2cec138cfc"> 752</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a7778be60515fa3ff247b6d2cec138cfc">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc,srcVar))</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; removeVarFromDFInUpdatedSet(srcLoc,srcVar);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">return</span> this-&gt;mutPTData.unionPts(dstVar, this-&gt;getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; }</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa8fdf0f82d3d94af34d5bc1386ed21f9"> 762</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa8fdf0f82d3d94af34d5bc1386ed21f9">updateATVPts</a>(<span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this-&gt;getDFOutPtsSet(dstLoc, dstVar), this-&gt;mutPTData.getPts(srcVar)))</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; setVarDFOutSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;</div><div class="line"><a name="l00772"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ac9ff175dbdf75232a104e2aa34f87d43"> 772</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ac9ff175dbdf75232a104e2aa34f87d43">clearAllDFOutUpdatedVar</a>(LocID loc)<span class="keyword"> override</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFOutSet(loc))</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; DataSet pts = getDFOutUpdatedVar(loc);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">for</span> (DataIter ptsIt = pts.begin(), ptsEit = pts.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keyword">const</span> Key var = *ptsIt;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; removeVarFromDFOutUpdatedSet(loc, var);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; }</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; }</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a89f65d37096c82fcdddb1c324ec206d2"> 787</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a89f65d37096c82fcdddb1c324ec206d2">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html">MutableIncDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;</div><div class="line"><a name="l00792"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa4c262f0d62e902912d4cd7999731d3d"> 792</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa4c262f0d62e902912d4cd7999731d3d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; {</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c">BasePTData::MutIncDataFlow</a>;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setVarDFInSetUpdated(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; inUpdatedVarMap[loc].set(var);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; }</div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a913c1a2c48526160eeecd028bd22cfc4"> 806</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a913c1a2c48526160eeecd028bd22cfc4">removeVarFromDFInUpdatedSet</a>(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; {</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; UpdatedVarMapIter it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">if</span> (it != inUpdatedVarMap.end())</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; it-&gt;second.reset(var);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div><div class="line"><a name="l00813"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ae7ed810cf4de695072ba5c4d0c882353"> 813</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ae7ed810cf4de695072ba5c4d0c882353">varHasNewDFInPts</a>(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; UpdatedVarMapIter it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">if</span> (it != inUpdatedVarMap.end())</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">return</span> it-&gt;second.test(var);</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; }</div><div class="line"><a name="l00821"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ae4d0989cb98814f943bd4dfd09a37017"> 821</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ae4d0989cb98814f943bd4dfd09a37017">getDFInUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">return</span> inUpdatedVarMap[loc];</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setVarDFOutSetUpdated(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; outUpdatedVarMap[loc].set(var);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; }</div><div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ac055ad77582b36083ca1950c39207f5e"> 835</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ac055ad77582b36083ca1950c39207f5e">removeVarFromDFOutUpdatedSet</a>(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; {</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; UpdatedVarMapIter it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">if</span> (it != outUpdatedVarMap.end())</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; it-&gt;second.reset(var);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; }</div><div class="line"><a name="l00842"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a55b19f617d11dfc6632b690694f264ab"> 842</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a55b19f617d11dfc6632b690694f264ab">varHasNewDFOutPts</a>(LocID loc,<span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; {</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; UpdatedVarMapIter it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">if</span> (it != outUpdatedVarMap.end())</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">return</span> it-&gt;second.test(var);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div><div class="line"><a name="l00850"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad1ae7faf04ba10ac4ac6a6f1cc498547"> 850</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad1ae7faf04ba10ac4ac6a6f1cc498547">getDFOutUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; {</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">return</span> outUpdatedVarMap[loc];</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;};</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet, <span class="keyword">typename</span> VersionedKey, <span class="keyword">typename</span> VersionedKeySet&gt;</div><div class="line"><a name="l00861"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html"> 861</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MutableVersionedPTData.html">MutableVersionedPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData</a>&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;{</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00864"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a31fd15a8147e3146b15b4d24fe34cf46"> 864</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a31fd15a8147e3146b15b4d24fe34cf46">BasePTData</a>;</div><div class="line"><a name="l00865"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa80044e3b4c3ed58117573dfa54d803b"> 865</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa80044e3b4c3ed58117573dfa54d803b">BaseVersionedPTData</a>;</div><div class="line"><a name="l00866"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#af7bf99aeb752c4216a60d1fa5187b49e"> 866</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#af7bf99aeb752c4216a60d1fa5187b49e">PTDataTy</a>;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;</div><div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ad2f9950ad71a39c400a4835e6e84fcd9"> 868</a></span>&#160; <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ad2f9950ad71a39c400a4835e6e84fcd9">MutableVersionedPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::MutVersioned)</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; : BaseVersionedPTData(reversePT, ty), tlPTData(reversePT), atPTData(reversePT) { }</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;</div><div class="line"><a name="l00871"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#adf809b61632067b0a987d2975e6377dc"> 871</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#adf809b61632067b0a987d2975e6377dc">~MutableVersionedPTData</a>() { }</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;</div><div class="line"><a name="l00873"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ab476e1b59aead37b440fd5735df3814b"> 873</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ab476e1b59aead37b440fd5735df3814b">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; tlPTData.clear();</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; atPTData.clear();</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;</div><div class="line"><a name="l00879"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aaf519166d2e0ca3c81088b52a1cf3066"> 879</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aaf519166d2e0ca3c81088b52a1cf3066">getPts</a>(<span class="keyword">const</span> Key&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">return</span> tlPTData.getPts(vk);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div><div class="line"><a name="l00883"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#afcc34f6cedca6a8f151b1a7251832818"> 883</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1MutableVersionedPTData.html#afcc34f6cedca6a8f151b1a7251832818">getPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">return</span> atPTData.getPts(vk);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; }</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;</div><div class="line"><a name="l00888"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a7de508c0d83895aee785524d28eac8b9"> 888</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a7de508c0d83895aee785524d28eac8b9">getRevPts</a>(<span class="keyword">const</span> Data&amp; datum)<span class="keyword"> override</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;MutableVersionedPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">return</span> tlPTData.getRevPts(datum);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; }</div><div class="line"><a name="l00893"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#afaef5c61bee74cbd649c787cfdef2a03"> 893</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> VersionedKeySet&amp; <a class="code" href="classSVF_1_1MutableVersionedPTData.html#afaef5c61bee74cbd649c787cfdef2a03">getVersionedKeyRevPts</a>(<span class="keyword">const</span> Data&amp; datum)<span class="keyword"> override</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;MutableVersionedPTData::getVersionedKeyRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">return</span> atPTData.getRevPts(datum);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;</div><div class="line"><a name="l00899"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a00a88cc3e802921c6a0951801ec712a6"> 899</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a00a88cc3e802921c6a0951801ec712a6">addPts</a>(<span class="keyword">const</span> Key&amp; k, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">return</span> tlPTData.addPts(k, element);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; }</div><div class="line"><a name="l00903"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#af39232f64ff0ede20161c7f265da6cf5"> 903</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#af39232f64ff0ede20161c7f265da6cf5">addPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">return</span> atPTData.addPts(vk, element);</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; }</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;</div><div class="line"><a name="l00908"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ae79628fc101567ba84215b624dd00c01"> 908</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ae79628fc101567ba84215b624dd00c01">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; }</div><div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a56e752a83620f482a4b1e2f8d395dd75"> 912</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a56e752a83620f482a4b1e2f8d395dd75">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; }</div><div class="line"><a name="l00916"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a5647b7fad5c14f7ec57d3de3480758eb"> 916</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a5647b7fad5c14f7ec57d3de3480758eb">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">return</span> atPTData.unionPts(dstVar, tlPTData.getPts(srcVar));</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; }</div><div class="line"><a name="l00920"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a9967c530d3955a0a726b7a00653ef0ba"> 920</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a9967c530d3955a0a726b7a00653ef0ba">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, atPTData.getPts(srcVar));</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; }</div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa9ab46b7afc7f47df20e74bda300dc42"> 924</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa9ab46b7afc7f47df20e74bda300dc42">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> DataSet&amp; srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div><div class="line"><a name="l00928"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa9d24a4defb025c075e4ec5bc7f3b618"> 928</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa9d24a4defb025c075e4ec5bc7f3b618">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> DataSet&amp; srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; }</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;</div><div class="line"><a name="l00933"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ab20b71c9e2f31439c95071c375bf89e0"> 933</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ab20b71c9e2f31439c95071c375bf89e0">clearPts</a>(<span class="keyword">const</span> Key&amp; k, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; tlPTData.clearPts(k, element);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; }</div><div class="line"><a name="l00937"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a21e823484199946541b8b79d736b2601"> 937</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a21e823484199946541b8b79d736b2601">clearPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data&amp; element)<span class="keyword"> override</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; atPTData.clearPts(vk, element);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; }</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;</div><div class="line"><a name="l00942"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a9f985ff2daee53fb661e4b2bcfd17f05"> 942</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a9f985ff2daee53fb661e4b2bcfd17f05">clearFullPts</a>(<span class="keyword">const</span> Key&amp; k)<span class="keyword"> override</span></div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; tlPTData.clearFullPts(k);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; }</div><div class="line"><a name="l00946"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aaf3df7501f84233f6a687ef9f2f0ae90"> 946</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aaf3df7501f84233f6a687ef9f2f0ae90">clearFullPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; atPTData.clearFullPts(vk);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; }</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;</div><div class="line"><a name="l00951"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a72cbf33b77f5a19221ad265691065695"> 951</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a72cbf33b77f5a19221ad265691065695">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; tlPTData.remapAllPts();</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; atPTData.remapAllPts();</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; }</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;</div><div class="line"><a name="l00957"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a6cac338e74f869d0e708c7e2b356b5d7"> 957</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a6cac338e74f869d0e708c7e2b356b5d7">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts = tlPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; SVFUtil::mergePtsOccMaps&lt;DataSet&gt;(allPts, atPTData.getAllPts(liveOnly));</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;</div><div class="line"><a name="l00964"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a796c1676dd5180a27dbebae5a99b57b7"> 964</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a796c1676dd5180a27dbebae5a99b57b7">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;== Top-level points-to information\n&quot;</span>;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; tlPTData.dumpPTData();</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;== Address-taken points-to information\n&quot;</span>;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; atPTData.dumpPTData();</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;</div><div class="line"><a name="l00974"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a6be54447671288a666af5d48972e2ccf"> 974</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a6be54447671288a666af5d48972e2ccf">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html">MutableVersionedPTData&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</a> *)</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; {</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; }</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;</div><div class="line"><a name="l00979"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a646111552a7112b8e48c00e766ce8d9b"> 979</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a646111552a7112b8e48c00e766ce8d9b">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutVersioned;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00987"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a01974968b7cf60a4231cc83c93b26d7f"> 987</a></span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a01974968b7cf60a4231cc83c93b26d7f">tlPTData</a>;</div><div class="line"><a name="l00989"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a3e5337d4189e98f11305491a9ef3c439"> 989</a></span>&#160; <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData&lt;VersionedKey, VersionedKeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a3e5337d4189e98f11305491a9ef3c439">atPTData</a>;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;};</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;<span class="preprocessor">#endif // MUTABLE_POINTSTO_H_</span></div><div class="ttc" id="classSVF_1_1MutableDFPTData_html_a9a9641305c9d670e09f02b71a3e384a9"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9">SVF::MutableDFPTData::hasDFInSet</a></div><div class="ttdeci">virtual bool hasDFInSet(LocID loc) const override</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00370">MutablePointsToDS.h:370</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1MutablePTData_html_a124e8cc8d2dbbd70682a4b7845e5d600"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#a124e8cc8d2dbbd70682a4b7845e5d600">SVF::MutablePTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const DataSet &amp;srcDataSet) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U srcDataSet. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00072">MutablePointsToDS.h:72</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1MutableIncDFPTData_html_af815dd2108c16e1dfddbcd5bdbcceeb6"><div class="ttname"><a href="classSVF_1_1MutableIncDFPTData.html#af815dd2108c16e1dfddbcd5bdbcceeb6">SVF::MutableIncDFPTData::UpdatedVarconstIter</a></div><div class="ttdeci">UpdatedVarMap::const_iterator UpdatedVarconstIter</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00663">MutablePointsToDS.h:663</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1MutablePTData_html_a80cb0bdab4aa64d81e3d61405066a0da"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da">SVF::MutablePTData::clearRevPts</a></div><div class="ttdeci">void clearRevPts(const DataSet &amp;pts, const Key &amp;k)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00177">MutablePointsToDS.h:177</a></div></div>