svf-tools 1.0.528 → 1.0.531

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/CMakeLists.txt +1 -1
  2. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +10 -10
  3. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +3 -3
  5. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +6 -6
  6. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +1 -1
  10. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +15 -15
  11. package/SVF-doxygen/html/html/DCHG_8h_source.html +6 -6
  12. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/ExeState_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h.html +4 -4
  16. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +4 -4
  17. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  19. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +5 -5
  20. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +5 -5
  22. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +7 -7
  24. package/SVF-doxygen/html/html/LLVMUtil_8h.html +10 -10
  25. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +4 -4
  26. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
  27. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +5 -5
  28. package/SVF-doxygen/html/html/MHP_8cpp.html +5 -5
  29. package/SVF-doxygen/html/html/MHP_8cpp_source.html +6 -6
  30. package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
  31. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +5 -5
  33. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +2 -2
  34. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  35. package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
  36. package/SVF-doxygen/html/html/MTA_8h_source.html +4 -4
  37. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  39. package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +157 -1351
  41. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +76 -75
  42. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +24 -24
  43. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +34 -34
  44. package/SVF-doxygen/html/html/SVFLoop_8h_source.html +32 -32
  45. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -2
  46. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +2 -2
  47. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +17 -17
  50. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +2 -2
  51. package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
  52. package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
  54. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  55. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  56. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +5 -5
  57. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +12 -12
  58. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
  59. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +149 -149
  60. package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +12 -12
  61. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +5 -5
  62. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +5 -5
  63. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +18 -18
  64. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +5 -5
  65. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +10 -10
  66. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +2 -2
  67. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +7 -7
  68. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
  69. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +12 -12
  70. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
  71. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +10 -10
  72. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
  73. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -3
  74. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
  75. package/SVF-doxygen/html/html/classSVF_1_1PTASCEV.html +5 -5
  76. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  77. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +88 -88
  78. package/SVF-doxygen/html/html/classSVF_1_1SVFLoop.html +57 -57
  79. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +10 -10
  80. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +25 -25
  81. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +2 -2
  82. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +2 -2
  83. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +2 -2
  84. package/SVF-doxygen/html/html/globals_a.html +0 -9
  85. package/SVF-doxygen/html/html/globals_b.html +4 -19
  86. package/SVF-doxygen/html/html/globals_c.html +8 -50
  87. package/SVF-doxygen/html/html/globals_d.html +0 -33
  88. package/SVF-doxygen/html/html/globals_e.html +0 -6
  89. package/SVF-doxygen/html/html/globals_f.html +2 -8
  90. package/SVF-doxygen/html/html/globals_g.html +0 -9
  91. package/SVF-doxygen/html/html/globals_i.html +4 -22
  92. package/SVF-doxygen/html/html/globals_l.html +2 -8
  93. package/SVF-doxygen/html/html/globals_m.html +1 -13
  94. package/SVF-doxygen/html/html/globals_p.html +0 -3
  95. package/SVF-doxygen/html/html/globals_r.html +4 -10
  96. package/SVF-doxygen/html/html/globals_s.html +0 -30
  97. package/SVF-doxygen/html/html/globals_type.html +1 -284
  98. package/SVF-doxygen/html/html/globals_u.html +0 -15
  99. package/SVF-doxygen/html/html/globals_v.html +2 -17
  100. package/SVF-doxygen/html/html/menudata.js +19 -34
  101. package/SVF-doxygen/html/html/namespaceSVF.html +1825 -475
  102. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +45 -45
  103. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +10 -10
  104. package/SVF-doxygen/html/html/namespacellvm.html +4 -8
  105. package/SVF-doxygen/html/html/namespacemembers.html +9 -0
  106. package/SVF-doxygen/html/html/namespacemembers_b.html +13 -0
  107. package/SVF-doxygen/html/html/namespacemembers_c.html +43 -1
  108. package/SVF-doxygen/html/html/namespacemembers_d.html +34 -1
  109. package/SVF-doxygen/html/html/namespacemembers_e.html +6 -0
  110. package/SVF-doxygen/html/html/namespacemembers_f.html +6 -0
  111. package/SVF-doxygen/html/html/namespacemembers_g.html +13 -4
  112. package/SVF-doxygen/html/html/namespacemembers_i.html +26 -8
  113. package/SVF-doxygen/html/html/namespacemembers_l.html +6 -0
  114. package/SVF-doxygen/html/html/namespacemembers_m.html +12 -0
  115. package/SVF-doxygen/html/html/namespacemembers_p.html +3 -0
  116. package/SVF-doxygen/html/html/namespacemembers_r.html +6 -0
  117. package/SVF-doxygen/html/html/namespacemembers_s.html +30 -0
  118. package/SVF-doxygen/html/html/namespacemembers_type.html +7 -436
  119. package/SVF-doxygen/html/html/namespacemembers_type_b.html +3 -0
  120. package/SVF-doxygen/html/html/namespacemembers_type_c.html +8 -8
  121. package/SVF-doxygen/html/html/namespacemembers_type_e.html +6 -0
  122. package/SVF-doxygen/html/html/namespacemembers_type_g.html +9 -0
  123. package/SVF-doxygen/html/html/namespacemembers_type_l.html +0 -3
  124. package/SVF-doxygen/html/html/namespacemembers_type_m.html +3 -0
  125. package/SVF-doxygen/html/html/namespacemembers_type_n.html +1 -1
  126. package/SVF-doxygen/html/html/namespacemembers_type_p.html +0 -6
  127. package/SVF-doxygen/html/html/namespacemembers_type_s.html +3 -18
  128. package/SVF-doxygen/html/html/namespacemembers_type_t.html +0 -3
  129. package/SVF-doxygen/html/html/namespacemembers_type_v.html +0 -6
  130. package/SVF-doxygen/html/html/namespacemembers_u.html +15 -0
  131. package/SVF-doxygen/html/html/namespacemembers_v.html +15 -0
  132. package/SVF-doxygen/html/html/search/all_1.js +3 -3
  133. package/SVF-doxygen/html/html/search/all_10.js +1 -1
  134. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  135. package/SVF-doxygen/html/html/search/all_12.js +10 -10
  136. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  137. package/SVF-doxygen/html/html/search/all_15.js +5 -5
  138. package/SVF-doxygen/html/html/search/all_2.js +5 -5
  139. package/SVF-doxygen/html/html/search/all_3.js +14 -14
  140. package/SVF-doxygen/html/html/search/all_4.js +11 -11
  141. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  142. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  143. package/SVF-doxygen/html/html/search/all_7.js +3 -3
  144. package/SVF-doxygen/html/html/search/all_9.js +6 -6
  145. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  146. package/SVF-doxygen/html/html/search/all_d.js +4 -4
  147. package/SVF-doxygen/html/html/search/typedefs_0.js +3 -3
  148. package/SVF-doxygen/html/html/search/typedefs_1.js +5 -5
  149. package/SVF-doxygen/html/html/search/typedefs_10.js +10 -10
  150. package/SVF-doxygen/html/html/search/typedefs_12.js +5 -5
  151. package/SVF-doxygen/html/html/search/typedefs_13.js +5 -5
  152. package/SVF-doxygen/html/html/search/typedefs_2.js +14 -14
  153. package/SVF-doxygen/html/html/search/typedefs_3.js +11 -11
  154. package/SVF-doxygen/html/html/search/typedefs_4.js +2 -2
  155. package/SVF-doxygen/html/html/search/typedefs_5.js +2 -2
  156. package/SVF-doxygen/html/html/search/typedefs_6.js +3 -3
  157. package/SVF-doxygen/html/html/search/typedefs_7.js +6 -6
  158. package/SVF-doxygen/html/html/search/typedefs_a.js +2 -2
  159. package/SVF-doxygen/html/html/search/typedefs_b.js +4 -4
  160. package/SVF-doxygen/html/html/search/typedefs_e.js +1 -1
  161. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -2
  162. package/include/MemoryModel/PointsTo.h +1 -1
  163. package/include/MemoryModel/SVFLoop.h +2 -1
  164. package/include/SVF-FE/BasicTypes.h +5 -0
  165. package/include/SVF-FE/CHGBuilder.h +2 -1
  166. package/include/SVF-FE/LLVMLoopAnalysis.h +1 -1
  167. package/include/SVF-FE/SymbolTableBuilder.h +1 -1
  168. package/include/Util/CoreBitVector.h +1 -1
  169. package/include/Util/DPItem.h +1 -1
  170. package/include/Util/ExeState.h +1 -1
  171. package/include/Util/SparseBitVector.h +1 -1
  172. package/include/Util/SymState.h +1 -1
  173. package/include/Util/Z3Expr.h +3 -2
  174. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  175. package/package.json +1 -1
