svf-tools 1.0.592 → 1.0.593

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.
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">ConditionalPT.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="ConditionalPT_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- ConditionalPT.h -- Conditional points-to data structure----------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</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="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * ConditionalPT.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: 22/03/2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef CONDVAR_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define CONDVAR_H_</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;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</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="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</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;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Cond&gt;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondVar.html">CondVar</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a0999a4b34face00af83b3b840920fd3f"> 49</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a0999a4b34face00af83b3b840920fd3f">CondVar</a>(<span class="keyword">const</span> Cond&amp; cond, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>) : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(cond),<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(id)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#afd729e068419ed45bb9da8d5920f8674"> 53</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#afd729e068419ed45bb9da8d5920f8674">CondVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; conVar) : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(conVar.<a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>), <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(conVar.<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69"> 57</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>() : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(), <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(0) {}</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#aad76f894d96617fb153cff0c875899a6"> 59</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#aad76f894d96617fb153cff0c875899a6">~CondVar</a>() {}</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a7faf827845c5e820f1b63ce6523bc2a9">operator == </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> == rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>() &amp;&amp; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> == rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0"> 70</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0">operator != </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</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"><a class="line" href="classSVF_1_1CondVar.html#a90d6c2204c92db5c78991e6dfdcc5c80"> 77</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; <a class="code" href="classSVF_1_1CondVar.html#a90d6c2204c92db5c78991e6dfdcc5c80">operator= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; rhs)</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; <span class="keywordflow">if</span>(*<span class="keyword">this</span>!=rhs)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> = rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> = rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#add10a9d6f6a49cbd5dd0f5d47c423d27"> 91</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#add10a9d6f6a49cbd5dd0f5d47c423d27">operator &lt; </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> != rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>())</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> &lt; rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> &lt; rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe"> 99</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> Cond&amp; <a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</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"><a class="line" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a"> 103</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a4baf5fb20288491c96827177f9965cc4"> 108</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondVar.html#a4baf5fb20288491c96827177f9965cc4">toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&lt;&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>.toString() &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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"><a class="line" href="classSVF_1_1CondVar.html#a01eb971ccd4ac623fa3cd9bb41cc696d"> 116</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>&amp; operator&lt;&lt; (OutStream &amp;o, const CondVar&lt;Cond&gt; &amp;cvar)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; o &lt;&lt; cvar.toString();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df"> 122</a></span>&#160; Cond <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a"> 123</a></span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>;</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"> 125</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Element&gt;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html"> 130</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet</a></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;{</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3fcc7079d72b0b392731ae7bf1ef2939"> 132</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;</a> <a class="code" href="classSVF_1_1CondStdSet.html#a3fcc7079d72b0b392731ae7bf1ef2939">ElementSet</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a6d82b5ddafa28542ce65adb0cc56cdce"> 135</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;::iterator</a> <a class="code" href="classSVF_1_1CondStdSet.html#a6d82b5ddafa28542ce65adb0cc56cdce">iterator</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a55152b7749868cc25f1c3c33ea57a650"> 136</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;::const_iterator</a> <a class="code" href="classSVF_1_1CondStdSet.html#a55152b7749868cc25f1c3c33ea57a650">const_iterator</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a1f3e8aa09ca8e7f252525e35c4886c5b"> 138</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#a1f3e8aa09ca8e7f252525e35c4886c5b">CondStdSet</a>() {}</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#abc67e77de2d1363af92c3bca2ccccbf1"> 139</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#abc67e77de2d1363af92c3bca2ccccbf1">~CondStdSet</a>() {}</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3f1885562bb34c3ccbd15117788725e0"> 142</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#a3f1885562bb34c3ccbd15117788725e0">CondStdSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; cptsSet) : elements(cptsSet.getElementSet())</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3e72341580263f3a9b48ce0e8c7bbbec"> 147</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a3e72341580263f3a9b48ce0e8c7bbbec">test_and_set</a>(<span class="keyword">const</span> Element&amp; var)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> elements.insert(var).second;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a6bf6fafc6f8391dbff08a6bd9d07f4d4"> 152</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a6bf6fafc6f8391dbff08a6bd9d07f4d4">test</a>(<span class="keyword">const</span> Element&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> (elements.find(var) != elements.end());</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#ae11deddad534be115d29daad08c90599"> 157</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keyword">const</span> Element&amp; var)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; elements.insert(var);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a857396d9e820a9fab8a498d981855e2a"> 162</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a857396d9e820a9fab8a498d981855e2a">reset</a>(<span class="keyword">const</span> Element&amp; var)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; elements.erase(var);</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="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76"> 169</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> elements.empty();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b"> 173</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b">size</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> elements.size();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#aa19e82905537f3ae41f64fce070ee555"> 177</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondStdSet.html#aa19e82905537f3ae41f64fce070ee555">count</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> size();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a4c49e2964276825744ffce26fc43ec36"> 184</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a4c49e2964276825744ffce26fc43ec36">clear</a>()</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; elements.clear();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</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"><a class="line" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038"> 191</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>()</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"> 193</span>&#160; <span class="keywordflow">return</span> elements.begin();</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"><a class="line" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3"> 195</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>()</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> elements.end();</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_1CondStdSet.html#a76fb2382bf424638ed8e03cb48cdc90e"> 199</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#a76fb2382bf424638ed8e03cb48cdc90e">begin</a>()<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; <span class="keywordflow">return</span> elements.begin();</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"><a class="line" href="classSVF_1_1CondStdSet.html#accc5305781696701c00245ed1e8a25a3"> 203</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#accc5305781696701c00245ed1e8a25a3">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> elements.end();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</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"><a class="line" href="classSVF_1_1CondStdSet.html#a90e4c4ead1cbdca01c0be801a68b005b"> 211</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a90e4c4ead1cbdca01c0be801a68b005b">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keyword">const</span> ElementSet&amp; rhsElementSet = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">if</span>(rhsElementSet.empty() || (*<span class="keyword">this</span>==rhs))</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oldSize = elements.size();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; elements.insert(rhsElementSet.begin(),rhsElementSet.end());</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> oldSize!=elements.size();</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_1CondStdSet.html#abb97324d865818f0a51992ee86d1c5ad"> 220</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a9d6c986a34096a3552a6385ccbb724e4">operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</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; <span class="keywordflow">if</span>(rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>() || (*<span class="keyword">this</span> == rhs))</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">for</span> (const_iterator i = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(); i != rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>(); ++i)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (elements.find(*i) == elements.end())</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; elements.erase(*i);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; changed = <span class="keyword">true</span>;</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"> 233</span>&#160; <span class="keywordflow">return</span> changed;</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"><a class="line" href="classSVF_1_1CondStdSet.html#a060a01d33fcd5ed4dfcaecb3d24cda07"> 235</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a060a01d33fcd5ed4dfcaecb3d24cda07">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> elements!=rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</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"><a class="line" href="classSVF_1_1CondStdSet.html#a6697d9c3d1107db2be430b8e8b670cb5"> 239</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a6697d9c3d1107db2be430b8e8b670cb5">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> ((*<span class="keyword">this</span> != rhs) == <span class="keyword">false</span>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a9fa868a473993d0244431d640799ce98"> 243</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; <a class="code" href="classSVF_1_1CondStdSet.html#a9fa868a473993d0244431d640799ce98">operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)</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; <span class="keywordflow">if</span>(*<span class="keyword">this</span>!=rhs)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; elements = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#ad3c38bb031419dd583a9cb0314e76afd"> 251</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&lt;(const CondStdSet&lt;Element&gt;&amp; rhs) <span class="keyword">const</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> elements &lt; rhs.getElementSet();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#ac422c3fb8bce1378d69c234e6b11fdb1"> 260</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#ac422c3fb8bce1378d69c234e6b11fdb1">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (empty() &amp;&amp; rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>())</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">for</span> (const_iterator i = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(); i != rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>(); ++i)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span> (elements.find(*i) != elements.end())</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a07267b0a4f7cfeaa6d1f7d722932c4d5"> 273</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondStdSet.html#a07267b0a4f7cfeaa6d1f7d722932c4d5">toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">for</span> (const_iterator i = elements.begin(); i != elements.end(); ++i)</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; rawstr &lt;&lt; (*i).toString() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;} &quot;</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</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"><a class="line" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320"> 286</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> ElementSet&amp; <a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> elements;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a347097404761b16a077eac1ae9fbfd94"> 292</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a347097404761b16a077eac1ae9fbfd94">checkAndRemap</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a1caece9a66b6617b89037fd8211f2934"> 295</a></span>&#160; ElementSet <a class="code" href="classSVF_1_1CondStdSet.html#a1caece9a66b6617b89037fd8211f2934">elements</a>;</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"> 298</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Cond&gt;</div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html"> 303</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet</a></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;{</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aaddc3f78a624de59dda6f078ba63ba52"> 306</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Cond, PointsTo&gt;</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#aaddc3f78a624de59dda6f078ba63ba52">CondPts</a>;</div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077"> 307</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> CondPts::iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPtsIter</a>;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aa9d3a8c42b6df3fa9c2e7bcd7af75e16"> 308</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> CondPts::const_iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#aa9d3a8c42b6df3fa9c2e7bcd7af75e16">CondPtsConstIter</a>;</div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a0ef73bd2c1b42439ee6f265e07f17514"> 309</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar&lt;Cond&gt;</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#a0ef73bd2c1b42439ee6f265e07f17514">SingleCondVar</a>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a3670dc2bb046f2d3e0d27dc02b32e62f"> 313</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#a3670dc2bb046f2d3e0d27dc02b32e62f">CondPointsToSet</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; }</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a7217769c21c50c44f139006ec44d3a6f"> 316</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#a7217769c21c50c44f139006ec44d3a6f">CondPointsToSet</a>(<span class="keyword">const</span> Cond&amp; cond, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; _condPts[cond] |= pts;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aad144061d006968ff4d6d21488b84801"> 323</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#aad144061d006968ff4d6d21488b84801">CondPointsToSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cptsSet)</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"> 326</span>&#160; _condPts = cptsSet.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac"> 331</a></span>&#160; <span class="keyword">inline</span> CondPts &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(<span class="keywordtype">void</span>)</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"> 333</span>&#160; <span class="keywordflow">return</span> _condPts;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ada240bc77570174a1d17ac097583fa78"> 335</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CondPts &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#ada240bc77570174a1d17ac097583fa78">pointsTo</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> _condPts;</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a03311162626acf16ad05b7b93248a92b"> 339</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a03311162626acf16ad05b7b93248a92b">pointsTo</a>(Cond cond)<span class="keyword"> const</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; CondPtsConstIter it = _condPts.find(cond);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; assert(it!=_condPts.end() &amp;&amp; <span class="stringliteral">&quot;do not have pts of such condition!&quot;</span>);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</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_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0"> 345</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(Cond cond)<span class="keyword"> const</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> (_condPts.find(cond) != _condPts.end());</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a8775ef2c073af6c8055c3f5b0035288f"> 349</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a8775ef2c073af6c8055c3f5b0035288f">pointsTo</a>(Cond cond)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span> _condPts[cond];</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3"> 357</a></span>&#160; <span class="keyword">inline</span> CondPtsIter <a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>()</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">return</span> _condPts.begin();</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea"> 361</a></span>&#160; <span class="keyword">inline</span> CondPtsIter <a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>()</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">return</span> _condPts.end();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad26570b94c56d6d2ae1cd5093ac66670"> 365</a></span>&#160; <span class="keyword">inline</span> CondPtsConstIter <a class="code" href="classSVF_1_1CondPointsToSet.html#ad26570b94c56d6d2ae1cd5093ac66670">cptsBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> _condPts.begin();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aa4c47630b9a06d70375daf5e9237303d"> 369</a></span>&#160; <span class="keyword">inline</span> CondPtsConstIter <a class="code" href="classSVF_1_1CondPointsToSet.html#aa4c47630b9a06d70375daf5e9237303d">cptsEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">return</span> _condPts.end();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad81774f0ad13fb21579180fc15affd7b"> 375</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad81774f0ad13fb21579180fc15affd7b">clear</a>()</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; _condPts.clear();</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a8d8f9e91b62b94d876f34066de7944d4"> 381</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a8d8f9e91b62b94d876f34066de7944d4">numElement</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> (_condPts.empty())</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordtype">unsigned</span> num = 0;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">for</span> (CondPtsConstIter it = cptsBegin(); it != cptsEnd(); it++)</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="classSVF_1_1PointsTo.html">PointsTo</a> pts = it-&gt;second;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; num += pts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</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; <span class="keywordflow">return</span> num;</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"> 395</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff"> 397</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff">empty</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> numElement()==0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</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;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a42056d7b29e50a3ed8a8db95674d24b2"> 405</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; <a class="code" href="classSVF_1_1CondPointsToSet.html#a42056d7b29e50a3ed8a8db95674d24b2">operator=</a>(</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; other)</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; _condPts = other.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#abe02e0bdcfddde7251b7d35e916c8f02"> 413</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#abe02e0bdcfddde7251b7d35e916c8f02">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="comment">// Always remember give the typename when define a template variable</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() != rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().size())</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), erit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">for</span> (; lit != elit &amp;&amp; rit != erit; ++lit, ++rit)</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> Cond&amp; rc = rit-&gt;first;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">if</span> (lc != rc || lit-&gt;second != rit-&gt;second)</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#afcbb2cae75a5dd7947cb22c440b8fd0b"> 433</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#afcbb2cae75a5dd7947cb22c440b8fd0b">aliased</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">if</span> (pointsTo().empty() || rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">else</span></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; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">for</span> (; lit != elit; ++lit)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = lit-&gt;second;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().find(lc);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span>(rit !=rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().end())</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">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">intersects</a>(rpts))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#acefec4fbacde1099d3dc81ab45ab9b8c"> 457</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#acefec4fbacde1099d3dc81ab45ab9b8c">isSubset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() &gt; rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().size())</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">for</span> (; lit != elit; ++lit)</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="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().find(lc);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">if</span> (rit == rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().end())</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">else</span></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">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = lit-&gt;second;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (!rpts.<a class="code" href="classSVF_1_1PointsTo.html#ab31a53693fe070767b8de74e88091cd8">contains</a>(pts))</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</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"> 479</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</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;</div><div class="line"><a name="l00483"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a89d24257bd1436286dcbb025dd405b52"> 483</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a89d24257bd1436286dcbb025dd405b52">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>* rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (pointsTo().empty() &amp;&amp; rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</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; CondPtsConstIter it = rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), eit = rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</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; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(cond))</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rhs_pts= it-&gt;second;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts= pointsTo(cond);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">intersects</a>(rhs_pts))</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a57fdbfc5bc0bc7eb7a8efefdcc689852"> 506</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a57fdbfc5bc0bc7eb7a8efefdcc689852">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts2)</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; <span class="keywordflow">if</span> (cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</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"> 510</span>&#160; clear();</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</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; (*this) = cpts1;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; CondPtsConstIter it1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), eit1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">for</span> (; it1 != eit1; ++it1)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it1-&gt;first;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts1 = it1-&gt;second;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(cond);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">if</span> (cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts2 = cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">intersectWithComplement</a>(pts1, pts2);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; pts = pts1;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a5a7ab3c22b3726541955b5be8a62aab6"> 539</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a5a7ab3c22b3726541955b5be8a62aab6">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts1)</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span> (empty() || cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; CondPtsIter it = cptsBegin(), eit = cptsEnd();</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</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; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">if</span> (cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">intersectWithComplement</a>(pts1);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</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"> 560</span>&#160; }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ab86fdf68183d05f66e1405c6346038c4"> 563</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a9d6c986a34096a3552a6385ccbb724e4">operator &amp;= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (empty())</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff">empty</a>())</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; clear();</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">for</span> (CondPtsIter it = cptsBegin(), eit = cptsEnd(); it != eit; ++it)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">if</span> (rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (pts &amp;= rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond))</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">if</span> (!pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#acb5af4139d42dcd19c6327520f074e91">clear</a>();</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#af06ca0ddfcdca69199fbc9ab42f98558"> 600</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#af06ca0ddfcdca69199fbc9ab42f98558">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;</div><div class="line"><a name="l00609"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a74c50cfaf788a828a4fc97eba703ec4e"> 609</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a97ff28f5dfd5c31e6ef351de3cdad85d">operator |= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; CondPtsConstIter rhsIt = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>();</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; CondPtsConstIter rhsEit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">for</span> (; rhsIt != rhsEit; ++rhsIt)</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keyword">const</span> Cond&amp; cond = rhsIt-&gt;first;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rhsPts = rhsIt-&gt;second;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(cond);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">if</span> ((pts |= rhsPts))</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; }</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="comment">// TODO: try to use an efficient method to compare two conditional points-to set.</span></div><div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a54d9d3f3a38bf4066cd930845f86a63c"> 633</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&lt; (const CondPointsToSet&lt;Cond&gt;&amp; rhs) <span class="keyword">const</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() &lt; rhs.pointsTo().size())</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pointsTo().size() == rhs.pointsTo().size())</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; CondPtsConstIter rit = rhs.cptsBegin(), erit = rhs.cptsEnd();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">for</span> (; lit != elit &amp;&amp; rit != erit; ++lit, ++rit)</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keyword">const</span> Cond&amp; rc = rit-&gt;first;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">if</span> (lc &lt; rc)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lc == rc)</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; lpts = lit-&gt;second;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() &lt; rpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>())</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() == rpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>())</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> bit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>();</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> eit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> rbit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>();</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> reit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">for</span> (; bit != eit &amp;&amp; rbit != reit; bit++, rbit++)</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (*bit &lt; *rbit)</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*bit &gt; *rbit)</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; }</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ac29ac1adefca6b34cd8e83fe3f0b4450"> 679</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ac29ac1adefca6b34cd8e83fe3f0b4450">test_and_set</a>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">test_and_set</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div><div class="line"><a name="l00684"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a1613b690473a4fcbae7bc41c3c5347d7"> 684</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a1613b690473a4fcbae7bc41c3c5347d7">test</a>(<span class="keyword">const</span> SingleCondVar&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()))</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div><div class="line"><a name="l00693"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aadf2576b55bbdb82d7affc8466c09861"> 693</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; {</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.get_cond());</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(var.get_id());</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div><div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aced740c1aadf06b4a63630844fac2dd8"> 698</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#aced740c1aadf06b4a63630844fac2dd8">reset</a>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()))</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6">reset</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="comment">// Print all points-to targets</span></div><div class="line"><a name="l00710"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a52392deae4011c4353a259c873efc0d6"> 710</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a52392deae4011c4353a259c873efc0d6">dump</a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O)<span class="keyword"> const</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; CondPtsConstIter it = cptsBegin();</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; CondPtsConstIter eit = cptsEnd();</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">for</span> (; it != eit; it++)</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;pts{&quot;</span>;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVFUtil::dumpSet</a>(pts, O);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; }</div><div class="line"><a name="l00722"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#abcd2c01ec21e30caa91dba06386912cb"> 722</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#abcd2c01ec21e30caa91dba06386912cb">dumpStr</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; CondPtsConstIter it = cptsBegin();</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; CondPtsConstIter eit = cptsEnd();</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">for</span> (; it != eit; it++)</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; str += <span class="stringliteral">&quot;pts{&quot;</span>;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> ii = pts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), ie = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordtype">char</span> int2str[16];</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; sprintf(int2str, <span class="stringliteral">&quot;%d&quot;</span>, *ii);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; str += int2str;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; str += <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; }</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; str += <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; }</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; }</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html"> 748</a></span>&#160; <span class="keyword">class </span><a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00751"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a8a3d10d0aaf4708e7e44bedc6be077e0"> 751</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a8a3d10d0aaf4708e7e44bedc6be077e0">CondPtsSetIterator</a>(<a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a> &amp;<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <span class="keywordtype">bool</span> ae = <span class="keyword">false</span>)</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; : _curIter(n.cptsBegin()), _endIter(n.cptsEnd()),</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; _ptIter(_curIter-&gt;second.begin()), _ptEndIter(_curIter-&gt;second.end()), atEnd(ae) {}</div><div class="line"><a name="l00754"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a24ccc2dba1da8e241a595c84dde840ab"> 754</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a24ccc2dba1da8e241a595c84dde840ab">~CondPtsSetIterator</a>() {}</div><div class="line"><a name="l00755"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a4b1e8adca9e8d1b046930e9d2abeb08f"> 755</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0">operator != </a>(<span class="keywordtype">int</span> val)</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">return</span> _curIter != _endIter;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ab069959f9b4b2a0e1441281acb666a60"> 761</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ab069959f9b4b2a0e1441281acb666a60">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> &amp;RHS)<span class="keyword"> const</span></div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="comment">// If they are both at the end, ignore the rest of the fields.</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span> (atEnd &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a>)</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="comment">// Otherwise they are the same if they have the same condVar</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">return</span> atEnd == RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a> &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae">_curIter</a> == _curIter &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9">_ptIter</a> == _ptIter;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div><div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a82068bca4dfc43402625638dcd1b9775"> 769</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a82068bca4dfc43402625638dcd1b9775">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> &amp;RHS)<span class="keyword"> const</span></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == RHS);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div><div class="line"><a name="l00774"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#abd22ed3c5dc9f35968c9a179d292b764"> 774</a></span>&#160; <span class="keywordtype">void</span> operator ++(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span>(atEnd == <span class="keyword">true</span>)</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span>(_ptIter==_ptEndIter)</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">if</span>(_curIter == _endIter)</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; {</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; atEnd = <span class="keyword">true</span>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; }</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; _curIter++;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; _ptIter = _curIter-&gt;second.begin();</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; _ptIter = _curIter-&gt;second.end();</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; _ptIter++;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; }</div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#aaaed8caef122453b5ff543826e1757e0"> 793</a></span>&#160; SingleCondVar operator *(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; SingleCondVar temp_var(cond(), *_ptIter);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">return</span> temp_var;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a3ccbb22634968d2fca0f6aba7b57971e"> 800</a></span>&#160; Cond <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a3ccbb22634968d2fca0f6aba7b57971e">cond</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; {</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">return</span> _curIter-&gt;first;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae"> 806</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPointsToSet&lt;Cond&gt;::CondPtsIter</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae">_curIter</a>;</div><div class="line"><a name="l00807"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a9ffed93e0d4ae4b1431689b7fa5d6082"> 807</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPointsToSet&lt;Cond&gt;::CondPtsIter</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a9ffed93e0d4ae4b1431689b7fa5d6082">_endIter</a>;</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9"> 808</a></span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9">_ptIter</a>;</div><div class="line"><a name="l00809"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ae5fe9ff25c62386cbdd97d30b64b6972"> 809</a></span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ae5fe9ff25c62386cbdd97d30b64b6972">_ptEndIter</a>;</div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0"> 810</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a>;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; };</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00814"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a76d4c06b04161738351a813ae406aa83"> 814</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#a76d4c06b04161738351a813ae406aa83">iterator</a>;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;</div><div class="line"><a name="l00817"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a3521ec3be48cc03d9d3f562cb088a9ad"> 817</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a3521ec3be48cc03d9d3f562cb088a9ad">begin</a>()</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>);</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;</div><div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a5ead697952ada3fbb07da3459a2b1b86"> 822</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a5ead697952ada3fbb07da3459a2b1b86">end</a>()</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>,<span class="keyword">true</span>);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;</div><div class="line"><a name="l00827"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#acec077e130e49ac66a5c3e464a73dec2"> 827</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#acec077e130e49ac66a5c3e464a73dec2">begin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; }</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;</div><div class="line"><a name="l00832"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a537890d918d23abeea39bc73198f7365"> 832</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a537890d918d23abeea39bc73198f7365">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>,<span class="keyword">true</span>);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; }</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00839"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad0e1a70889a7bf2cb1b201a129128c52"> 839</a></span>&#160; CondPts <a class="code" href="classSVF_1_1CondPointsToSet.html#ad0e1a70889a7bf2cb1b201a129128c52">_condPts</a>;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160;};</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Cond&gt;</div><div class="line"><a name="l00846"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html"> 846</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;const <a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>&lt;Cond&gt;&gt;</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;{</div><div class="line"><a name="l00848"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ae66ac1a976e498f88e382988f17b4df5"> 848</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ae66ac1a976e498f88e382988f17b4df5">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">SVF::CondVar&lt;Cond&gt;</a> &amp;cv)<span class="keyword"> const</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; std::hash&lt;Cond&gt; h;</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">return</span> h(cv.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;};</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Cond&gt;</div><div class="line"><a name="l00856"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html"> 856</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;<a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>&lt;Cond&gt;&gt;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;{</div><div class="line"><a name="l00858"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ac9b6dd9b7dd77c0303c1f4f5877d87db"> 858</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ac9b6dd9b7dd77c0303c1f4f5877d87db">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">SVF::CondVar&lt;Cond&gt;</a> &amp;cv)<span class="keyword"> const</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; std::hash&lt;Cond&gt; h;</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">return</span> h(cv.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;};</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Element&gt;</div><div class="line"><a name="l00866"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html"> 866</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;<a class="code" href="namespaceSVF.html">SVF</a>::CondStdSet&lt;Element&gt;&gt;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;{</div><div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html#a0d50f7a011b2174e5c8064a8b03f8529"> 868</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html#a0d50f7a011b2174e5c8064a8b03f8529">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">SVF::CondStdSet&lt;Element&gt;</a> &amp;css)<span class="keyword"> const</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="comment">// TODO: this is not a very good hash, but we probably won&#39;t be</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="comment">// using it for now. Needed for other templates to compile...</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;Element, unsigned&gt;</a>&gt; h;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(*css.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(), css.<a class="code" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b">size</a>()));</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;};</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CONDVAR_H_ */</span><span class="preprocessor"></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#l00140">PointsTo.cpp:140</a></div></div>
69
+ <a href="ConditionalPT_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- ConditionalPT.h -- Conditional points-to data structure----------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</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="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * ConditionalPT.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: 22/03/2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef CONDVAR_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define CONDVAR_H_</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;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</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="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</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;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Cond&gt;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondVar.html">CondVar</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a0999a4b34face00af83b3b840920fd3f"> 49</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a0999a4b34face00af83b3b840920fd3f">CondVar</a>(<span class="keyword">const</span> Cond&amp; cond, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>) : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(cond),<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(id)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#afd729e068419ed45bb9da8d5920f8674"> 53</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#afd729e068419ed45bb9da8d5920f8674">CondVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; conVar) : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(conVar.<a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>), <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(conVar.<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69"> 57</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>() : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(), <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(0) {}</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#aad76f894d96617fb153cff0c875899a6"> 59</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#aad76f894d96617fb153cff0c875899a6">~CondVar</a>() {}</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a7faf827845c5e820f1b63ce6523bc2a9">operator == </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> == rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>() &amp;&amp; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> == rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0"> 70</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0">operator != </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</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"><a class="line" href="classSVF_1_1CondVar.html#a90d6c2204c92db5c78991e6dfdcc5c80"> 77</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; <a class="code" href="classSVF_1_1CondVar.html#a90d6c2204c92db5c78991e6dfdcc5c80">operator= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; rhs)</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; <span class="keywordflow">if</span>(*<span class="keyword">this</span>!=rhs)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> = rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> = rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#add10a9d6f6a49cbd5dd0f5d47c423d27"> 91</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#add10a9d6f6a49cbd5dd0f5d47c423d27">operator &lt; </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> != rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>())</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> &lt; rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> &lt; rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe"> 99</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> Cond&amp; <a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</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"><a class="line" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a"> 103</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a4baf5fb20288491c96827177f9965cc4"> 108</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondVar.html#a4baf5fb20288491c96827177f9965cc4">toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&lt;&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>.toString() &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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"><a class="line" href="classSVF_1_1CondVar.html#a01eb971ccd4ac623fa3cd9bb41cc696d"> 116</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>&amp; operator&lt;&lt; (OutStream &amp;o, const CondVar&lt;Cond&gt; &amp;cvar)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; o &lt;&lt; cvar.toString();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df"> 122</a></span>&#160; Cond <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a"> 123</a></span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>;</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"> 125</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Element&gt;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html"> 130</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet</a></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;{</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3fcc7079d72b0b392731ae7bf1ef2939"> 132</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;</a> <a class="code" href="classSVF_1_1CondStdSet.html#a3fcc7079d72b0b392731ae7bf1ef2939">ElementSet</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a6d82b5ddafa28542ce65adb0cc56cdce"> 135</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;::iterator</a> <a class="code" href="classSVF_1_1CondStdSet.html#a6d82b5ddafa28542ce65adb0cc56cdce">iterator</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a55152b7749868cc25f1c3c33ea57a650"> 136</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;::const_iterator</a> <a class="code" href="classSVF_1_1CondStdSet.html#a55152b7749868cc25f1c3c33ea57a650">const_iterator</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a1f3e8aa09ca8e7f252525e35c4886c5b"> 138</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#a1f3e8aa09ca8e7f252525e35c4886c5b">CondStdSet</a>() {}</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#abc67e77de2d1363af92c3bca2ccccbf1"> 139</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#abc67e77de2d1363af92c3bca2ccccbf1">~CondStdSet</a>() {}</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3f1885562bb34c3ccbd15117788725e0"> 142</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#a3f1885562bb34c3ccbd15117788725e0">CondStdSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; cptsSet) : elements(cptsSet.getElementSet())</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3e72341580263f3a9b48ce0e8c7bbbec"> 147</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a3e72341580263f3a9b48ce0e8c7bbbec">test_and_set</a>(<span class="keyword">const</span> Element&amp; var)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> elements.insert(var).second;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a6bf6fafc6f8391dbff08a6bd9d07f4d4"> 152</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a6bf6fafc6f8391dbff08a6bd9d07f4d4">test</a>(<span class="keyword">const</span> Element&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> (elements.find(var) != elements.end());</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#ae11deddad534be115d29daad08c90599"> 157</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keyword">const</span> Element&amp; var)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; elements.insert(var);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a857396d9e820a9fab8a498d981855e2a"> 162</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a857396d9e820a9fab8a498d981855e2a">reset</a>(<span class="keyword">const</span> Element&amp; var)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; elements.erase(var);</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="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76"> 169</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> elements.empty();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b"> 173</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b">size</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> elements.size();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#aa19e82905537f3ae41f64fce070ee555"> 177</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondStdSet.html#aa19e82905537f3ae41f64fce070ee555">count</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> size();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a4c49e2964276825744ffce26fc43ec36"> 184</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a4c49e2964276825744ffce26fc43ec36">clear</a>()</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; elements.clear();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</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"><a class="line" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038"> 191</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>()</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"> 193</span>&#160; <span class="keywordflow">return</span> elements.begin();</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"><a class="line" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3"> 195</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>()</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> elements.end();</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_1CondStdSet.html#a76fb2382bf424638ed8e03cb48cdc90e"> 199</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#a76fb2382bf424638ed8e03cb48cdc90e">begin</a>()<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; <span class="keywordflow">return</span> elements.begin();</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"><a class="line" href="classSVF_1_1CondStdSet.html#accc5305781696701c00245ed1e8a25a3"> 203</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#accc5305781696701c00245ed1e8a25a3">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> elements.end();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</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"><a class="line" href="classSVF_1_1CondStdSet.html#a90e4c4ead1cbdca01c0be801a68b005b"> 211</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a90e4c4ead1cbdca01c0be801a68b005b">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keyword">const</span> ElementSet&amp; rhsElementSet = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">if</span>(rhsElementSet.empty() || (*<span class="keyword">this</span>==rhs))</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oldSize = elements.size();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; elements.insert(rhsElementSet.begin(),rhsElementSet.end());</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> oldSize!=elements.size();</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_1CondStdSet.html#abb97324d865818f0a51992ee86d1c5ad"> 220</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a9d6c986a34096a3552a6385ccbb724e4">operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</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; <span class="keywordflow">if</span>(rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>() || (*<span class="keyword">this</span> == rhs))</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">for</span> (const_iterator i = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(); i != rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>(); ++i)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (elements.find(*i) == elements.end())</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; elements.erase(*i);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; changed = <span class="keyword">true</span>;</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"> 233</span>&#160; <span class="keywordflow">return</span> changed;</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"><a class="line" href="classSVF_1_1CondStdSet.html#a060a01d33fcd5ed4dfcaecb3d24cda07"> 235</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a060a01d33fcd5ed4dfcaecb3d24cda07">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> elements!=rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</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"><a class="line" href="classSVF_1_1CondStdSet.html#a6697d9c3d1107db2be430b8e8b670cb5"> 239</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a6697d9c3d1107db2be430b8e8b670cb5">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> ((*<span class="keyword">this</span> != rhs) == <span class="keyword">false</span>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a9fa868a473993d0244431d640799ce98"> 243</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; <a class="code" href="classSVF_1_1CondStdSet.html#a9fa868a473993d0244431d640799ce98">operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)</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; <span class="keywordflow">if</span>(*<span class="keyword">this</span>!=rhs)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; elements = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#ad3c38bb031419dd583a9cb0314e76afd"> 251</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&lt;(const CondStdSet&lt;Element&gt;&amp; rhs) <span class="keyword">const</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> elements &lt; rhs.getElementSet();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#ac422c3fb8bce1378d69c234e6b11fdb1"> 260</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#ac422c3fb8bce1378d69c234e6b11fdb1">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (empty() &amp;&amp; rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>())</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">for</span> (const_iterator i = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(); i != rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>(); ++i)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span> (elements.find(*i) != elements.end())</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a07267b0a4f7cfeaa6d1f7d722932c4d5"> 273</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondStdSet.html#a07267b0a4f7cfeaa6d1f7d722932c4d5">toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">for</span> (const_iterator i = elements.begin(); i != elements.end(); ++i)</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; rawstr &lt;&lt; (*i).toString() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;} &quot;</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</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"><a class="line" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320"> 286</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> ElementSet&amp; <a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> elements;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a347097404761b16a077eac1ae9fbfd94"> 292</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a347097404761b16a077eac1ae9fbfd94">checkAndRemap</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a1caece9a66b6617b89037fd8211f2934"> 295</a></span>&#160; ElementSet <a class="code" href="classSVF_1_1CondStdSet.html#a1caece9a66b6617b89037fd8211f2934">elements</a>;</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"> 298</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Cond&gt;</div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html"> 303</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet</a></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;{</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aaddc3f78a624de59dda6f078ba63ba52"> 306</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Cond, PointsTo&gt;</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#aaddc3f78a624de59dda6f078ba63ba52">CondPts</a>;</div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077"> 307</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> CondPts::iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPtsIter</a>;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aa9d3a8c42b6df3fa9c2e7bcd7af75e16"> 308</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> CondPts::const_iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#aa9d3a8c42b6df3fa9c2e7bcd7af75e16">CondPtsConstIter</a>;</div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a0ef73bd2c1b42439ee6f265e07f17514"> 309</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar&lt;Cond&gt;</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#a0ef73bd2c1b42439ee6f265e07f17514">SingleCondVar</a>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a3670dc2bb046f2d3e0d27dc02b32e62f"> 313</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#a3670dc2bb046f2d3e0d27dc02b32e62f">CondPointsToSet</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; }</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a7217769c21c50c44f139006ec44d3a6f"> 316</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#a7217769c21c50c44f139006ec44d3a6f">CondPointsToSet</a>(<span class="keyword">const</span> Cond&amp; cond, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; _condPts[cond] |= pts;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aad144061d006968ff4d6d21488b84801"> 323</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#aad144061d006968ff4d6d21488b84801">CondPointsToSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cptsSet)</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"> 326</span>&#160; _condPts = cptsSet.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac"> 331</a></span>&#160; <span class="keyword">inline</span> CondPts &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(<span class="keywordtype">void</span>)</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"> 333</span>&#160; <span class="keywordflow">return</span> _condPts;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ada240bc77570174a1d17ac097583fa78"> 335</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CondPts &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#ada240bc77570174a1d17ac097583fa78">pointsTo</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> _condPts;</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a03311162626acf16ad05b7b93248a92b"> 339</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a03311162626acf16ad05b7b93248a92b">pointsTo</a>(Cond cond)<span class="keyword"> const</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; CondPtsConstIter it = _condPts.find(cond);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; assert(it!=_condPts.end() &amp;&amp; <span class="stringliteral">&quot;do not have pts of such condition!&quot;</span>);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</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_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0"> 345</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(Cond cond)<span class="keyword"> const</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> (_condPts.find(cond) != _condPts.end());</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a8775ef2c073af6c8055c3f5b0035288f"> 349</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a8775ef2c073af6c8055c3f5b0035288f">pointsTo</a>(Cond cond)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span> _condPts[cond];</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3"> 357</a></span>&#160; <span class="keyword">inline</span> CondPtsIter <a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>()</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">return</span> _condPts.begin();</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea"> 361</a></span>&#160; <span class="keyword">inline</span> CondPtsIter <a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>()</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">return</span> _condPts.end();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad26570b94c56d6d2ae1cd5093ac66670"> 365</a></span>&#160; <span class="keyword">inline</span> CondPtsConstIter <a class="code" href="classSVF_1_1CondPointsToSet.html#ad26570b94c56d6d2ae1cd5093ac66670">cptsBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> _condPts.begin();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aa4c47630b9a06d70375daf5e9237303d"> 369</a></span>&#160; <span class="keyword">inline</span> CondPtsConstIter <a class="code" href="classSVF_1_1CondPointsToSet.html#aa4c47630b9a06d70375daf5e9237303d">cptsEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">return</span> _condPts.end();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad81774f0ad13fb21579180fc15affd7b"> 375</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad81774f0ad13fb21579180fc15affd7b">clear</a>()</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; _condPts.clear();</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a8d8f9e91b62b94d876f34066de7944d4"> 381</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a8d8f9e91b62b94d876f34066de7944d4">numElement</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> (_condPts.empty())</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordtype">unsigned</span> num = 0;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">for</span> (CondPtsConstIter it = cptsBegin(); it != cptsEnd(); it++)</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="classSVF_1_1PointsTo.html">PointsTo</a> pts = it-&gt;second;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; num += pts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</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; <span class="keywordflow">return</span> num;</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"> 395</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff"> 397</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff">empty</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> numElement()==0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</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;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a42056d7b29e50a3ed8a8db95674d24b2"> 405</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; <a class="code" href="classSVF_1_1CondPointsToSet.html#a42056d7b29e50a3ed8a8db95674d24b2">operator=</a>(</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; other)</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; _condPts = other.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#abe02e0bdcfddde7251b7d35e916c8f02"> 413</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#abe02e0bdcfddde7251b7d35e916c8f02">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="comment">// Always remember give the typename when define a template variable</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() != rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().size())</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), erit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">for</span> (; lit != elit &amp;&amp; rit != erit; ++lit, ++rit)</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> Cond&amp; rc = rit-&gt;first;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">if</span> (lc != rc || lit-&gt;second != rit-&gt;second)</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#afcbb2cae75a5dd7947cb22c440b8fd0b"> 433</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#afcbb2cae75a5dd7947cb22c440b8fd0b">aliased</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">if</span> (pointsTo().empty() || rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">else</span></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; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">for</span> (; lit != elit; ++lit)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = lit-&gt;second;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().find(lc);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span>(rit !=rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().end())</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">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">intersects</a>(rpts))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#acefec4fbacde1099d3dc81ab45ab9b8c"> 457</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#acefec4fbacde1099d3dc81ab45ab9b8c">isSubset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() &gt; rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().size())</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">for</span> (; lit != elit; ++lit)</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="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().find(lc);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">if</span> (rit == rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().end())</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">else</span></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">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = lit-&gt;second;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (!rpts.<a class="code" href="classSVF_1_1PointsTo.html#ab31a53693fe070767b8de74e88091cd8">contains</a>(pts))</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</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"> 479</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</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;</div><div class="line"><a name="l00483"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a89d24257bd1436286dcbb025dd405b52"> 483</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a89d24257bd1436286dcbb025dd405b52">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>* rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (pointsTo().empty() &amp;&amp; rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</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; CondPtsConstIter it = rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), eit = rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</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; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(cond))</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rhs_pts= it-&gt;second;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts= pointsTo(cond);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">intersects</a>(rhs_pts))</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a57fdbfc5bc0bc7eb7a8efefdcc689852"> 506</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a57fdbfc5bc0bc7eb7a8efefdcc689852">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts2)</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; <span class="keywordflow">if</span> (cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</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"> 510</span>&#160; clear();</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</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; (*this) = cpts1;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; CondPtsConstIter it1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), eit1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">for</span> (; it1 != eit1; ++it1)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it1-&gt;first;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts1 = it1-&gt;second;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(cond);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">if</span> (cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts2 = cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">intersectWithComplement</a>(pts1, pts2);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; pts = pts1;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a5a7ab3c22b3726541955b5be8a62aab6"> 539</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a5a7ab3c22b3726541955b5be8a62aab6">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts1)</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span> (empty() || cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; CondPtsIter it = cptsBegin(), eit = cptsEnd();</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</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; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">if</span> (cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">intersectWithComplement</a>(pts1);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</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"> 560</span>&#160; }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ab86fdf68183d05f66e1405c6346038c4"> 563</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a9d6c986a34096a3552a6385ccbb724e4">operator &amp;= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (empty())</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff">empty</a>())</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; clear();</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">for</span> (CondPtsIter it = cptsBegin(), eit = cptsEnd(); it != eit; ++it)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">if</span> (rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (pts &amp;= rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond))</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">if</span> (!pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#acb5af4139d42dcd19c6327520f074e91">clear</a>();</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#af06ca0ddfcdca69199fbc9ab42f98558"> 600</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#af06ca0ddfcdca69199fbc9ab42f98558">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;</div><div class="line"><a name="l00609"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a74c50cfaf788a828a4fc97eba703ec4e"> 609</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a97ff28f5dfd5c31e6ef351de3cdad85d">operator |= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; CondPtsConstIter rhsIt = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>();</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; CondPtsConstIter rhsEit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">for</span> (; rhsIt != rhsEit; ++rhsIt)</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keyword">const</span> Cond&amp; cond = rhsIt-&gt;first;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rhsPts = rhsIt-&gt;second;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(cond);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">if</span> ((pts |= rhsPts))</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; }</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="comment">// TODO: try to use an efficient method to compare two conditional points-to set.</span></div><div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a54d9d3f3a38bf4066cd930845f86a63c"> 633</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&lt; (const CondPointsToSet&lt;Cond&gt;&amp; rhs) <span class="keyword">const</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() &lt; rhs.pointsTo().size())</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pointsTo().size() == rhs.pointsTo().size())</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; CondPtsConstIter rit = rhs.cptsBegin(), erit = rhs.cptsEnd();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">for</span> (; lit != elit &amp;&amp; rit != erit; ++lit, ++rit)</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keyword">const</span> Cond&amp; rc = rit-&gt;first;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">if</span> (lc &lt; rc)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lc == rc)</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; lpts = lit-&gt;second;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() &lt; rpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>())</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() == rpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>())</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> bit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>();</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> eit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> rbit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>();</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> reit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">for</span> (; bit != eit &amp;&amp; rbit != reit; bit++, rbit++)</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (*bit &lt; *rbit)</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*bit &gt; *rbit)</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; }</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ac29ac1adefca6b34cd8e83fe3f0b4450"> 679</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ac29ac1adefca6b34cd8e83fe3f0b4450">test_and_set</a>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">test_and_set</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div><div class="line"><a name="l00684"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a1613b690473a4fcbae7bc41c3c5347d7"> 684</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a1613b690473a4fcbae7bc41c3c5347d7">test</a>(<span class="keyword">const</span> SingleCondVar&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()))</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div><div class="line"><a name="l00693"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aadf2576b55bbdb82d7affc8466c09861"> 693</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; {</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.get_cond());</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(var.get_id());</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div><div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aced740c1aadf06b4a63630844fac2dd8"> 698</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#aced740c1aadf06b4a63630844fac2dd8">reset</a>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()))</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6">reset</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="comment">// Print all points-to targets</span></div><div class="line"><a name="l00710"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a52392deae4011c4353a259c873efc0d6"> 710</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a52392deae4011c4353a259c873efc0d6">dump</a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O)<span class="keyword"> const</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; CondPtsConstIter it = cptsBegin();</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; CondPtsConstIter eit = cptsEnd();</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">for</span> (; it != eit; it++)</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;pts{&quot;</span>;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVFUtil::dumpSet</a>(pts, O);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; }</div><div class="line"><a name="l00722"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#abcd2c01ec21e30caa91dba06386912cb"> 722</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#abcd2c01ec21e30caa91dba06386912cb">dumpStr</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; CondPtsConstIter it = cptsBegin();</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; CondPtsConstIter eit = cptsEnd();</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">for</span> (; it != eit; it++)</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; str += <span class="stringliteral">&quot;pts{&quot;</span>;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> ii = pts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), ie = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordtype">char</span> int2str[16];</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; snprintf(int2str, <span class="keyword">sizeof</span>(int2str), <span class="stringliteral">&quot;%d&quot;</span>, *ii);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; str += int2str;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; str += <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; }</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; str += <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; }</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; }</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html"> 748</a></span>&#160; <span class="keyword">class </span><a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00751"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a8a3d10d0aaf4708e7e44bedc6be077e0"> 751</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a8a3d10d0aaf4708e7e44bedc6be077e0">CondPtsSetIterator</a>(<a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a> &amp;<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <span class="keywordtype">bool</span> ae = <span class="keyword">false</span>)</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; : _curIter(n.cptsBegin()), _endIter(n.cptsEnd()),</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; _ptIter(_curIter-&gt;second.begin()), _ptEndIter(_curIter-&gt;second.end()), atEnd(ae) {}</div><div class="line"><a name="l00754"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a24ccc2dba1da8e241a595c84dde840ab"> 754</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a24ccc2dba1da8e241a595c84dde840ab">~CondPtsSetIterator</a>() {}</div><div class="line"><a name="l00755"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a4b1e8adca9e8d1b046930e9d2abeb08f"> 755</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0">operator != </a>(<span class="keywordtype">int</span> val)</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">return</span> _curIter != _endIter;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ab069959f9b4b2a0e1441281acb666a60"> 761</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ab069959f9b4b2a0e1441281acb666a60">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> &amp;RHS)<span class="keyword"> const</span></div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="comment">// If they are both at the end, ignore the rest of the fields.</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span> (atEnd &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a>)</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="comment">// Otherwise they are the same if they have the same condVar</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">return</span> atEnd == RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a> &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae">_curIter</a> == _curIter &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9">_ptIter</a> == _ptIter;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div><div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a82068bca4dfc43402625638dcd1b9775"> 769</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a82068bca4dfc43402625638dcd1b9775">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> &amp;RHS)<span class="keyword"> const</span></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == RHS);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div><div class="line"><a name="l00774"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#abd22ed3c5dc9f35968c9a179d292b764"> 774</a></span>&#160; <span class="keywordtype">void</span> operator ++(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span>(atEnd == <span class="keyword">true</span>)</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span>(_ptIter==_ptEndIter)</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">if</span>(_curIter == _endIter)</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; {</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; atEnd = <span class="keyword">true</span>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; }</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; _curIter++;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; _ptIter = _curIter-&gt;second.begin();</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; _ptIter = _curIter-&gt;second.end();</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; _ptIter++;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; }</div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#aaaed8caef122453b5ff543826e1757e0"> 793</a></span>&#160; SingleCondVar operator *(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; SingleCondVar temp_var(cond(), *_ptIter);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">return</span> temp_var;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a3ccbb22634968d2fca0f6aba7b57971e"> 800</a></span>&#160; Cond <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a3ccbb22634968d2fca0f6aba7b57971e">cond</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; {</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">return</span> _curIter-&gt;first;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae"> 806</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPointsToSet&lt;Cond&gt;::CondPtsIter</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae">_curIter</a>;</div><div class="line"><a name="l00807"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a9ffed93e0d4ae4b1431689b7fa5d6082"> 807</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPointsToSet&lt;Cond&gt;::CondPtsIter</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a9ffed93e0d4ae4b1431689b7fa5d6082">_endIter</a>;</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9"> 808</a></span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9">_ptIter</a>;</div><div class="line"><a name="l00809"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ae5fe9ff25c62386cbdd97d30b64b6972"> 809</a></span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ae5fe9ff25c62386cbdd97d30b64b6972">_ptEndIter</a>;</div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0"> 810</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a>;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; };</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00814"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a76d4c06b04161738351a813ae406aa83"> 814</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#a76d4c06b04161738351a813ae406aa83">iterator</a>;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;</div><div class="line"><a name="l00817"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a3521ec3be48cc03d9d3f562cb088a9ad"> 817</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a3521ec3be48cc03d9d3f562cb088a9ad">begin</a>()</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>);</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;</div><div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a5ead697952ada3fbb07da3459a2b1b86"> 822</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a5ead697952ada3fbb07da3459a2b1b86">end</a>()</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>,<span class="keyword">true</span>);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;</div><div class="line"><a name="l00827"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#acec077e130e49ac66a5c3e464a73dec2"> 827</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#acec077e130e49ac66a5c3e464a73dec2">begin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; }</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;</div><div class="line"><a name="l00832"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a537890d918d23abeea39bc73198f7365"> 832</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a537890d918d23abeea39bc73198f7365">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>,<span class="keyword">true</span>);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; }</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00839"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad0e1a70889a7bf2cb1b201a129128c52"> 839</a></span>&#160; CondPts <a class="code" href="classSVF_1_1CondPointsToSet.html#ad0e1a70889a7bf2cb1b201a129128c52">_condPts</a>;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160;};</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Cond&gt;</div><div class="line"><a name="l00846"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html"> 846</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;const <a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>&lt;Cond&gt;&gt;</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;{</div><div class="line"><a name="l00848"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ae66ac1a976e498f88e382988f17b4df5"> 848</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ae66ac1a976e498f88e382988f17b4df5">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">SVF::CondVar&lt;Cond&gt;</a> &amp;cv)<span class="keyword"> const</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; std::hash&lt;Cond&gt; h;</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">return</span> h(cv.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;};</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Cond&gt;</div><div class="line"><a name="l00856"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html"> 856</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;<a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>&lt;Cond&gt;&gt;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;{</div><div class="line"><a name="l00858"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ac9b6dd9b7dd77c0303c1f4f5877d87db"> 858</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ac9b6dd9b7dd77c0303c1f4f5877d87db">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">SVF::CondVar&lt;Cond&gt;</a> &amp;cv)<span class="keyword"> const</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; std::hash&lt;Cond&gt; h;</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">return</span> h(cv.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;};</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Element&gt;</div><div class="line"><a name="l00866"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html"> 866</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;<a class="code" href="namespaceSVF.html">SVF</a>::CondStdSet&lt;Element&gt;&gt;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;{</div><div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html#a0d50f7a011b2174e5c8064a8b03f8529"> 868</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html#a0d50f7a011b2174e5c8064a8b03f8529">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">SVF::CondStdSet&lt;Element&gt;</a> &amp;css)<span class="keyword"> const</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="comment">// TODO: this is not a very good hash, but we probably won&#39;t be</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="comment">// using it for now. Needed for other templates to compile...</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;Element, unsigned&gt;</a>&gt; h;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(*css.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(), css.<a class="code" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b">size</a>()));</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;};</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CONDVAR_H_ */</span><span class="preprocessor"></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#l00140">PointsTo.cpp:140</a></div></div>
70
70
  <div class="ttc" id="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4_html_ae66ac1a976e498f88e382988f17b4df5"><div class="ttname"><a href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ae66ac1a976e498f88e382988f17b4df5">std::hash&lt; const SVF::CondVar&lt; Cond &gt; &gt;::operator()</a></div><div class="ttdeci">size_t operator()(const SVF::CondVar&lt; Cond &gt; &amp;cv) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00848">ConditionalPT.h:848</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_ada240bc77570174a1d17ac097583fa78"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#ada240bc77570174a1d17ac097583fa78">SVF::CondPointsToSet::pointsTo</a></div><div class="ttdeci">const CondPts &amp; pointsTo(void) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00335">ConditionalPT.h:335</a></div></div>
72
72
  <div class="ttc" id="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4_html_a0d50f7a011b2174e5c8064a8b03f8529"><div class="ttname"><a href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html#a0d50f7a011b2174e5c8064a8b03f8529">std::hash&lt; SVF::CondStdSet&lt; Element &gt; &gt;::operator()</a></div><div class="ttdeci">size_t operator()(const SVF::CondStdSet&lt; Element &gt; &amp;css) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00868">ConditionalPT.h:868</a></div></div>