svf-tools 1.0.422 → 1.0.425

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 (26) hide show
  1. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
  3. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
  4. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/html/PointsTo_8h_source.html +2 -2
  6. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator-members.html +1 -1
  7. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html +6 -6
  8. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +1 -1
  9. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +8 -8
  10. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +1 -1
  11. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +7 -7
  12. package/SVF-doxygen/html/html/functions_func_g.html +1 -1
  13. package/SVF-doxygen/html/html/functions_func_o.html +2 -2
  14. package/SVF-doxygen/html/html/functions_g.html +1 -1
  15. package/SVF-doxygen/html/html/functions_o.html +2 -2
  16. package/SVF-doxygen/html/html/search/all_7.js +1 -1
  17. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  18. package/SVF-doxygen/html/html/search/functions_6.js +1 -1
  19. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  20. package/build.sh +93 -16
  21. package/include/Graphs/ICFGEdge.h +1 -1
  22. package/include/MemoryModel/PointsTo.h +1 -1
  23. package/include/Util/CoreBitVector.h +1 -1
  24. package/lib/MemoryModel/PointsTo.cpp +2 -2
  25. package/lib/Util/CoreBitVector.cpp +1 -1
  26. package/package.json +1 -1
@@ -66,10 +66,9 @@ $(function() {
66
66
  <div class="title">PointsTo.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="PointsTo_8cpp.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;<span class="comment">//===- PointsTo.cpp -- Wrapper of set-like data structures ------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * PointsTo.cpp</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Abstracts away data structures to be used as points-to sets (implementation).</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * Created on: Feb 01, 2021</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Author: Mohamad Barbar</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;new&gt;</span></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="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</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"> 21</span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> <a class="code" href="classSVF_1_1PointsTo.html#a98781dd444ada40af7eef9aefe76123d">PointsTo::currentBestNodeMapping</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> <a class="code" href="classSVF_1_1PointsTo.html#a53e1230c87912d26604990eb8b0cbc0c">PointsTo::currentBestReverseNodeMapping</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a05aa807f21f311eb50ff11dde98b8d22"> 24</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a05aa807f21f311eb50ff11dde98b8d22">PointsTo::PointsTo</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; : type(<a class="code" href="classSVF_1_1Options.html">Options</a>::PtType), nodeMapping(currentBestNodeMapping),</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; reverseNodeMapping(currentBestReverseNodeMapping)</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>) <a class="code" href="namespaceSVF.html#ab6cf2115b54ef7135b031efc2f112b54">SparseBitVector</a>();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>) <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>) <a class="code" href="classSVF_1_1BitVector.html">BitVector</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::PointsTo: unknown type&quot;</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#acef2d3e41263aef641c3411e28ad445c"> 34</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a05aa807f21f311eb50ff11dde98b8d22">PointsTo::PointsTo</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;pt)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; : <a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a>), <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>),</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>) <a class="code" href="namespaceSVF.html#ab6cf2115b54ef7135b031efc2f112b54">SparseBitVector</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>) <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>) <a class="code" href="classSVF_1_1BitVector.html">BitVector</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::PointsTo&amp;: unknown type&quot;</span>);</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"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a5ecef616428a70e8e7726406dfb43544"> 44</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a05aa807f21f311eb50ff11dde98b8d22">PointsTo::PointsTo</a>(<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;&amp;pt)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; : <a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a>), <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>)</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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>) <a class="code" href="namespaceSVF.html#ab6cf2115b54ef7135b031efc2f112b54">SparseBitVector</a>(std::move(pt.sbv));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>) <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>(std::move(pt.cbv));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>) <a class="code" href="classSVF_1_1BitVector.html">BitVector</a>(std::move(pt.bv));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::PointsTo&amp;&amp;: unknown type&quot;</span>);</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_1PointsTo.html#a2a12ab349a01314b0d7b4074a0c28677"> 54</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a2a12ab349a01314b0d7b4074a0c28677">PointsTo::~PointsTo</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.~SparseBitVector();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.~CoreBitVector();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.~BitVector();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::~PointsTo: unknown type&quot;</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#a269d334618e4acc7e739317fd58d7fe7"> 65</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1PointsTo.html#a269d334618e4acc7e739317fd58d7fe7">PointsTo::operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> = rhs.<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> = rhs.<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a> = rhs.<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// Placement new because if type has changed, we have</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">// not constructed the new type yet.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>) <a class="code" href="namespaceSVF.html#ab6cf2115b54ef7135b031efc2f112b54">SparseBitVector</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>) <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>) <a class="code" href="classSVF_1_1BitVector.html">BitVector</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::PointsTo=&amp;: unknown type&quot;</span>);</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; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#ab06c71c3d1ab7ef2a67fc00b42f4be72"> 80</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1PointsTo.html#a269d334618e4acc7e739317fd58d7fe7">PointsTo::operator=</a>(<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;&amp;rhs)</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; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> = rhs.type;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> = rhs.nodeMapping;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a> = rhs.reverseNodeMapping;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">// See comment in copy assignment.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>) <a class="code" href="namespaceSVF.html#ab6cf2115b54ef7135b031efc2f112b54">SparseBitVector</a>(std::move(rhs.sbv));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>) <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>(std::move(rhs.cbv));</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>) <a class="code" href="classSVF_1_1BitVector.html">BitVector</a>(std::move(rhs.bv));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::PointsTo=&amp;&amp;: unknown type&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b"> 94</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">PointsTo::empty</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a98b9795b4fdc74d9d2efa9a3f2ecb62f">empty</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.empty();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a98b9795b4fdc74d9d2efa9a3f2ecb62f">empty</a>();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::empty: unknown type&quot;</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d"> 106</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">PointsTo::count</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#abfed2e7daf2407e11cade625ac19a6ce">count</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.count();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#abfed2e7daf2407e11cade625ac19a6ce">count</a>();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::count: unknown type&quot;</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#acb5af4139d42dcd19c6327520f074e91"> 117</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#acb5af4139d42dcd19c6327520f074e91">PointsTo::clear</a>(<span class="keywordtype">void</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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a1e523bab1013a9f3e9eaea56e53afa58">clear</a>();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.clear();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a1e523bab1013a9f3e9eaea56e53afa58">clear</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::clear: unknown type&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f"> 125</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">PointsTo::test</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> n)<span class="keyword"> const</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; n = <a class="code" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863">getInternalNode</a>(n);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a7b20ffd3cd4a0ffc48a1348f657deaa0">test</a>(n);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.test(n);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a7b20ffd3cd4a0ffc48a1348f657deaa0">test</a>(n);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::test: unknown type&quot;</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;}</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf"> 137</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">PointsTo::test_and_set</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> n)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; n = <a class="code" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863">getInternalNode</a>(n);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a3299b296d20d2b76c6538ba51a684972">test_and_set</a>(n);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.test_and_set(n);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a3299b296d20d2b76c6538ba51a684972">test_and_set</a>(n);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::test_and_set: unknown type&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa"> 149</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">PointsTo::set</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> n)</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"> 151</span>&#160; n = <a class="code" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863">getInternalNode</a>(n);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a553e3e51bffe1aab04adc047e0fd3f24">set</a>(n);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.set(n);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a553e3e51bffe1aab04adc047e0fd3f24">set</a>(n);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::set: unknown type&quot;</span>);</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;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6"> 158</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6">PointsTo::reset</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> n)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; n = <a class="code" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863">getInternalNode</a>(n);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a42fc777d574db4ef23b02308b944a85b">reset</a>(n);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.reset(n);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a42fc777d574db4ef23b02308b944a85b">reset</a>(n);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::reset: unknown type&quot;</span>);</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;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#ab31a53693fe070767b8de74e88091cd8"> 167</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#ab31a53693fe070767b8de74e88091cd8">PointsTo::contains</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::contains: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#af08c16aed45dfa65472f0b5ae518add2">contains</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.contains(rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#af08c16aed45dfa65472f0b5ae518add2">contains</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::contains: unknown type&quot;</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</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;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d"> 180</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">PointsTo::intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersects: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a15be4ce7e9a07d9b01da0c60d51b22de">intersects</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.intersects(rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a15be4ce7e9a07d9b01da0c60d51b22de">intersects</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersects: unknown type&quot;</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;}</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a12883234179873d279e72e5947aad836"> 193</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classSVF_1_1PointsTo.html#a12883234179873d279e72e5947aad836">PointsTo::find_first</a>(<span class="keywordtype">void</span>)</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="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() == 0) <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> *<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a6b29626e4e4298943d2ad839f06db83e"> 199</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a6b29626e4e4298943d2ad839f06db83e">PointsTo::operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::==: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a> == rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a> == rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a> == rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::==: unknown type&quot;</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</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_1PointsTo.html#a888f05fe8da4b95c44226f3c69469c75"> 212</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a888f05fe8da4b95c44226f3c69469c75">PointsTo::operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)<span class="keyword"> const</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; <span class="comment">// TODO: we&#39;re asserting and checking twice... should be okay...</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::!=: mappings of operands do not match!&quot;</span>);</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"> 217</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;}</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#aa8644057ec182382e3c34e90d7d61ade"> 220</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#aa8644057ec182382e3c34e90d7d61ade">PointsTo::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</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"> 222</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::|=: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a> |= rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a> |= rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a> |= rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::|=: unknown type&quot;</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</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_1PointsTo.html#a687b34cac3c43dd957b86a4833a24871"> 233</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#aa8644057ec182382e3c34e90d7d61ade">PointsTo::operator|=</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;rhs)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;{</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// TODO:</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n : rhs)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (changed) <span class="keyword">set</span>(n);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">else</span> changed = <a class="code" href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">test_and_set</a>(n);</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"> 243</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;}</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a164aced0d6a19dd7ba8124ec2e77674c">PointsTo::operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</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"> 248</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::&amp;=: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a> &amp;= rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a> &amp;= rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a> &amp;= rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::&amp;=: unknown type&quot;</span>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#a21244b7b04d6aa01787a11d116bc9952"> 259</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a21244b7b04d6aa01787a11d116bc9952">PointsTo::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;{</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::-=: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.intersectWithComplement(rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::-=: unknown type&quot;</span>);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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"> 270</span>&#160;}</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd"> 272</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">PointsTo::intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;{</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersectWithComplement: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.intersectWithComplement(rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersectWithComplement(PT): unknown type&quot;</span>);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;}</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#adec2e2fc87c2bb9b3ff8873b04abf31d"> 284</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">PointsTo::intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;{</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersectWithComplement: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(lhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersectWithComplement: mappings of operands do not match!&quot;</span>);</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"> 289</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(lhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>, rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.intersectWithComplement(lhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>, rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(lhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>, rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersectWithComplement(PT, PT): unknown type&quot;</span>);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#ae4749cf6dc43645e2479cefbcc246637"> 298</a></span>&#160;<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1PointsTo.html#ae4749cf6dc43645e2479cefbcc246637">PointsTo::toNodeBS</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> nbs;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : *<span class="keyword">this</span>) nbs.set(o);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> nbs;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#afe275b31ea93a3ecea4e19660ceef0ae"> 305</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classSVF_1_1PointsTo.html#afe275b31ea93a3ecea4e19660ceef0ae">PointsTo::hash</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#af979ecb48d3d5296bce5bd0b4676e359">hash</a>();</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; std::hash&lt;SparseBitVector&gt; h;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> h(<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#af979ecb48d3d5296bce5bd0b4676e359">hash</a>();</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::hash: unknown type&quot;</span>);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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;}</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a06b981a2b7b04549f494dffde974c56d"> 321</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> <a class="code" href="classSVF_1_1PointsTo.html#a06b981a2b7b04549f494dffde974c56d">PointsTo::getNodeMapping</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863"> 326</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863">PointsTo::getInternalNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n)<span class="keyword"> const</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> == <span class="keyword">nullptr</span>) <span class="keywordflow">return</span> n;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(n &lt; nodeMapping-&gt;size());</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>-&gt;at(n);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;}</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a80a3caf74c138b3833c79622fef7b626"> 333</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointsTo.html#a80a3caf74c138b3833c79622fef7b626">PointsTo::getExternalNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n)<span class="keyword"> const</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a> == <span class="keyword">nullptr</span>) <span class="keywordflow">return</span> n;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(n &lt; reverseNodeMapping-&gt;size());</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>-&gt;at(n);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;}</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec"> 340</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">PointsTo::metaSame</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;pt)<span class="keyword"> const</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> == pt.<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> &amp;&amp; <a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a> == pt.<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;}</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a6c1885ddfcc72604463f7c4ea94d2f74"> 345</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> <a class="code" href="classSVF_1_1PointsTo.html#a6c1885ddfcc72604463f7c4ea94d2f74">PointsTo::getCurrentBestNodeMapping</a>(<span class="keywordtype">void</span>)</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"> 347</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a98781dd444ada40af7eef9aefe76123d">currentBestNodeMapping</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"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a40759008e0cf6f790d48727f7b0ca38b"> 350</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> <a class="code" href="classSVF_1_1PointsTo.html#a40759008e0cf6f790d48727f7b0ca38b">PointsTo::getCurrentBestReverseNodeMapping</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;{</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a53e1230c87912d26604990eb8b0cbc0c">currentBestReverseNodeMapping</a>;</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"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a84eca4c7fc833f8ca4d119cd4da08ca8"> 355</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#a84eca4c7fc833f8ca4d119cd4da08ca8">PointsTo::setCurrentBestNodeMapping</a>(<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">MappingPtr</a> newCurrentBestNodeMapping,</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">MappingPtr</a> newCurrentBestReverseNodeMapping)</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; <a class="code" href="classSVF_1_1PointsTo.html#a98781dd444ada40af7eef9aefe76123d">currentBestNodeMapping</a> = newCurrentBestNodeMapping;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#a53e1230c87912d26604990eb8b0cbc0c">currentBestReverseNodeMapping</a> = newCurrentBestReverseNodeMapping;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;}</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#ac630a1bfa028240f9128e3b60d9413a4"> 362</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#ac630a1bfa028240f9128e3b60d9413a4">PointsTo::checkAndRemap</a>(<span class="keywordtype">void</span>)</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"> 364</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> != <a class="code" href="classSVF_1_1PointsTo.html#a98781dd444ada40af7eef9aefe76123d">currentBestNodeMapping</a>)</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="comment">// newPt constructed with correct node mapping.</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> newPt;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : *<span class="keyword">this</span>) newPt.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(o);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; *<span class="keyword">this</span> = std::move(newPt);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;}</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ad9efcd9fb0c8201b9166a1560d06a71b"> 373</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a3974dee7680da3a43b58932766e77a16">PointsTo::PointsToIterator::PointsToIterator</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> *pt, <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; : pt(pt)</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span> (pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::CBV)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVector::iterator</a>(end ? pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>() : pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a835bf11a1f698942db8e6bdadbbfd1f3">begin</a>());</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"> 380</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::SBV)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>) SparseBitVector::iterator(end ? pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.end() : pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.begin());</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::BV)</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">BitVector::iterator</a>(end ? pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>() : pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a835bf11a1f698942db8e6bdadbbfd1f3">begin</a>());</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; <span class="keywordflow">else</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::PointsToIterator: unknown type&quot;</span>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;}</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a19f371ccb5b1c84fb4adfd5b0c8a3eec"> 395</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a3974dee7680da3a43b58932766e77a16">PointsTo::PointsToIterator::PointsToIterator</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; : pt(pt.pt)</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"> 398</span>&#160; <span class="keywordflow">if</span> (this-&gt;pt-&gt;type == PointsTo::Type::SBV)</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>) SparseBitVector::iterator(pt.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;pt-&gt;type == PointsTo::Type::CBV)</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"> 404</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVector::iterator</a>(pt.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;pt-&gt;type == PointsTo::Type::BV)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">BitVector::iterator</a>(pt.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::PointsToIterator&amp;: unknown type&quot;</span>);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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;}</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_1PointsTo_1_1PointsToIterator.html#abe128c47fb16093756195f789e5f68d5"> 416</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a3974dee7680da3a43b58932766e77a16">PointsTo::PointsToIterator::PointsToIterator</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; : <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>)</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;{</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::SBV)</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>) SparseBitVector::iterator(std::move(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>.sbvIt));</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::CBV)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVector::iterator</a>(std::move(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>.cbvIt));</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::BV)</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">BitVector::iterator</a>(std::move(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>.bvIt));</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::PointsToIterator&amp;&amp;: unknown type&quot;</span>);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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"> 435</span>&#160;}</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#acbbcff746f7f0dc37815e688e9172f21"> 437</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::PointsToIterator</a> &amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#acbbcff746f7f0dc37815e688e9172f21">PointsTo::PointsToIterator::operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;rhs)</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; this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a> = rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::SBV)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>) SparseBitVector::iterator(rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>);</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"> 445</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::CBV)</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVector::iterator</a>(rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>);</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::BV)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">BitVector::iterator</a>(rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::PointsToIterator&amp;: unknown type&quot;</span>);</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"> 455</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;}</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac35de79e5c5d48d7f8f6f22e8450a0f6"> 458</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::PointsToIterator</a> &amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#acbbcff746f7f0dc37815e688e9172f21">PointsTo::PointsToIterator::operator=</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;&amp;rhs)</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a> = rhs.pt;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::SBV)</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">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>) SparseBitVector::iterator(std::move(rhs.sbvIt));</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::CBV)</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVector::iterator</a>(std::move(rhs.cbvIt));</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::BV)</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="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">BitVector::iterator</a>(std::move(rhs.bvIt));</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; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::PointsToIterator&amp;&amp;: unknown type&quot;</span>);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a754d85d463ebdbecfaab41aac106f14f"> 479</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::PointsToIterator</a> &amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a754d85d463ebdbecfaab41aac106f14f">PointsTo::PointsToIterator::operator++</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;{</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a049cecdc3aa76a31eacdbe48f6a820e7">atEnd</a>() &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::++(pre): incrementing past end!&quot;</span>);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::CBV) ++<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::SBV) ++<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::BV) ++<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::++(void): unknown type&quot;</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;}</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a94a195a13777028d5af16985e3fd5b73"> 490</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::PointsToIterator</a> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a754d85d463ebdbecfaab41aac106f14f">PointsTo::PointsToIterator::operator++</a>(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;{</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a049cecdc3aa76a31eacdbe48f6a820e7">atEnd</a>() &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::++(pre): incrementing past end!&quot;</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> old = *<span class="keyword">this</span>;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; ++*<span class="keyword">this</span>;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> old;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;}</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ab294d3378c283fff63e481db1bea3b4d"> 498</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ab294d3378c283fff63e481db1bea3b4d">PointsTo::PointsToIterator::operator*</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a049cecdc3aa76a31eacdbe48f6a820e7">atEnd</a>() &amp;&amp; <span class="stringliteral">&quot;PointsToIterator: dereferencing end!&quot;</span>);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::CBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a80a3caf74c138b3833c79622fef7b626">getExternalNode</a>(*<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::SBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a80a3caf74c138b3833c79622fef7b626">getExternalNode</a>(*<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::BV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a80a3caf74c138b3833c79622fef7b626">getExternalNode</a>(*<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::*: unknown type&quot;</span>);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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"> 508</span>&#160;}</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aef4e1b40faa327f8bbf42a82df29c7b4"> 510</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aef4e1b40faa327f8bbf42a82df29c7b4">PointsTo::PointsToIterator::operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a> == rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::==: comparing iterators from different PointsTos!&quot;</span>);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">// Handles end implicitly.</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::CBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a> == rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::SBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a> == rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::BV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a> == rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::==: unknown type&quot;</span>);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</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="l00525"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa90476b4c0e75a256f8ff855f99ca970"> 525</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa90476b4c0e75a256f8ff855f99ca970">PointsTo::PointsToIterator::operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a> == rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::!=: comparing iterators from different PointsTos!&quot;</span>);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a049cecdc3aa76a31eacdbe48f6a820e7"> 532</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a049cecdc3aa76a31eacdbe48f6a820e7">PointsTo::PointsToIterator::atEnd</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a> != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::atEnd: iterator iterating over nothing!&quot;</span>);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::CBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a> == <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>();</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::SBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a> == <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.end();</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::BV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a> == <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>();</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::atEnd: unknown type&quot;</span>);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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;}</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"><a class="line" href="namespaceSVF.html#aa01b96d5bc6c3930b0bfca789acf75c4"> 544</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="namespaceSVF.html#aa01b96d5bc6c3930b0bfca789acf75c4">operator|</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</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="comment">// TODO: optimise.</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = lhs;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; result |= rhs;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;}</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="namespaceSVF.html#aaa21ff095e66a18937f29246e213f69d"> 552</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="namespaceSVF.html#aaa21ff095e66a18937f29246e213f69d">operator&amp;</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;{</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">// TODO: optimise.</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = lhs;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; result &amp;= rhs;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;}</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a6c2f7ce4908d39a17b29830a2e4bd781"> 560</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="namespaceSVF.html#a6c2f7ce4908d39a17b29830a2e4bd781">operator-</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</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="comment">// TODO: optimise.</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = lhs;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; result -= rhs;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</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;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;}; <span class="comment">// namespace SVF</span></div><div class="ttc" id="classSVF_1_1PointsTo_html_a1161d97df5ffc8f11d1a34df9a4d5bdf"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">SVF::PointsTo::test_and_set</a></div><div class="ttdeci">bool test_and_set(u32_t n)</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00137">PointsTo.cpp:137</a></div></div>
69
+ <a href="PointsTo_8cpp.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;<span class="comment">//===- PointsTo.cpp -- Wrapper of set-like data structures ------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * PointsTo.cpp</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Abstracts away data structures to be used as points-to sets (implementation).</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * Created on: Feb 01, 2021</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Author: Mohamad Barbar</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;new&gt;</span></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="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</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"> 21</span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> <a class="code" href="classSVF_1_1PointsTo.html#a98781dd444ada40af7eef9aefe76123d">PointsTo::currentBestNodeMapping</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> <a class="code" href="classSVF_1_1PointsTo.html#a53e1230c87912d26604990eb8b0cbc0c">PointsTo::currentBestReverseNodeMapping</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a05aa807f21f311eb50ff11dde98b8d22"> 24</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a05aa807f21f311eb50ff11dde98b8d22">PointsTo::PointsTo</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; : type(<a class="code" href="classSVF_1_1Options.html">Options</a>::PtType), nodeMapping(currentBestNodeMapping),</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; reverseNodeMapping(currentBestReverseNodeMapping)</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>) <a class="code" href="namespaceSVF.html#ab6cf2115b54ef7135b031efc2f112b54">SparseBitVector</a>();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>) <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>) <a class="code" href="classSVF_1_1BitVector.html">BitVector</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::PointsTo: unknown type&quot;</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#acef2d3e41263aef641c3411e28ad445c"> 34</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a05aa807f21f311eb50ff11dde98b8d22">PointsTo::PointsTo</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;pt)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; : <a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a>), <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>),</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>) <a class="code" href="namespaceSVF.html#ab6cf2115b54ef7135b031efc2f112b54">SparseBitVector</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>) <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>) <a class="code" href="classSVF_1_1BitVector.html">BitVector</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::PointsTo&amp;: unknown type&quot;</span>);</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"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a5ecef616428a70e8e7726406dfb43544"> 44</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a05aa807f21f311eb50ff11dde98b8d22">PointsTo::PointsTo</a>(<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;&amp;pt)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; : <a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a>), <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>(pt.<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>)</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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>) <a class="code" href="namespaceSVF.html#ab6cf2115b54ef7135b031efc2f112b54">SparseBitVector</a>(std::move(pt.sbv));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>) <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>(std::move(pt.cbv));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>) <a class="code" href="classSVF_1_1BitVector.html">BitVector</a>(std::move(pt.bv));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::PointsTo&amp;&amp;: unknown type&quot;</span>);</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_1PointsTo.html#a2a12ab349a01314b0d7b4074a0c28677"> 54</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a2a12ab349a01314b0d7b4074a0c28677">PointsTo::~PointsTo</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.~SparseBitVector();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.~CoreBitVector();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.~BitVector();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::~PointsTo: unknown type&quot;</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#a269d334618e4acc7e739317fd58d7fe7"> 65</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1PointsTo.html#a269d334618e4acc7e739317fd58d7fe7">PointsTo::operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> = rhs.<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> = rhs.<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a> = rhs.<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// Placement new because if type has changed, we have</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">// not constructed the new type yet.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>) <a class="code" href="namespaceSVF.html#ab6cf2115b54ef7135b031efc2f112b54">SparseBitVector</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>) <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>) <a class="code" href="classSVF_1_1BitVector.html">BitVector</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::PointsTo=&amp;: unknown type&quot;</span>);</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; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#ab06c71c3d1ab7ef2a67fc00b42f4be72"> 80</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1PointsTo.html#a269d334618e4acc7e739317fd58d7fe7">PointsTo::operator=</a>(<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;&amp;rhs)</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; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> = rhs.type;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> = rhs.nodeMapping;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a> = rhs.reverseNodeMapping;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">// See comment in copy assignment.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>) <a class="code" href="namespaceSVF.html#ab6cf2115b54ef7135b031efc2f112b54">SparseBitVector</a>(std::move(rhs.sbv));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>) <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>(std::move(rhs.cbv));</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>) <a class="code" href="classSVF_1_1BitVector.html">BitVector</a>(std::move(rhs.bv));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::PointsTo=&amp;&amp;: unknown type&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b"> 94</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">PointsTo::empty</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a98b9795b4fdc74d9d2efa9a3f2ecb62f">empty</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.empty();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a98b9795b4fdc74d9d2efa9a3f2ecb62f">empty</a>();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::empty: unknown type&quot;</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d"> 106</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">PointsTo::count</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#abfed2e7daf2407e11cade625ac19a6ce">count</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.count();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#abfed2e7daf2407e11cade625ac19a6ce">count</a>();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::count: unknown type&quot;</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#acb5af4139d42dcd19c6327520f074e91"> 117</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#acb5af4139d42dcd19c6327520f074e91">PointsTo::clear</a>(<span class="keywordtype">void</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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a1e523bab1013a9f3e9eaea56e53afa58">clear</a>();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.clear();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a1e523bab1013a9f3e9eaea56e53afa58">clear</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::clear: unknown type&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f"> 125</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">PointsTo::test</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> n)<span class="keyword"> const</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; n = <a class="code" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863">getInternalNode</a>(n);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a7b20ffd3cd4a0ffc48a1348f657deaa0">test</a>(n);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.test(n);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a7b20ffd3cd4a0ffc48a1348f657deaa0">test</a>(n);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::test: unknown type&quot;</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;}</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf"> 137</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">PointsTo::test_and_set</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> n)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; n = <a class="code" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863">getInternalNode</a>(n);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a3299b296d20d2b76c6538ba51a684972">test_and_set</a>(n);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.test_and_set(n);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a3299b296d20d2b76c6538ba51a684972">test_and_set</a>(n);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::test_and_set: unknown type&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa"> 149</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">PointsTo::set</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> n)</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"> 151</span>&#160; n = <a class="code" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863">getInternalNode</a>(n);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a553e3e51bffe1aab04adc047e0fd3f24">set</a>(n);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.set(n);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a553e3e51bffe1aab04adc047e0fd3f24">set</a>(n);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::set: unknown type&quot;</span>);</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;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6"> 158</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6">PointsTo::reset</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> n)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; n = <a class="code" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863">getInternalNode</a>(n);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a42fc777d574db4ef23b02308b944a85b">reset</a>(n);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.reset(n);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a42fc777d574db4ef23b02308b944a85b">reset</a>(n);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::reset: unknown type&quot;</span>);</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;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#ab31a53693fe070767b8de74e88091cd8"> 167</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#ab31a53693fe070767b8de74e88091cd8">PointsTo::contains</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::contains: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#af08c16aed45dfa65472f0b5ae518add2">contains</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.contains(rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#af08c16aed45dfa65472f0b5ae518add2">contains</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::contains: unknown type&quot;</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</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;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d"> 180</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">PointsTo::intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersects: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a15be4ce7e9a07d9b01da0c60d51b22de">intersects</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.intersects(rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a15be4ce7e9a07d9b01da0c60d51b22de">intersects</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersects: unknown type&quot;</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;}</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a12883234179873d279e72e5947aad836"> 193</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classSVF_1_1PointsTo.html#a12883234179873d279e72e5947aad836">PointsTo::find_first</a>(<span class="keywordtype">void</span>)</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="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() == 0) <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> *<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a6b29626e4e4298943d2ad839f06db83e"> 199</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a6b29626e4e4298943d2ad839f06db83e">PointsTo::operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::==: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a> == rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a> == rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a> == rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::==: unknown type&quot;</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</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_1PointsTo.html#a888f05fe8da4b95c44226f3c69469c75"> 212</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a888f05fe8da4b95c44226f3c69469c75">PointsTo::operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)<span class="keyword"> const</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; <span class="comment">// TODO: we&#39;re asserting and checking twice... should be okay...</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::!=: mappings of operands do not match!&quot;</span>);</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"> 217</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;}</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#aa8644057ec182382e3c34e90d7d61ade"> 220</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#aa8644057ec182382e3c34e90d7d61ade">PointsTo::operator|=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</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"> 222</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::|=: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a> |= rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a> |= rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a> |= rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::|=: unknown type&quot;</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</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_1PointsTo.html#a687b34cac3c43dd957b86a4833a24871"> 233</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#aa8644057ec182382e3c34e90d7d61ade">PointsTo::operator|=</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;rhs)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;{</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// TODO:</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n : rhs)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (changed) <span class="keyword">set</span>(n);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">else</span> changed = <a class="code" href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">test_and_set</a>(n);</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"> 243</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;}</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a164aced0d6a19dd7ba8124ec2e77674c">PointsTo::operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</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"> 248</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::&amp;=: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a> &amp;= rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a> &amp;= rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a> &amp;= rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::&amp;=: unknown type&quot;</span>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#a21244b7b04d6aa01787a11d116bc9952"> 259</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a21244b7b04d6aa01787a11d116bc9952">PointsTo::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;{</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::-=: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.intersectWithComplement(rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::-=: unknown type&quot;</span>);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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"> 270</span>&#160;}</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd"> 272</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">PointsTo::intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;{</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersectWithComplement: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.intersectWithComplement(rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersectWithComplement(PT): unknown type&quot;</span>);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;}</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#adec2e2fc87c2bb9b3ff8873b04abf31d"> 284</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">PointsTo::intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;{</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(rhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersectWithComplement: mappings of operands do not match!&quot;</span>);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">metaSame</a>(lhs) &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersectWithComplement: mappings of operands do not match!&quot;</span>);</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"> 289</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(lhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>, rhs.<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>) <a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.intersectWithComplement(lhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>, rhs.<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(lhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>, rhs.<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::intersectWithComplement(PT, PT): unknown type&quot;</span>);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#ae4749cf6dc43645e2479cefbcc246637"> 298</a></span>&#160;<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1PointsTo.html#ae4749cf6dc43645e2479cefbcc246637">PointsTo::toNodeBS</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> nbs;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : *<span class="keyword">this</span>) nbs.set(o);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> nbs;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo.html#afe275b31ea93a3ecea4e19660ceef0ae"> 305</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classSVF_1_1PointsTo.html#afe275b31ea93a3ecea4e19660ceef0ae">PointsTo::hash</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923ea0397c2678894d1792fcd3432a7aa64fb">CBV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#af979ecb48d3d5296bce5bd0b4676e359">hash</a>();</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SBV</a>)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; std::hash&lt;SparseBitVector&gt; h;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> h(<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == <a class="code" href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eafd6e0658d0eb4cdba368fa8e77d4d892">BV</a>) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#af979ecb48d3d5296bce5bd0b4676e359">hash</a>();</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsTo::hash: unknown type&quot;</span>);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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;}</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a06b981a2b7b04549f494dffde974c56d"> 321</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> <a class="code" href="classSVF_1_1PointsTo.html#a06b981a2b7b04549f494dffde974c56d">PointsTo::getNodeMapping</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863"> 326</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointsTo.html#aeda7466cdd9f77978981e2a518baa863">PointsTo::getInternalNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n)<span class="keyword"> const</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> == <span class="keyword">nullptr</span>) <span class="keywordflow">return</span> n;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(n &lt; nodeMapping-&gt;size());</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a>-&gt;at(n);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;}</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a80a3caf74c138b3833c79622fef7b626"> 333</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointsTo.html#a80a3caf74c138b3833c79622fef7b626">PointsTo::getExternalNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n)<span class="keyword"> const</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a> == <span class="keyword">nullptr</span>) <span class="keywordflow">return</span> n;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(n &lt; reverseNodeMapping-&gt;size());</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>-&gt;at(n);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;}</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec"> 340</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#aa1e773b7abda97441d6ffe39c668d4ec">PointsTo::metaSame</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;pt)<span class="keyword"> const</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> == pt.<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> &amp;&amp; <a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a> == pt.<a class="code" href="classSVF_1_1PointsTo.html#a1ae4abe690d21eb5aaf2154243b604c1">reverseNodeMapping</a>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;}</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a6c1885ddfcc72604463f7c4ea94d2f74"> 345</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> <a class="code" href="classSVF_1_1PointsTo.html#a6c1885ddfcc72604463f7c4ea94d2f74">PointsTo::getCurrentBestNodeMapping</a>(<span class="keywordtype">void</span>)</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"> 347</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a98781dd444ada40af7eef9aefe76123d">currentBestNodeMapping</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"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a40759008e0cf6f790d48727f7b0ca38b"> 350</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> <a class="code" href="classSVF_1_1PointsTo.html#a40759008e0cf6f790d48727f7b0ca38b">PointsTo::getCurrentBestReverseNodeMapping</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;{</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo.html#a53e1230c87912d26604990eb8b0cbc0c">currentBestReverseNodeMapping</a>;</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"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#a84eca4c7fc833f8ca4d119cd4da08ca8"> 355</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#a84eca4c7fc833f8ca4d119cd4da08ca8">PointsTo::setCurrentBestNodeMapping</a>(<a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">MappingPtr</a> newCurrentBestNodeMapping,</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">MappingPtr</a> newCurrentBestReverseNodeMapping)</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; <a class="code" href="classSVF_1_1PointsTo.html#a98781dd444ada40af7eef9aefe76123d">currentBestNodeMapping</a> = newCurrentBestNodeMapping;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html#a53e1230c87912d26604990eb8b0cbc0c">currentBestReverseNodeMapping</a> = newCurrentBestReverseNodeMapping;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;}</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo.html#ac630a1bfa028240f9128e3b60d9413a4"> 362</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointsTo.html#ac630a1bfa028240f9128e3b60d9413a4">PointsTo::checkAndRemap</a>(<span class="keywordtype">void</span>)</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"> 364</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo.html#acd7eab32125de90020c55c757d6adfda">nodeMapping</a> != <a class="code" href="classSVF_1_1PointsTo.html#a98781dd444ada40af7eef9aefe76123d">currentBestNodeMapping</a>)</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="comment">// newPt constructed with correct node mapping.</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> newPt;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : *<span class="keyword">this</span>) newPt.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(o);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; *<span class="keyword">this</span> = std::move(newPt);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;}</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ad9efcd9fb0c8201b9166a1560d06a71b"> 373</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a3974dee7680da3a43b58932766e77a16">PointsTo::PointsToIterator::PointsToIterator</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> *pt, <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; : pt(pt)</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span> (pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::CBV)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVector::iterator</a>(end ? pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>() : pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a835bf11a1f698942db8e6bdadbbfd1f3">begin</a>());</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"> 380</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::SBV)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>) SparseBitVector::iterator(end ? pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.end() : pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.begin());</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::BV)</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">BitVector::iterator</a>(end ? pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>() : pt-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a835bf11a1f698942db8e6bdadbbfd1f3">begin</a>());</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::PointsToIterator: unknown type&quot;</span>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;}</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a19f371ccb5b1c84fb4adfd5b0c8a3eec"> 395</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a3974dee7680da3a43b58932766e77a16">PointsTo::PointsToIterator::PointsToIterator</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; : pt(pt.pt)</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"> 398</span>&#160; <span class="keywordflow">if</span> (this-&gt;pt-&gt;type == PointsTo::Type::SBV)</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>) SparseBitVector::iterator(pt.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;pt-&gt;type == PointsTo::Type::CBV)</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"> 404</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVector::iterator</a>(pt.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;pt-&gt;type == PointsTo::Type::BV)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">BitVector::iterator</a>(pt.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::PointsToIterator&amp;: unknown type&quot;</span>);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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;}</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_1PointsTo_1_1PointsToIterator.html#abe128c47fb16093756195f789e5f68d5"> 416</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a3974dee7680da3a43b58932766e77a16">PointsTo::PointsToIterator::PointsToIterator</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; : <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>)</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;{</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::SBV)</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>) SparseBitVector::iterator(std::move(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>.sbvIt));</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::CBV)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVector::iterator</a>(std::move(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>.cbvIt));</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::BV)</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">BitVector::iterator</a>(std::move(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>.bvIt));</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::PointsToIterator&amp;&amp;: unknown type&quot;</span>);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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"> 435</span>&#160;}</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#acbbcff746f7f0dc37815e688e9172f21"> 437</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::PointsToIterator</a> &amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#acbbcff746f7f0dc37815e688e9172f21">PointsTo::PointsToIterator::operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;rhs)</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; this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a> = rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::SBV)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>) SparseBitVector::iterator(rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>);</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"> 445</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::CBV)</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVector::iterator</a>(rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>);</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::BV)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">BitVector::iterator</a>(rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::PointsToIterator&amp;: unknown type&quot;</span>);</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"> 455</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;}</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac35de79e5c5d48d7f8f6f22e8450a0f6"> 458</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::PointsToIterator</a> &amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#acbbcff746f7f0dc37815e688e9172f21">PointsTo::PointsToIterator::operator=</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;&amp;rhs)</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a> = rhs.pt;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::SBV)</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">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>) SparseBitVector::iterator(std::move(rhs.sbvIt));</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::CBV)</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVector::iterator</a>(std::move(rhs.cbvIt));</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == PointsTo::Type::BV)</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="keyword">new</span> (&amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>) <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">BitVector::iterator</a>(std::move(rhs.bvIt));</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; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::PointsToIterator&amp;&amp;: unknown type&quot;</span>);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a754d85d463ebdbecfaab41aac106f14f"> 479</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::PointsToIterator</a> &amp;<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a754d85d463ebdbecfaab41aac106f14f">PointsTo::PointsToIterator::operator++</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;{</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a049cecdc3aa76a31eacdbe48f6a820e7">atEnd</a>() &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::++(pre): incrementing past end!&quot;</span>);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::CBV) ++<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::SBV) ++<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::BV) ++<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">else</span> <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::++(void): unknown type&quot;</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;}</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a94a195a13777028d5af16985e3fd5b73"> 490</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::PointsToIterator</a> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a754d85d463ebdbecfaab41aac106f14f">PointsTo::PointsToIterator::operator++</a>(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;{</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a049cecdc3aa76a31eacdbe48f6a820e7">atEnd</a>() &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::++(pre): incrementing past end!&quot;</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> old = *<span class="keyword">this</span>;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; ++*<span class="keyword">this</span>;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> old;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;}</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a06c8e8c242c5de90c307665f589e3180"> 498</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a06c8e8c242c5de90c307665f589e3180">PointsTo::PointsToIterator::operator*</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a049cecdc3aa76a31eacdbe48f6a820e7">atEnd</a>() &amp;&amp; <span class="stringliteral">&quot;PointsToIterator: dereferencing end!&quot;</span>);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::CBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a80a3caf74c138b3833c79622fef7b626">getExternalNode</a>(*<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::SBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a80a3caf74c138b3833c79622fef7b626">getExternalNode</a>(*<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::BV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a80a3caf74c138b3833c79622fef7b626">getExternalNode</a>(*<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::*: unknown type&quot;</span>);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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"> 508</span>&#160;}</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aef4e1b40faa327f8bbf42a82df29c7b4"> 510</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aef4e1b40faa327f8bbf42a82df29c7b4">PointsTo::PointsToIterator::operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a> == rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::==: comparing iterators from different PointsTos!&quot;</span>);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">// Handles end implicitly.</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::CBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a> == rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a>;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::SBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a> == rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::BV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a> == rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a>;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::==: unknown type&quot;</span>);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</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="l00525"></a><span class="lineno"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa90476b4c0e75a256f8ff855f99ca970"> 525</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa90476b4c0e75a256f8ff855f99ca970">PointsTo::PointsToIterator::operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsToIterator</a> &amp;rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a> == rhs.<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::!=: comparing iterators from different PointsTos!&quot;</span>);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;}</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"><a class="line" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a049cecdc3aa76a31eacdbe48f6a820e7"> 532</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a049cecdc3aa76a31eacdbe48f6a820e7">PointsTo::PointsToIterator::atEnd</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a> != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::atEnd: iterator iterating over nothing!&quot;</span>);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::CBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a4db2c62eb3ad789ab7aaf7506cd340b2">cbvIt</a> == <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">cbv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>();</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::SBV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ac13245e140ab7c488c776b8dd97facf4">sbvIt</a> == <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aecd6b98c0687de59aebb297ec38a7084">sbv</a>.end();</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#aaa9c956187f2c04a7a242ce440d1416f">type</a> == Type::BV) <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aa420a44769d1c25e083975e3cd04d699">bvIt</a> == <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a8be3dd8b1e66eac8577bf16b7403c9c5">pt</a>-&gt;<a class="code" href="classSVF_1_1PointsTo.html#a668be9270539fdfc5dbf3efb9cc17587">bv</a>.<a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>();</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PointsToIterator::atEnd: unknown type&quot;</span>);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</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;}</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"><a class="line" href="namespaceSVF.html#aa01b96d5bc6c3930b0bfca789acf75c4"> 544</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="namespaceSVF.html#aa01b96d5bc6c3930b0bfca789acf75c4">operator|</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</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="comment">// TODO: optimise.</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = lhs;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; result |= rhs;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;}</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="namespaceSVF.html#aaa21ff095e66a18937f29246e213f69d"> 552</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="namespaceSVF.html#aaa21ff095e66a18937f29246e213f69d">operator&amp;</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;{</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">// TODO: optimise.</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = lhs;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; result &amp;= rhs;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;}</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a6c2f7ce4908d39a17b29830a2e4bd781"> 560</a></span>&#160;<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="namespaceSVF.html#a6c2f7ce4908d39a17b29830a2e4bd781">operator-</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;rhs)</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="comment">// TODO: optimise.</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = lhs;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; result -= rhs;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</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;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;}; <span class="comment">// namespace SVF</span></div><div class="ttc" id="classSVF_1_1PointsTo_html_a1161d97df5ffc8f11d1a34df9a4d5bdf"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">SVF::PointsTo::test_and_set</a></div><div class="ttdeci">bool test_and_set(u32_t n)</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00137">PointsTo.cpp:137</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1PointsTo_html_ae4749cf6dc43645e2479cefbcc246637"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ae4749cf6dc43645e2479cefbcc246637">SVF::PointsTo::toNodeBS</a></div><div class="ttdeci">NodeBS toNodeBS(void) const</div><div class="ttdoc">Returns this points-to set as a NodeBS. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00298">PointsTo.cpp:298</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1PointsTo_html_a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a8f757f92ebf0a2ebdb5e6b001606923eacccb6e19f3e8db5f5b5b8858b22da61a">SVF::PointsTo::SBV</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00032">PointsTo.h:32</a></div></div>
72
- <div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html_ab294d3378c283fff63e481db1bea3b4d"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html#ab294d3378c283fff63e481db1bea3b4d">SVF::PointsTo::PointsToIterator::operator*</a></div><div class="ttdeci">const u32_t operator*(void) const</div><div class="ttdoc">Dereference: *it. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00498">PointsTo.cpp:498</a></div></div>
73
72
  <div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html_aef4e1b40faa327f8bbf42a82df29c7b4"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html#aef4e1b40faa327f8bbf42a82df29c7b4">SVF::PointsTo::PointsToIterator::operator==</a></div><div class="ttdeci">bool operator==(const PointsToIterator &amp;rhs) const</div><div class="ttdoc">Equality: *this == rhs. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00510">PointsTo.cpp:510</a></div></div>
74
73
  <div class="ttc" id="classSVF_1_1CoreBitVector_html_a42fc777d574db4ef23b02308b944a85b"><div class="ttname"><a href="classSVF_1_1CoreBitVector.html#a42fc777d574db4ef23b02308b944a85b">SVF::CoreBitVector::reset</a></div><div class="ttdeci">void reset(u32_t bit)</div><div class="ttdoc">Resets bit in the CBV. </div><div class="ttdef"><b>Definition:</b> <a href="CoreBitVector_8cpp_source.html#l00095">CoreBitVector.cpp:95</a></div></div>
75
74
  <div class="ttc" id="classSVF_1_1PointsTo_html_a06b981a2b7b04549f494dffde974c56d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a06b981a2b7b04549f494dffde974c56d">SVF::PointsTo::getNodeMapping</a></div><div class="ttdeci">MappingPtr getNodeMapping(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00321">PointsTo.cpp:321</a></div></div>
@@ -117,6 +116,7 @@ $(function() {
117
116
  <div class="ttc" id="classSVF_1_1PointsTo_html_a6c1885ddfcc72604463f7c4ea94d2f74"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a6c1885ddfcc72604463f7c4ea94d2f74">SVF::PointsTo::getCurrentBestNodeMapping</a></div><div class="ttdeci">static MappingPtr getCurrentBestNodeMapping(void)</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00345">PointsTo.cpp:345</a></div></div>
118
117
  <div class="ttc" id="PointsTo_8h_html"><div class="ttname"><a href="PointsTo_8h.html">PointsTo.h</a></div></div>
119
118
  <div class="ttc" id="classSVF_1_1PointsTo_html_a05aa807f21f311eb50ff11dde98b8d22"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a05aa807f21f311eb50ff11dde98b8d22">SVF::PointsTo::PointsTo</a></div><div class="ttdeci">PointsTo(void)</div><div class="ttdoc">Construct empty points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00024">PointsTo.cpp:24</a></div></div>
119
+ <div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html_a06c8e8c242c5de90c307665f589e3180"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html#a06c8e8c242c5de90c307665f589e3180">SVF::PointsTo::PointsToIterator::operator*</a></div><div class="ttdeci">u32_t operator*(void) const</div><div class="ttdoc">Dereference: *it. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00498">PointsTo.cpp:498</a></div></div>
120
120
  <div class="ttc" id="classSVF_1_1PointsTo_html_a79333c4ae5c002d9632fa589956b3605"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a79333c4ae5c002d9632fa589956b3605">SVF::PointsTo::cbv</a></div><div class="ttdeci">CoreBitVector cbv</div><div class="ttdoc">Core bit vector backing. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00161">PointsTo.h:161</a></div></div>
121
121
  <div class="ttc" id="classSVF_1_1CoreBitVector_html_af08c16aed45dfa65472f0b5ae518add2"><div class="ttname"><a href="classSVF_1_1CoreBitVector.html#af08c16aed45dfa65472f0b5ae518add2">SVF::CoreBitVector::contains</a></div><div class="ttdeci">bool contains(const CoreBitVector &amp;rhs) const</div><div class="ttdoc">Returns true if this CBV is a superset of rhs. </div><div class="ttdef"><b>Definition:</b> <a href="CoreBitVector_8cpp_source.html#l00103">CoreBitVector.cpp:103</a></div></div>
122
122
  <div class="ttc" id="classSVF_1_1CoreBitVector_html_a93cdd9890522cc9fee2451567e0b1f0d"><div class="ttname"><a href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">SVF::CoreBitVector::end</a></div><div class="ttdeci">const_iterator end(void) const</div><div class="ttdef"><b>Definition:</b> <a href="CoreBitVector_8cpp_source.html#l00308">CoreBitVector.cpp:308</a></div></div>