@@ -66,14 +66,14 @@ $(function() {
66
66
  <div class="title">CallGraphBuilder.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="CallGraphBuilder_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- CallGraphBuilder.cpp ----------------------------------------------------------------//</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;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * CallGraphBuilder.cpp</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Created on:</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * Author: Yulei</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CallGraphBuilder_8h.html">SVF-FE/CallGraphBuilder.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFG_8h.html">Graphs/ICFG.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</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"><a class="line" href="classSVF_1_1CallGraphBuilder.html#aa64a27e99434908a203e566074c66ebc"> 38</a></span>&#160;<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1CallGraphBuilder.html#aa64a27e99434908a203e566074c66ebc">CallGraphBuilder::buildCallGraph</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(*<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; callgraph-&gt;addCallGraphNode(fun);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a> I = inst_begin(*fun), J = inst_end(*fun); I != J; ++I)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*I;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVFUtil::isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* caller = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; callgraph-&gt;addDirectCallGraphEdge(callBlockNode,caller,callee);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> callgraph;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</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"><a class="line" href="classSVF_1_1ThreadCallGraphBuilder.html#a0f5bf24257858919c10af0e076d87ef7"> 69</a></span>&#160;<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1ThreadCallGraphBuilder.html#a0f5bf24257858919c10af0e076d87ef7">ThreadCallGraphBuilder::buildThreadCallGraph</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; buildCallGraph(svfModule);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* cg = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">dyn_cast</a>&lt;<a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>&gt;(callgraph);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; assert(cg &amp;&amp; <span class="stringliteral">&quot;not a thread callgraph?&quot;</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1ThreadAPI.html">ThreadAPI</a>* tdAPI = <a class="code" href="classSVF_1_1ThreadAPI.html#a6852ff1eedc1117e95e45e4a90c80d53">ThreadAPI::getThreadAPI</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#ab86e221a93bec67a2ecb7cb53315f569">SVFModule::llvm_const_iterator</a> fi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), efi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); fi != efi; ++fi)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *fi;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a9a4df49ba7ca3ad32d65e5ecf2dad707">const_inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(inst))</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a563ebb1ece0adb4bafe5e14b2a024a91">addForksite</a>(cs);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* forkee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a7ddc0c71aeae315af21972a4905b3456">getForkedFun</a>(inst));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (forkee)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a19e505dbca2d2b5128762b223b9a7114">addDirectForkEdge</a>(cs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// indirect call to the start routine function</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#ab20211a66583387f0da4769bee65e300">addThreadForkEdgeSetMap</a>(cs,<span class="keyword">nullptr</span>);</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"> 99</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a86d75b7e3570337e484397e60f97d88e">isHareParFor</a>(inst))</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a69719915e8c23e3afd6766daea946ffe">addParForSite</a>(cs);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* taskFunc = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#afeedd6e518af76fa9e7142af8899b2f5">getTaskFuncAtHareParForSite</a>(inst));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (taskFunc)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#ae942f7d46198207219e5ce8287497262">addDirectParForEdge</a>(cs);</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"> 108</span>&#160; <span class="comment">// indirect call to the start routine function</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#aae1caa7231ab9436db98403d6a175149">addHareParForEdgeSetMap</a>(cs,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// record join sites</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#ab86e221a93bec67a2ecb7cb53315f569">SVFModule::llvm_const_iterator</a> fi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), efi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); fi != efi; ++fi)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *fi;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a9a4df49ba7ca3ad32d65e5ecf2dad707">const_inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">isTDJoin</a>(inst))</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a795d504a098634b1725af272b37e46e7">addJoinsite</a>(cs);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> cg;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</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;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
69
+ <a href="CallGraphBuilder_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- CallGraphBuilder.cpp ----------------------------------------------------------------//</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;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * CallGraphBuilder.cpp</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Created on:</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * Author: Yulei</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CallGraphBuilder_8h.html">SVF-FE/CallGraphBuilder.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFG_8h.html">Graphs/ICFG.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</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"><a class="line" href="classSVF_1_1CallGraphBuilder.html#aa64a27e99434908a203e566074c66ebc"> 38</a></span>&#160;<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1CallGraphBuilder.html#aa64a27e99434908a203e566074c66ebc">CallGraphBuilder::buildCallGraph</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(*<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; callgraph-&gt;addCallGraphNode(fun);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> I = inst_begin(*fun), J = inst_end(*fun); I != J; ++I)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*I;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVFUtil::isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(inst))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* caller = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; callgraph-&gt;addDirectCallGraphEdge(callBlockNode,caller,callee);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> callgraph;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</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"><a class="line" href="classSVF_1_1ThreadCallGraphBuilder.html#a0f5bf24257858919c10af0e076d87ef7"> 69</a></span>&#160;<a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1ThreadCallGraphBuilder.html#a0f5bf24257858919c10af0e076d87ef7">ThreadCallGraphBuilder::buildThreadCallGraph</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; buildCallGraph(svfModule);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* cg = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">dyn_cast</a>&lt;<a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>&gt;(callgraph);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; assert(cg &amp;&amp; <span class="stringliteral">&quot;not a thread callgraph?&quot;</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1ThreadAPI.html">ThreadAPI</a>* tdAPI = <a class="code" href="classSVF_1_1ThreadAPI.html#a6852ff1eedc1117e95e45e4a90c80d53">ThreadAPI::getThreadAPI</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#ab86e221a93bec67a2ecb7cb53315f569">SVFModule::llvm_const_iterator</a> fi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), efi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); fi != efi; ++fi)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *fi;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a032e8478a7b6a8bb0b7755c98a7bce91">const_inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(inst))</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a563ebb1ece0adb4bafe5e14b2a024a91">addForksite</a>(cs);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* forkee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a7ddc0c71aeae315af21972a4905b3456">getForkedFun</a>(inst));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (forkee)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a19e505dbca2d2b5128762b223b9a7114">addDirectForkEdge</a>(cs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// indirect call to the start routine function</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#ab20211a66583387f0da4769bee65e300">addThreadForkEdgeSetMap</a>(cs,<span class="keyword">nullptr</span>);</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"> 99</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a86d75b7e3570337e484397e60f97d88e">isHareParFor</a>(inst))</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a69719915e8c23e3afd6766daea946ffe">addParForSite</a>(cs);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* taskFunc = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#afeedd6e518af76fa9e7142af8899b2f5">getTaskFuncAtHareParForSite</a>(inst));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (taskFunc)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#ae942f7d46198207219e5ce8287497262">addDirectParForEdge</a>(cs);</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"> 108</span>&#160; <span class="comment">// indirect call to the start routine function</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#aae1caa7231ab9436db98403d6a175149">addHareParForEdgeSetMap</a>(cs,<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// record join sites</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#ab86e221a93bec67a2ecb7cb53315f569">SVFModule::llvm_const_iterator</a> fi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), efi = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); fi != efi; ++fi)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *fi;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a032e8478a7b6a8bb0b7755c98a7bce91">const_inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (tdAPI-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">isTDJoin</a>(inst))</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = icfg-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; cg-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#a795d504a098634b1725af272b37e46e7">addJoinsite</a>(cs);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> cg;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</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;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a9da276dca5092d18f4f22d32e5ab6cdf"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">SVF::ThreadAPI::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *inst) const</div><div class="ttdoc">Return true if this call create a new thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00129">ThreadAPI.h:129</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a795d504a098634b1725af272b37e46e7"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a795d504a098634b1725af272b37e46e7">SVF::ThreadCallGraph::addJoinsite</a></div><div class="ttdeci">bool addJoinsite(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00336">ThreadCallGraph.h:336</a></div></div>
72
+ <div class="ttc" id="namespaceSVF_html_a032e8478a7b6a8bb0b7755c98a7bce91"><div class="ttname"><a href="namespaceSVF.html#a032e8478a7b6a8bb0b7755c98a7bce91">SVF::const_inst_iterator</a></div><div class="ttdeci">llvm::const_inst_iterator const_inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00117">BasicTypes.h:117</a></div></div>
72
73
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a563ebb1ece0adb4bafe5e14b2a024a91"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a563ebb1ece0adb4bafe5e14b2a024a91">SVF::ThreadCallGraph::addForksite</a></div><div class="ttdeci">bool addForksite(const CallICFGNode *cs)</div><div class="ttdoc">Add fork sites which directly or indirectly create a thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00331">ThreadCallGraph.h:331</a></div></div>
73
74
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
74
75
  <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
75
76
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
76
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a160997c1a0fb1000445d04b89d9c1323"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00111">BasicTypes.h:111</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1SVFModule_html_a648542aa5c4b487ad5aa12a39d15e951"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">SVF::SVFModule::llvmFunBegin</a></div><div class="ttdeci">llvm_iterator llvmFunBegin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00130">SVFModule.h:130</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_ab20211a66583387f0da4769bee65e300"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#ab20211a66583387f0da4769bee65e300">SVF::ThreadCallGraph::addThreadForkEdgeSetMap</a></div><div class="ttdeci">void addThreadForkEdgeSetMap(const CallICFGNode *cs, ThreadForkEdge *edge)</div><div class="ttdoc">map call instruction to its CallGraphEdge map </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00367">ThreadCallGraph.h:367</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1SVFModule_html_aa5a0780c5c69a1e9a0ba902b4ad49714"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVF::SVFModule::llvm_iterator</a></div><div class="ttdeci">LLVMFunctionSetType::iterator llvm_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00053">SVFModule.h:53</a></div></div>
@@ -94,7 +94,6 @@ $(function() {
94
94
  <div class="ttc" id="ICFG_8h_html"><div class="ttname"><a href="ICFG_8h.html">ICFG.h</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a86d75b7e3570337e484397e60f97d88e"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a86d75b7e3570337e484397e60f97d88e">SVF::ThreadAPI::isHareParFor</a></div><div class="ttdeci">bool isHareParFor(const Instruction *inst) const</div><div class="ttdoc">Return true if this call proceeds a hare_parallel_for. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00141">ThreadAPI.h:141</a></div></div>
96
96
  <div class="ttc" id="classSVF_1_1CallGraphBuilder_html_aa64a27e99434908a203e566074c66ebc"><div class="ttname"><a href="classSVF_1_1CallGraphBuilder.html#aa64a27e99434908a203e566074c66ebc">SVF::CallGraphBuilder::buildCallGraph</a></div><div class="ttdeci">PTACallGraph * buildCallGraph(SVFModule *svfModule)</div><div class="ttdoc">Build normal callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="CallGraphBuilder_8cpp_source.html#l00038">CallGraphBuilder.cpp:38</a></div></div>
97
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a9a4df49ba7ca3ad32d65e5ecf2dad707"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a9a4df49ba7ca3ad32d65e5ecf2dad707">const_inst_iterator</a></div><div class="ttdeci">llvm::const_inst_iterator const_inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
98
97
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a8cc5f9ff6039392ce1471cd830973c44"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">SVF::ThreadAPI::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *inst) const</div><div class="ttdoc">Return true if this call wait for a worker thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00223">ThreadAPI.h:223</a></div></div>
99
98
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
100
99
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
@@ -104,6 +103,7 @@ $(function() {
104
103
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00209">SVFUtil.h:209</a></div></div>
105
104
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_ae942f7d46198207219e5ce8287497262"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#ae942f7d46198207219e5ce8287497262">SVF::ThreadCallGraph::addDirectParForEdge</a></div><div class="ttdeci">void addDirectParForEdge(const CallICFGNode *cs)</div><div class="ttdoc">Add direct/indirect parallel for edges. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8cpp_source.html#l00224">ThreadCallGraph.cpp:224</a></div></div>
106
105
  <div class="ttc" id="CallGraphBuilder_8h_html"><div class="ttname"><a href="CallGraphBuilder_8h.html">CallGraphBuilder.h</a></div></div>
106
+ <div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
107
107
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a19e505dbca2d2b5128762b223b9a7114"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a19e505dbca2d2b5128762b223b9a7114">SVF::ThreadCallGraph::addDirectForkEdge</a></div><div class="ttdeci">void addDirectForkEdge(const CallICFGNode *cs)</div><div class="ttdoc">Add direct/indirect thread fork edges. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8cpp_source.html#l00147">ThreadCallGraph.cpp:147</a></div></div>
108
108
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a547b3bc62de65b9dbfc6dee55c063dd7"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00114">LLVMModule.h:114</a></div></div>
109
109
  </div><!-- fragment --></div><!-- contents -->
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">CoreBitVector.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="CoreBitVector_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">//===- CoreBitVector.h -- Dynamically sized bit vector data structure ------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * CoreBitVector.h</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Contiguous bit vector which resizes as required by common operations.</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * Created on: Jan 31, 2021</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Author: Mohamad Barbar</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#ifndef COREBITVECTOR_H_</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#define COREBITVECTOR_H_</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;assert.h&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</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="preprocessor">#include &quot;<a class="code" href="SVFBasicTypes_8h.html">Util/SVFBasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html#aaee26ffc13d05cd57f0fd7e4c2ea875c"> 33</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="classSVF_1_1CoreBitVector.html#aaee26ffc13d05cd57f0fd7e4c2ea875c">Word</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html#a63f5e4a36359ae62401e5f8dfecb86a3"> 34</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a63f5e4a36359ae62401e5f8dfecb86a3">WordSize</a>;</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"><a class="line" href="classSVF_1_1CoreBitVector.html#a45a3bf8465e63f723c0a551f0b0f37ff"> 36</a></span>&#160; <span class="keyword">class </span><a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> <a class="code" href="classSVF_1_1CoreBitVector.html#a45a3bf8465e63f723c0a551f0b0f37ff">const_iterator</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html#a624ebc80d138fbf2b015bf557d2891a6"> 38</a></span>&#160; <span class="keyword">typedef</span> const_iterator <a class="code" href="classSVF_1_1CoreBitVector.html#a624ebc80d138fbf2b015bf557d2891a6">iterator</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html#adb5b13df8bc76f00ceb145711cfb77e1">CoreBitVector</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html#adb5b13df8bc76f00ceb145711cfb77e1">CoreBitVector</a>(<span class="keywordtype">size_t</span> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html#adb5b13df8bc76f00ceb145711cfb77e1">CoreBitVector</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;cbv);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html#adb5b13df8bc76f00ceb145711cfb77e1">CoreBitVector</a>(<a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;&amp;cbv);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector.html#a3594d997fba0aa6201855199a884d98d">operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</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"> 57</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector.html#a3594d997fba0aa6201855199a884d98d">operator=</a>(<a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;&amp;rhs);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a98b9795b4fdc74d9d2efa9a3f2ecb62f">empty</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector.html#abfed2e7daf2407e11cade625ac19a6ce">count</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a1e523bab1013a9f3e9eaea56e53afa58">clear</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a7b20ffd3cd4a0ffc48a1348f657deaa0">test</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit) <span class="keyword">const</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a3299b296d20d2b76c6538ba51a684972">test_and_set</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">void</span> <span class="keyword">set</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a42fc777d574db4ef23b02308b944a85b">reset</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#af08c16aed45dfa65472f0b5ae518add2">contains</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a15be4ce7e9a07d9b01da0c60d51b22de">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a0ddd7fc5e043d36f3c62c2fb93b22684">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#af142d3bb07e77c28bba6ece5b5b13f51">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#af8e63360242a49fb63c3ef3d7071503d">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#ae84257a1544b94c9abf5c8d0f6cfaec9">operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a5b87ae9d4a713483522666c893d7eac9">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classSVF_1_1CoreBitVector.html#af979ecb48d3d5296bce5bd0b4676e359">hash</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</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; const_iterator <a class="code" href="classSVF_1_1CoreBitVector.html#a835bf11a1f698942db8e6bdadbbfd1f3">begin</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; const_iterator <a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</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;<span class="keyword">private</span>:</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#ab6d789e3c68390a9026fd4f8c4cf344a">extendBackward</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a5d3f1eb85bc388cb76c588b8d8b3c181">extendForward</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a73e5b15854f4f56f50992ed0d0cc7349">extendTo</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classSVF_1_1CoreBitVector.html#ad73fca28bd4882eaa70817023a632d35">indexForBit</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit) <span class="keyword">const</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a3c85fd2084e52df869cb8fcf2dab6486">canHold</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit) <span class="keyword">const</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector.html#a8825e54f584be8aa0ff627335064244e">finalBit</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector.html#a1ca118240e4c7f678d52a6ca4b3e6b2f">firstCommonBit</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a087f69adea5e9e83bd908a1ab0ee1383">nextSetIndex</a>(<span class="keyword">const</span> <span class="keywordtype">size_t</span> start) <span class="keyword">const</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html"> 147</a></span>&#160; <span class="keyword">class </span><a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a></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="keyword">public</span>:</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a3b33f7857169d26e1b90fbaa593e79ef"> 150</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a3b33f7857169d26e1b90fbaa593e79ef">iterator_category</a> = std::forward_iterator_tag;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a6a59f0e97fc9cf278ed22b0a4c109ae1"> 151</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a6a59f0e97fc9cf278ed22b0a4c109ae1">value_type</a> = <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#aeabc3acd9ce15b8beff0db8a49d8781f"> 152</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#aeabc3acd9ce15b8beff0db8a49d8781f">difference_type</a> = std::ptrdiff_t;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a6d8d22b1c8b4405a8e3caddacae6f8f5"> 153</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a6d8d22b1c8b4405a8e3caddacae6f8f5">pointer</a> = <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> *;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a65313b9702cf6767d2936852e09f04c5"> 154</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a65313b9702cf6767d2936852e09f04c5">reference</a> = <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> &amp;;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#abe0289ad45158397b6950afc920f34ef">CoreBitVectorIterator</a>(<span class="keywordtype">void</span>) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#abe0289ad45158397b6950afc920f34ef">CoreBitVectorIterator</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> *<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>, <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>=<span class="keyword">false</span>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#abe0289ad45158397b6950afc920f34ef">CoreBitVectorIterator</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#abe0289ad45158397b6950afc920f34ef">CoreBitVectorIterator</a>(<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;&amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#adb5a17e5916052f49390d6e99ff47b22">operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#adb5a17e5916052f49390d6e99ff47b22">operator=</a>(<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;&amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0afff5162af357634e7213e85b5371c7">operator++</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0afff5162af357634e7213e85b5371c7">operator++</a>(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#aec0b2c6ebcf16734a69a54613a18b33e">operator*</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a7278c27a0ab2096b29a537a8afe0be5e">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#aebdb5ddb9b50704f83dc924b7bfac74c">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#ad3af46dcfb0e2846587eb5a71f38161f">atEnd</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590"> 188</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> *<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a1afa1cb9e8377d3dab767aa4bfc713dc"> 190</a></span>&#160; std::vector&lt;Word&gt;::const_iterator <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a1afa1cb9e8377d3dab767aa4bfc713dc">wordIt</a>;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a853b685cf022839c183df46f1cafe638"> 193</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a853b685cf022839c183df46f1cafe638">bit</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; };</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html#a79dfa9f4c2efb6a0a2de18c6359c41bd"> 198</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector.html#a79dfa9f4c2efb6a0a2de18c6359c41bd">offset</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html#a807283a917e845ef19c4962b1744e98b"> 200</a></span>&#160; std::vector&lt;Word&gt; <a class="code" href="classSVF_1_1CoreBitVector.html#a807283a917e845ef19c4962b1744e98b">words</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;};</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="structSVF_1_1Hash_3_01CoreBitVector_01_4.html"> 204</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1Hash.html">Hash</a>&lt;<a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>&gt;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;{</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="structSVF_1_1Hash_3_01CoreBitVector_01_4.html#ad54ea05fd0e03af862a5d72f8c4db411"> 206</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structSVF_1_1Hash_3_01CoreBitVector_01_4.html#ad54ea05fd0e03af862a5d72f8c4db411">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> cbv.<a class="code" href="classSVF_1_1CoreBitVector.html#af979ecb48d3d5296bce5bd0b4676e359">hash</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;};</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;};</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor">#endif // COREBITVECTOR_H_</span></div><div class="ttc" id="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator_html_a853b685cf022839c183df46f1cafe638"><div class="ttname"><a href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a853b685cf022839c183df46f1cafe638">SVF::CoreBitVector::CoreBitVectorIterator::bit</a></div><div class="ttdeci">u32_t bit</div><div class="ttdef"><b>Definition:</b> <a href="CoreBitVector_8h_source.html#l00193">CoreBitVector.h:193</a></div></div>
69
+ <a href="CoreBitVector_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">//===- CoreBitVector.h -- Dynamically sized bit vector data structure ------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * CoreBitVector.h</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Contiguous bit vector which resizes as required by common operations.</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * Created on: Jan 31, 2021</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Author: Mohamad Barbar</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#ifndef COREBITVECTOR_H_</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#define COREBITVECTOR_H_</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;assert.h&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</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="preprocessor">#include &quot;<a class="code" href="SVFBasicTypes_8h.html">Util/SVFBasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html#aaee26ffc13d05cd57f0fd7e4c2ea875c"> 33</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="classSVF_1_1CoreBitVector.html#aaee26ffc13d05cd57f0fd7e4c2ea875c">Word</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html#a63f5e4a36359ae62401e5f8dfecb86a3"> 34</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a63f5e4a36359ae62401e5f8dfecb86a3">WordSize</a>;</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"><a class="line" href="classSVF_1_1CoreBitVector.html#a45a3bf8465e63f723c0a551f0b0f37ff"> 36</a></span>&#160; <span class="keyword">class </span><a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> <a class="code" href="classSVF_1_1CoreBitVector.html#a45a3bf8465e63f723c0a551f0b0f37ff">const_iterator</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html#a624ebc80d138fbf2b015bf557d2891a6"> 38</a></span>&#160; <span class="keyword">typedef</span> const_iterator <a class="code" href="classSVF_1_1CoreBitVector.html#a624ebc80d138fbf2b015bf557d2891a6">iterator</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html#adb5b13df8bc76f00ceb145711cfb77e1">CoreBitVector</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html#adb5b13df8bc76f00ceb145711cfb77e1">CoreBitVector</a>(<span class="keywordtype">size_t</span> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html#adb5b13df8bc76f00ceb145711cfb77e1">CoreBitVector</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;cbv);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html#adb5b13df8bc76f00ceb145711cfb77e1">CoreBitVector</a>(<a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;&amp;cbv);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector.html#a3594d997fba0aa6201855199a884d98d">operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</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"> 57</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector.html#a3594d997fba0aa6201855199a884d98d">operator=</a>(<a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;&amp;rhs);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a98b9795b4fdc74d9d2efa9a3f2ecb62f">empty</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector.html#abfed2e7daf2407e11cade625ac19a6ce">count</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a1e523bab1013a9f3e9eaea56e53afa58">clear</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a7b20ffd3cd4a0ffc48a1348f657deaa0">test</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit) <span class="keyword">const</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a3299b296d20d2b76c6538ba51a684972">test_and_set</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">void</span> <span class="keyword">set</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a42fc777d574db4ef23b02308b944a85b">reset</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#af08c16aed45dfa65472f0b5ae518add2">contains</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a15be4ce7e9a07d9b01da0c60d51b22de">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a0ddd7fc5e043d36f3c62c2fb93b22684">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#af142d3bb07e77c28bba6ece5b5b13f51">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#af8e63360242a49fb63c3ef3d7071503d">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#ae84257a1544b94c9abf5c8d0f6cfaec9">operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a5b87ae9d4a713483522666c893d7eac9">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a8ba857b68282055e485c441892e39b9b">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classSVF_1_1CoreBitVector.html#af979ecb48d3d5296bce5bd0b4676e359">hash</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</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; const_iterator <a class="code" href="classSVF_1_1CoreBitVector.html#a835bf11a1f698942db8e6bdadbbfd1f3">begin</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; const_iterator <a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</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;<span class="keyword">private</span>:</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#ab6d789e3c68390a9026fd4f8c4cf344a">extendBackward</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a5d3f1eb85bc388cb76c588b8d8b3c181">extendForward</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a73e5b15854f4f56f50992ed0d0cc7349">extendTo</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classSVF_1_1CoreBitVector.html#ad73fca28bd4882eaa70817023a632d35">indexForBit</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit) <span class="keyword">const</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a3c85fd2084e52df869cb8fcf2dab6486">canHold</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit) <span class="keyword">const</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector.html#a8825e54f584be8aa0ff627335064244e">finalBit</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector.html#a1ca118240e4c7f678d52a6ca4b3e6b2f">firstCommonBit</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a087f69adea5e9e83bd908a1ab0ee1383">nextSetIndex</a>(<span class="keyword">const</span> <span class="keywordtype">size_t</span> start) <span class="keyword">const</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html"> 147</a></span>&#160; <span class="keyword">class </span><a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a></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="keyword">public</span>:</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a3b33f7857169d26e1b90fbaa593e79ef"> 150</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a3b33f7857169d26e1b90fbaa593e79ef">iterator_category</a> = std::forward_iterator_tag;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a6a59f0e97fc9cf278ed22b0a4c109ae1"> 151</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a6a59f0e97fc9cf278ed22b0a4c109ae1">value_type</a> = <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#aeabc3acd9ce15b8beff0db8a49d8781f"> 152</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#aeabc3acd9ce15b8beff0db8a49d8781f">difference_type</a> = std::ptrdiff_t;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a6d8d22b1c8b4405a8e3caddacae6f8f5"> 153</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a6d8d22b1c8b4405a8e3caddacae6f8f5">pointer</a> = <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> *;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a65313b9702cf6767d2936852e09f04c5"> 154</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a65313b9702cf6767d2936852e09f04c5">reference</a> = <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> &amp;;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#abe0289ad45158397b6950afc920f34ef">CoreBitVectorIterator</a>(<span class="keywordtype">void</span>) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#abe0289ad45158397b6950afc920f34ef">CoreBitVectorIterator</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> *<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>, <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector.html#a93cdd9890522cc9fee2451567e0b1f0d">end</a>=<span class="keyword">false</span>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#abe0289ad45158397b6950afc920f34ef">CoreBitVectorIterator</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#abe0289ad45158397b6950afc920f34ef">CoreBitVectorIterator</a>(<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;&amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#adb5a17e5916052f49390d6e99ff47b22">operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#adb5a17e5916052f49390d6e99ff47b22">operator=</a>(<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;&amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0afff5162af357634e7213e85b5371c7">operator++</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0afff5162af357634e7213e85b5371c7">operator++</a>(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#aec0b2c6ebcf16734a69a54613a18b33e">operator*</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a7278c27a0ab2096b29a537a8afe0be5e">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#aebdb5ddb9b50704f83dc924b7bfac74c">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html">CoreBitVectorIterator</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#ad3af46dcfb0e2846587eb5a71f38161f">atEnd</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590"> 188</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> *<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a1afa1cb9e8377d3dab767aa4bfc713dc"> 190</a></span>&#160; std::vector&lt;Word&gt;::const_iterator <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a1afa1cb9e8377d3dab767aa4bfc713dc">wordIt</a>;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a853b685cf022839c183df46f1cafe638"> 193</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a853b685cf022839c183df46f1cafe638">bit</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; };</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html#a79dfa9f4c2efb6a0a2de18c6359c41bd"> 198</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CoreBitVector.html#a79dfa9f4c2efb6a0a2de18c6359c41bd">offset</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1CoreBitVector.html#a807283a917e845ef19c4962b1744e98b"> 200</a></span>&#160; std::vector&lt;Word&gt; <a class="code" href="classSVF_1_1CoreBitVector.html#a807283a917e845ef19c4962b1744e98b">words</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;};</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="structSVF_1_1Hash_3_01CoreBitVector_01_4.html"> 204</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1Hash.html">Hash</a>&lt;<a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a>&gt;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;{</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="structSVF_1_1Hash_3_01CoreBitVector_01_4.html#ad54ea05fd0e03af862a5d72f8c4db411"> 206</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structSVF_1_1Hash_3_01CoreBitVector_01_4.html#ad54ea05fd0e03af862a5d72f8c4db411">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CoreBitVector.html">CoreBitVector</a> &amp;<a class="code" href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a0cba79551b56ed83dc45ab63619dc590">cbv</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> cbv.<a class="code" href="classSVF_1_1CoreBitVector.html#af979ecb48d3d5296bce5bd0b4676e359">hash</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;};</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor">#endif // COREBITVECTOR_H_</span></div><div class="ttc" id="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator_html_a853b685cf022839c183df46f1cafe638"><div class="ttname"><a href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#a853b685cf022839c183df46f1cafe638">SVF::CoreBitVector::CoreBitVectorIterator::bit</a></div><div class="ttdeci">u32_t bit</div><div class="ttdef"><b>Definition:</b> <a href="CoreBitVector_8h_source.html#l00193">CoreBitVector.h:193</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator_html_aeabc3acd9ce15b8beff0db8a49d8781f"><div class="ttname"><a href="classSVF_1_1CoreBitVector_1_1CoreBitVectorIterator.html#aeabc3acd9ce15b8beff0db8a49d8781f">SVF::CoreBitVector::CoreBitVectorIterator::difference_type</a></div><div class="ttdeci">std::ptrdiff_t difference_type</div><div class="ttdef"><b>Definition:</b> <a href="CoreBitVector_8h_source.html#l00152">CoreBitVector.h:152</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1CoreBitVector_html_a5b87ae9d4a713483522666c893d7eac9"><div class="ttname"><a href="classSVF_1_1CoreBitVector.html#a5b87ae9d4a713483522666c893d7eac9">SVF::CoreBitVector::operator-=</a></div><div class="ttdeci">bool operator-=(const CoreBitVector &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="CoreBitVector_8cpp_source.html#l00261">CoreBitVector.cpp:261</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1CoreBitVector_html_a42fc777d574db4ef23b02308b944a85b"><div class="ttname"><a href="classSVF_1_1CoreBitVector.html#a42fc777d574db4ef23b02308b944a85b">SVF::CoreBitVector::reset</a></div><div class="ttdeci">void reset(u32_t bit)</div><div class="ttdoc">Resets bit in the CBV. </div><div class="ttdef"><b>Definition:</b> <a href="CoreBitVector_8cpp_source.html#l00095">CoreBitVector.cpp:95</a></div></div>