svf-tools 1.0.539 → 1.0.542

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 (205) hide show
  1. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  2. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +2 -1
  3. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +1 -1
  4. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +5 -4
  5. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +15 -15
  6. package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +4 -4
  7. package/SVF-doxygen/html/html/CFLGrammar_8txt.html +39 -39
  8. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +19 -8
  9. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +16 -15
  10. package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +1 -1
  11. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -1
  12. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +2 -1
  13. package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
  14. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/DDAStat_8h.html +1 -1
  16. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  17. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  19. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +4 -4
  20. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +3 -3
  21. package/SVF-doxygen/html/html/ICFGStat_8h.html +1 -1
  22. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -1
  25. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/LockAnalysis_8cpp.html +1 -1
  27. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
  29. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +2 -1
  31. package/SVF-doxygen/html/html/MTAStat_8h.html +1 -1
  32. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp.html +1 -1
  35. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/Options_8cpp_source.html +4 -3
  37. package/SVF-doxygen/html/html/Options_8h.html +1 -1
  38. package/SVF-doxygen/html/html/Options_8h_source.html +4 -3
  39. package/SVF-doxygen/html/html/PEGGrammar_8txt.html +314 -0
  40. package/SVF-doxygen/html/html/PTAStat_8cpp.html +1 -1
  41. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +2 -2
  42. package/SVF-doxygen/html/html/PTAStat_8h.html +2 -2
  43. package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
  44. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +25 -25
  45. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +22 -12
  47. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +11 -11
  48. package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +1 -1
  49. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +10 -10
  51. package/SVF-doxygen/html/html/SVFGStat_8h.html +1 -1
  52. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +5 -5
  54. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  55. package/SVF-doxygen/html/html/SVFUtil_8h.html +1 -1
  56. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -1
  57. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +1 -1
  58. package/SVF-doxygen/html/html/TypeAnalysis_8cpp.html +1 -1
  59. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -1
  61. package/SVF-doxygen/html/html/VFG_8cpp_source.html +27 -25
  62. package/SVF-doxygen/html/html/VFG_8h_source.html +10 -10
  63. package/SVF-doxygen/html/html/WPAStat_8h.html +1 -1
  64. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  65. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
  66. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  67. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +12 -11
  68. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +72 -4
  69. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +2 -2
  70. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
  71. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +2 -2
  72. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  73. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -2
  75. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +50 -35
  76. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  77. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
  78. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +50 -49
  79. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +26 -26
  80. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +10 -7
  81. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  82. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  83. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  84. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +11 -11
  85. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +2 -2
  86. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +10 -10
  87. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
  88. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +2 -2
  90. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -2
  93. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -2
  94. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +48 -47
  95. package/SVF-doxygen/html/html/classSVF_1_1Options.html +28 -2
  96. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  97. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +7 -7
  98. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +108 -108
  101. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +8 -8
  102. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +25 -25
  104. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +3 -3
  105. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  107. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +2 -2
  108. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +2 -2
  109. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +29 -26
  110. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  111. package/SVF-doxygen/html/html/dir_eef3a4ca6ca2cab0eb5fbea30ec32c1a.html +0 -2
  112. package/SVF-doxygen/html/html/files.html +15 -15
  113. package/SVF-doxygen/html/html/functions_b.html +3 -0
  114. package/SVF-doxygen/html/html/functions_c.html +22 -20
  115. package/SVF-doxygen/html/html/functions_f.html +7 -9
  116. package/SVF-doxygen/html/html/functions_func_b.html +3 -0
  117. package/SVF-doxygen/html/html/functions_func_i.html +1 -1
  118. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  119. package/SVF-doxygen/html/html/functions_l.html +6 -6
  120. package/SVF-doxygen/html/html/functions_o.html +15 -15
  121. package/SVF-doxygen/html/html/functions_p.html +15 -16
  122. package/SVF-doxygen/html/html/functions_r.html +7 -5
  123. package/SVF-doxygen/html/html/functions_s.html +13 -13
  124. package/SVF-doxygen/html/html/functions_t.html +8 -10
  125. package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
  126. package/SVF-doxygen/html/html/functions_w.html +11 -11
  127. package/SVF-doxygen/html/html/globals.html +1 -0
  128. package/SVF-doxygen/html/html/globals_a.html +3 -1
  129. package/SVF-doxygen/html/html/globals_c.html +6 -5
  130. package/SVF-doxygen/html/html/globals_e.html +1 -0
  131. package/SVF-doxygen/html/html/globals_f.html +7 -5
  132. package/SVF-doxygen/html/html/globals_g.html +7 -3
  133. package/SVF-doxygen/html/html/globals_m.html +6 -3
  134. package/SVF-doxygen/html/html/globals_v.html +2 -1
  135. package/SVF-doxygen/html/html/globals_vars.html +22 -7
  136. package/SVF-doxygen/html/html/namespaceSVF.html +2 -2
  137. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  138. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
  139. package/SVF-doxygen/html/html/search/all_0.js +1 -1
  140. package/SVF-doxygen/html/html/search/all_1.js +2 -2
  141. package/SVF-doxygen/html/html/search/all_10.js +8 -6
  142. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  143. package/SVF-doxygen/html/html/search/all_12.js +10 -10
  144. package/SVF-doxygen/html/html/search/all_13.js +4 -4
  145. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  146. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  147. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  148. package/SVF-doxygen/html/html/search/all_2.js +1 -0
  149. package/SVF-doxygen/html/html/search/all_3.js +4 -4
  150. package/SVF-doxygen/html/html/search/all_5.js +1 -1
  151. package/SVF-doxygen/html/html/search/all_6.js +5 -5
  152. package/SVF-doxygen/html/html/search/all_7.js +4 -4
  153. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  154. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  155. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  156. package/SVF-doxygen/html/html/search/all_e.js +4 -4
  157. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  158. package/SVF-doxygen/html/html/search/files_c.js +1 -0
  159. package/SVF-doxygen/html/html/search/functions_1.js +1 -0
  160. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  161. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  162. package/SVF-doxygen/html/html/search/variables_0.js +1 -1
  163. package/SVF-doxygen/html/html/search/variables_1.js +2 -2
  164. package/SVF-doxygen/html/html/search/variables_10.js +2 -1
  165. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  166. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  167. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  168. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  169. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  170. package/SVF-doxygen/html/html/search/variables_6.js +2 -2
  171. package/SVF-doxygen/html/html/search/variables_7.js +4 -4
  172. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  173. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  174. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
  175. package/include/CFL/CFGNormalizer.h +3 -3
  176. package/include/CFL/CFLAlias.h +5 -1
  177. package/include/CFL/CFLGraphBuilder.h +11 -1
  178. package/include/CFL/PEGGrammar.txt +28 -0
  179. package/include/DDA/DDAStat.h +1 -1
  180. package/include/Graphs/ICFGStat.h +1 -1
  181. package/include/Graphs/SVFGStat.h +1 -1
  182. package/include/MTA/MTAStat.h +1 -1
  183. package/include/MemoryModel/PersistentPointsToCache.h +0 -2
  184. package/include/SVF-FE/LLVMUtil.h +2 -2
  185. package/include/Util/ExtAPI.h +2 -2
  186. package/include/Util/Options.h +2 -1
  187. package/include/{MemoryModel → Util}/PTAStat.h +0 -0
  188. package/include/WPA/Andersen.h +3 -3
  189. package/include/WPA/WPAStat.h +1 -1
  190. package/lib/CFL/CFLAlias.cpp +12 -7
  191. package/lib/CFL/CFLGraphBuilder.cpp +135 -0
  192. package/lib/CFL/GrammarBuilder.cpp +12 -8
  193. package/lib/Graphs/SVFGStat.cpp +1 -3
  194. package/lib/Graphs/VFG.cpp +6 -0
  195. package/lib/MTA/LockAnalysis.cpp +1 -1
  196. package/lib/MTA/MHP.cpp +1 -1
  197. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  198. package/lib/MemoryModel/PointerAnalysisImpl.cpp +31 -1
  199. package/lib/SVF-FE/CHGBuilder.cpp +1 -1
  200. package/lib/Util/NodeIDAllocator.cpp +1 -1
  201. package/lib/Util/Options.cpp +11 -4
  202. package/lib/Util/PTAStat.cpp +4 -9
  203. package/lib/Util/ThreadAPI.cpp +1 -6
  204. package/lib/WPA/TypeAnalysis.cpp +1 -1
  205. package/package.json +1 -1
@@ -162,7 +162,7 @@ Public Member Functions</h2></td></tr>
162
162
  <tr class="separator:a1832c19de2fd7ff01793e75a051d3f24"><td class="memSeparator" colspan="2">&#160;</td></tr>
163
163
  <tr class="memitem:aa98b80dc86d0549183ec69b44b391bd7"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#aa98b80dc86d0549183ec69b44b391bd7">extType_toString</a> (<a class="el" href="classSVF_1_1ExtAPI.html#a5df65081e82a05223ce781660ee199ca">extType</a> <a class="el" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</td></tr>
164
164
  <tr class="separator:aa98b80dc86d0549183ec69b44b391bd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
165
- <tr class="memitem:ac3e34227968d6a2835d63b1052da3c1a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#ac3e34227968d6a2835d63b1052da3c1a">get_name</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
165
+ <tr class="memitem:ac3e34227968d6a2835d63b1052da3c1a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#ac3e34227968d6a2835d63b1052da3c1a">get_name</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="PEGGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
166
166
  <tr class="separator:ac3e34227968d6a2835d63b1052da3c1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
167
167
  <tr class="memitem:a906a3728bbcfb7a43ac0938ffcb3df23"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a906a3728bbcfb7a43ac0938ffcb3df23">get_opArgs</a> (const <a class="el" href="structcJSON.html">cJSON</a> *value)</td></tr>
168
168
  <tr class="separator:a906a3728bbcfb7a43ac0938ffcb3df23"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -176,25 +176,25 @@ Public Member Functions</h2></td></tr>
176
176
  <tr class="separator:accdb0b7f3ae8d4028bd09f3d861aa2be"><td class="memSeparator" colspan="2">&#160;</td></tr>
177
177
  <tr class="memitem:a5ef7edb1664ab87f00418e7808d00258"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a5ef7edb1664ab87f00418e7808d00258">isOverwrittenAppFunction</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a> *callee)</td></tr>
178
178
  <tr class="separator:a5ef7edb1664ab87f00418e7808d00258"><td class="memSeparator" colspan="2">&#160;</td></tr>
179
- <tr class="memitem:ae20ea24cce02de87d89a2d0b773a2357"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#ae20ea24cce02de87d89a2d0b773a2357">has_static</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
179
+ <tr class="memitem:ae20ea24cce02de87d89a2d0b773a2357"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#ae20ea24cce02de87d89a2d0b773a2357">has_static</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="PEGGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
180
180
  <tr class="separator:ae20ea24cce02de87d89a2d0b773a2357"><td class="memSeparator" colspan="2">&#160;</td></tr>
181
- <tr class="memitem:ad3eefa086aa514e4d245a975ea3d45b5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#ad3eefa086aa514e4d245a975ea3d45b5">has_static2</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
181
+ <tr class="memitem:ad3eefa086aa514e4d245a975ea3d45b5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#ad3eefa086aa514e4d245a975ea3d45b5">has_static2</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="PEGGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
182
182
  <tr class="separator:ad3eefa086aa514e4d245a975ea3d45b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
183
- <tr class="memitem:a0d865c55681a3b4a9bb965fd0200029d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a0d865c55681a3b4a9bb965fd0200029d">is_alloc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
183
+ <tr class="memitem:a0d865c55681a3b4a9bb965fd0200029d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a0d865c55681a3b4a9bb965fd0200029d">is_alloc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="PEGGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
184
184
  <tr class="separator:a0d865c55681a3b4a9bb965fd0200029d"><td class="memSeparator" colspan="2">&#160;</td></tr>
185
- <tr class="memitem:a158e7da51d45b746e067dc40e912c477"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a158e7da51d45b746e067dc40e912c477">is_arg_alloc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
185
+ <tr class="memitem:a158e7da51d45b746e067dc40e912c477"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a158e7da51d45b746e067dc40e912c477">is_arg_alloc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="PEGGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
186
186
  <tr class="separator:a158e7da51d45b746e067dc40e912c477"><td class="memSeparator" colspan="2">&#160;</td></tr>
187
- <tr class="memitem:a68939c789d0530151a4e79e79317531a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a68939c789d0530151a4e79e79317531a">get_alloc_arg_pos</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
187
+ <tr class="memitem:a68939c789d0530151a4e79e79317531a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a68939c789d0530151a4e79e79317531a">get_alloc_arg_pos</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="PEGGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
188
188
  <tr class="separator:a68939c789d0530151a4e79e79317531a"><td class="memSeparator" colspan="2">&#160;</td></tr>
189
- <tr class="memitem:a934e293bd4050cb1ab5c19e8ad391ebe"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a934e293bd4050cb1ab5c19e8ad391ebe">no_struct_alloc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
189
+ <tr class="memitem:a934e293bd4050cb1ab5c19e8ad391ebe"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a934e293bd4050cb1ab5c19e8ad391ebe">no_struct_alloc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="PEGGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
190
190
  <tr class="separator:a934e293bd4050cb1ab5c19e8ad391ebe"><td class="memSeparator" colspan="2">&#160;</td></tr>
191
- <tr class="memitem:aeef27a358ba1815760c893bd2d2335b1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#aeef27a358ba1815760c893bd2d2335b1">is_dealloc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
191
+ <tr class="memitem:aeef27a358ba1815760c893bd2d2335b1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#aeef27a358ba1815760c893bd2d2335b1">is_dealloc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="PEGGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
192
192
  <tr class="separator:aeef27a358ba1815760c893bd2d2335b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
193
- <tr class="memitem:a82ebf71c5214f891f17e842e0b133b4f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a82ebf71c5214f891f17e842e0b133b4f">is_noop</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
193
+ <tr class="memitem:a82ebf71c5214f891f17e842e0b133b4f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a82ebf71c5214f891f17e842e0b133b4f">is_noop</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="PEGGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
194
194
  <tr class="separator:a82ebf71c5214f891f17e842e0b133b4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
195
- <tr class="memitem:ac6d6bdc51a6b75d6d5741cb751559fe4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#ac6d6bdc51a6b75d6d5741cb751559fe4">is_realloc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
195
+ <tr class="memitem:ac6d6bdc51a6b75d6d5741cb751559fe4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#ac6d6bdc51a6b75d6d5741cb751559fe4">is_realloc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="PEGGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
196
196
  <tr class="separator:ac6d6bdc51a6b75d6d5741cb751559fe4"><td class="memSeparator" colspan="2">&#160;</td></tr>
197
- <tr class="memitem:a21f45c806672255c044d39490990eae2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a21f45c806672255c044d39490990eae2">is_ext</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</td></tr>
197
+ <tr class="memitem:a21f45c806672255c044d39490990eae2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ExtAPI.html#a21f45c806672255c044d39490990eae2">is_ext</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="el" href="PEGGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</td></tr>
198
198
  <tr class="separator:a21f45c806672255c044d39490990eae2"><td class="memSeparator" colspan="2">&#160;</td></tr>
199
199
  </table><table class="memberdecls">
200
200
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
@@ -1290,7 +1290,7 @@ Additional Inherited Members</h2></td></tr>
1290
1290
  <div class="fragment"><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;{</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">for</span> (std::pair&lt;NodeID, NodeID&gt; locPA : cmp)</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="comment">// loc doesn&#39;t make a difference for FSPTA.</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> = locPA.second;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">for</span> (std::pair&lt;NodeID, NodeID&gt; locPB : cmp)</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; {</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (locPB == locPA) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> q = locPB.second;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="classSVF_1_1BVDataPTAImpl.html#adaba5a41a60e32d18d964bdb8ae5b2df">alias</a>(p, q))</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>:</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; ++(*noAliases);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>:</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; ++(*mayAliases);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; assert(<span class="stringliteral">&quot;Not May/NoAlias?&quot;</span>);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; }</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; }</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;}</div><div class="ttc" id="cJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
1291
1291
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
1292
1292
  <div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">SVF::MayAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00199">SVFBasicTypes.h:199</a></div></div>
1293
- <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_adaba5a41a60e32d18d964bdb8ae5b2df"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#adaba5a41a60e32d18d964bdb8ae5b2df">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *V1, const Value *V2)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Value infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00463">PointerAnalysisImpl.cpp:463</a></div></div>
1293
+ <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_adaba5a41a60e32d18d964bdb8ae5b2df"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#adaba5a41a60e32d18d964bdb8ae5b2df">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *V1, const Value *V2)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Value infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00493">PointerAnalysisImpl.cpp:493</a></div></div>
1294
1294
  <div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">SVF::NoAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00198">SVFBasicTypes.h:198</a></div></div>
1295
1295
  </div><!-- fragment -->
1296
1296
  </div>
@@ -2829,7 +2829,7 @@ Additional Inherited Members</h2></td></tr>
2829
2829
 
2830
2830
  <p class="definition">Definition at line <a class="el" href="FlowSensitive_8cpp_source.html#l00639">639</a> of file <a class="el" href="FlowSensitive_8cpp_source.html">FlowSensitive.cpp</a>.</p>
2831
2831
  <div class="fragment"><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;{</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a> newEdges;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296">onTheFlyCallGraphSolve</a>(callsites, newEdges);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="comment">// Bound the new edges by the Andersen&#39;s call graph.</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="comment">// TODO: we want this to be an assertion eventually.</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a> &amp;andersCallEdgeMap = <a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>();</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> CallEdgeMap::value_type &amp;csfs : newEdges)</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *potentialCallSite = csfs.first;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">FunctionSet</a> &amp;potentialFunctionSet = csfs.second;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="comment">// Check this callsite even calls anything per Andersen&#39;s.</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keyword">typename</span> CallEdgeMap::const_iterator andersFunctionSetIt</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; = andersCallEdgeMap.find(potentialCallSite);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">if</span> (andersFunctionSetIt == andersCallEdgeMap.end())</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; potentialFunctionSet.clear();</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">FunctionSet</a> &amp;andersFunctionSet = andersFunctionSetIt-&gt;second;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">for</span> (FunctionSet::iterator potentialFunctionIt = potentialFunctionSet.begin();</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; potentialFunctionIt != potentialFunctionSet.end(); )</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *potentialFunction = *potentialFunctionIt;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">if</span> (andersFunctionSet.find(potentialFunction) == andersFunctionSet.end())</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; {</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="comment">// potentialFunction is not in the Andersen&#39;s call graph -- remove it.</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; potentialFunctionIt = potentialFunctionSet.erase(potentialFunctionIt);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; {</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="comment">// potentialFunction is in the Andersen&#39;s call graph -- keep it..</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; ++potentialFunctionIt;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; }</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <a class="code" href="classSVF_1_1FlowSensitive.html#a69289c48fa91f850da90de080b9d26e5">SVFGEdgeSetTy</a> svfgEdges;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <a class="code" href="classSVF_1_1FlowSensitive.html#ad7640ada31b5cb542e492e27ab4fe1af">connectCallerAndCallee</a>(newEdges, svfgEdges);</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <a class="code" href="classSVF_1_1FlowSensitive.html#a1886b4964efa92cfff761493d12768b8">updateConnectedNodes</a>(svfgEdges);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <a class="code" href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07">updateCallGraphTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">return</span> (!newEdges.empty());</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;}</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_a1886b4964efa92cfff761493d12768b8"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a1886b4964efa92cfff761493d12768b8">SVF::FlowSensitive::updateConnectedNodes</a></div><div class="ttdeci">virtual void updateConnectedNodes(const SVFGEdgeSetTy &amp;edges)</div><div class="ttdoc">Update nodes connected during updating call graph. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00712">FlowSensitive.cpp:712</a></div></div>
2832
- <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a9830d4676fd424b633f8e4d918734296"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296">SVF::BVDataPTAImpl::onTheFlyCallGraphSolve</a></div><div class="ttdeci">virtual void onTheFlyCallGraphSolve(const CallSiteToFunPtrMap &amp;callsites, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">On the fly call graph construction. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00383">PointerAnalysisImpl.cpp:383</a></div></div>
2832
+ <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a9830d4676fd424b633f8e4d918734296"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296">SVF::BVDataPTAImpl::onTheFlyCallGraphSolve</a></div><div class="ttdeci">virtual void onTheFlyCallGraphSolve(const CallSiteToFunPtrMap &amp;callsites, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">On the fly call graph construction. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00413">PointerAnalysisImpl.cpp:413</a></div></div>
2833
2833
  <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>
2834
2834
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_afc140b6c8e78dc2d962f64fdf53b1e07"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07">SVF::FlowSensitive::updateCallGraphTime</a></div><div class="ttdeci">double updateCallGraphTime</div><div class="ttdoc">time of updating call graph </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00314">FlowSensitive.h:314</a></div></div>
2835
2835
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a35bd5f0fb2c146199e9f1aa6a19b4062"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">SVF::PointerAnalysis::CallEdgeMap</a></div><div class="ttdeci">OrderedMap&lt; const CallICFGNode *, FunctionSet &gt; CallEdgeMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00106">PointerAnalysis.h:106</a></div></div>
@@ -161,14 +161,14 @@ Private Attributes</h2></td></tr>
161
161
  <p>Build grammarBase from fileName. </p>
162
162
  <p>build grammarbase from textfile </p>
163
163
 
164
- <p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00106">106</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
165
- <div class="fragment"><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; std::smatch matches;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter = <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter1 = <span class="stringliteral">&quot;-&gt;&quot;</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> word = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordtype">size_t</span> pos;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> prod;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; std::vector&lt;std::string&gt; wordProdVec = <a class="code" href="classSVF_1_1GrammarBuilder.html#abad6b574d9f88e2b4ebb6372dc903f62">loadWordProductions</a>();</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="keywordflow">for</span> (<span class="keyword">auto</span> wordProd : wordProdVec)</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="keywordflow">if</span> ((pos = wordProd.find(delimiter1)) != std::string::npos)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> RHS = <a class="code" href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">stripSpace</a>(wordProd.substr(0, pos));</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> LHS = wordProd.substr(pos + delimiter1.size(), wordProd.size() - 1);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#ad4f53184d04d9f7a737b19f63d002550">GrammarBase::Symbol</a> RHSSymbol = <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">insertNonTerminalSymbol</a>(RHS);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; prod.push_back(RHSSymbol);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().find(RHSSymbol) == <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().end()) <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().insert({RHSSymbol, {}});</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; std::regex LHSRegEx(<span class="stringliteral">&quot;\\s*(.*)&quot;</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; std::regex_search(LHS, matches, LHSRegEx);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; LHS = matches.str(1);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">while</span> ((pos = LHS.find(delimiter)) != std::string::npos)</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; word = LHS.substr(0, pos);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; LHS.erase(0, pos + delimiter.length()); <span class="comment">//Capital is Nonterminal, Otherwise is terminal</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; prod.push_back(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(word));</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; prod.push_back(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(LHS));</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().at(RHSSymbol).insert(prod);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; prod = {};</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;};</div><div class="ttc" id="classSVF_1_1GrammarBuilder_html_a7b81810150ce896801e4e6a831ab98aa"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">SVF::GrammarBuilder::grammar</a></div><div class="ttdeci">GrammarBase * grammar</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00074">GrammarBuilder.h:74</a></div></div>
164
+ <p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00110">110</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
165
+ <div class="fragment"><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;{</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; std::smatch matches;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter = <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter1 = <span class="stringliteral">&quot;-&gt;&quot;</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> word = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">size_t</span> pos;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> prod;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; std::vector&lt;std::string&gt; wordProdVec = <a class="code" href="classSVF_1_1GrammarBuilder.html#abad6b574d9f88e2b4ebb6372dc903f62">loadWordProductions</a>();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> wordProd : wordProdVec)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> ((pos = wordProd.find(delimiter1)) != std::string::npos)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> RHS = <a class="code" href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">stripSpace</a>(wordProd.substr(0, pos));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> LHS = wordProd.substr(pos + delimiter1.size(), wordProd.size() - 1);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#ad4f53184d04d9f7a737b19f63d002550">GrammarBase::Symbol</a> RHSSymbol = <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">insertNonTerminalSymbol</a>(RHS);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; prod.push_back(RHSSymbol);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().find(RHSSymbol) == <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().end()) <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().insert({RHSSymbol, {}});</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; std::regex LHSRegEx(<span class="stringliteral">&quot;\\s*(.*)&quot;</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; std::regex_search(LHS, matches, LHSRegEx);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; LHS = matches.str(1);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">while</span> ((pos = LHS.find(delimiter)) != std::string::npos)</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; word = LHS.substr(0, pos);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; LHS.erase(0, pos + delimiter.length()); <span class="comment">//Capital is Nonterminal, Otherwise is terminal</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; prod.push_back(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(word));</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; prod.push_back(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(LHS));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().at(RHSSymbol).insert(prod);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; prod = {};</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;};</div><div class="ttc" id="classSVF_1_1GrammarBuilder_html_a7b81810150ce896801e4e6a831ab98aa"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">SVF::GrammarBuilder::grammar</a></div><div class="ttdeci">GrammarBase * grammar</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00074">GrammarBuilder.h:74</a></div></div>
166
166
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a4561438149716c91178ea013686f66ae"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">SVF::GrammarBase::getRawProductions</a></div><div class="ttdeci">SymbolMap&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00180">CFLGrammar.h:180</a></div></div>
167
- <div class="ttc" id="classSVF_1_1GrammarBuilder_html_abad6b574d9f88e2b4ebb6372dc903f62"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#abad6b574d9f88e2b4ebb6372dc903f62">SVF::GrammarBuilder::loadWordProductions</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; loadWordProductions() const</div><div class="ttdoc">Parse whole production string to production vector. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00080">GrammarBuilder.cpp:80</a></div></div>
167
+ <div class="ttc" id="classSVF_1_1GrammarBuilder_html_abad6b574d9f88e2b4ebb6372dc903f62"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#abad6b574d9f88e2b4ebb6372dc903f62">SVF::GrammarBuilder::loadWordProductions</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; loadWordProductions() const</div><div class="ttdoc">Parse whole production string to production vector. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00084">GrammarBuilder.cpp:84</a></div></div>
168
168
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a63389968c8d246a84562a8d17e08790b"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">SVF::GrammarBase::insertNonTerminalSymbol</a></div><div class="ttdeci">Symbol insertNonTerminalSymbol(std::string strLit)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00231">CFLGrammar.cpp:231</a></div></div>
169
169
  <div class="ttc" id="classSVF_1_1GrammarBase_html_af384c960a5edc576cbfb60a869e346ec"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">SVF::GrammarBase::Production</a></div><div class="ttdeci">std::vector&lt; Symbol &gt; Production</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00156">CFLGrammar.h:156</a></div></div>
170
170
  <div class="ttc" id="classSVF_1_1GrammarBase_html_ad4f53184d04d9f7a737b19f63d002550"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ad4f53184d04d9f7a737b19f63d002550">SVF::GrammarBase::Symbol</a></div><div class="ttdeci">struct SVF::GrammarBase::Symbol Symbol</div></div>
171
- <div class="ttc" id="classSVF_1_1GrammarBuilder_html_a6de372fbe80d33a5688cada0adca0bb8"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">SVF::GrammarBuilder::stripSpace</a></div><div class="ttdeci">const std::string stripSpace(std::string s) const</div><div class="ttdoc">Strip front and tail space. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00096">GrammarBuilder.cpp:96</a></div></div>
171
+ <div class="ttc" id="classSVF_1_1GrammarBuilder_html_a6de372fbe80d33a5688cada0adca0bb8"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">SVF::GrammarBuilder::stripSpace</a></div><div class="ttdeci">const std::string stripSpace(std::string s) const</div><div class="ttdoc">Strip front and tail space. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00100">GrammarBuilder.cpp:100</a></div></div>
172
172
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
173
173
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a3c16f37c05de31fbd2be1ae9c0961e84"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">SVF::GrammarBase::insertSymbol</a></div><div class="ttdeci">Symbol insertSymbol(std::string strLit)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00217">CFLGrammar.cpp:217</a></div></div>
174
174
  </div><!-- fragment -->
@@ -219,8 +219,8 @@ Private Attributes</h2></td></tr>
219
219
 
220
220
  <p>Parse whole production string to production vector. </p>
221
221
 
222
- <p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00080">80</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
223
- <div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">size_t</span> pos = 0;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lines = <a class="code" href="classSVF_1_1GrammarBuilder.html#a5a34166b4b1ce1dcc985f4619f4a2bbc">parseProductionsString</a>();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> word = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; std::vector&lt;std::string&gt; wordProds;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter = <span class="stringliteral">&quot;;&quot;</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">while</span> ((pos = lines.find(<span class="stringliteral">&quot;;&quot;</span>)) != std::string::npos)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; word = lines.substr(0, pos);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; wordProds.push_back(word);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; lines.erase(0, pos + delimiter.length());</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="keywordflow">return</span> wordProds;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
222
+ <p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00084">84</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
223
+ <div class="fragment"><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="keywordtype">size_t</span> pos = 0;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lines = <a class="code" href="classSVF_1_1GrammarBuilder.html#a5a34166b4b1ce1dcc985f4619f4a2bbc">parseProductionsString</a>();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> word = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; std::vector&lt;std::string&gt; wordProds;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter = <span class="stringliteral">&quot;;&quot;</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">while</span> ((pos = lines.find(<span class="stringliteral">&quot;;&quot;</span>)) != std::string::npos)</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; word = lines.substr(0, pos);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; wordProds.push_back(word);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; lines.erase(0, pos + delimiter.length());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> wordProds;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div><div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
224
224
  <div class="ttc" id="classSVF_1_1GrammarBuilder_html_a5a34166b4b1ce1dcc985f4619f4a2bbc"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a5a34166b4b1ce1dcc985f4619f4a2bbc">SVF::GrammarBuilder::parseProductionsString</a></div><div class="ttdeci">const std::string parseProductionsString() const</div><div class="ttdoc">Parse start symbol and production from file string. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00039">GrammarBuilder.cpp:39</a></div></div>
225
225
  </div><!-- fragment -->
226
226
  </div>
@@ -251,10 +251,10 @@ Private Attributes</h2></td></tr>
251
251
  <p>Parse start symbol and production from file string. </p>
252
252
 
253
253
  <p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00039">39</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
254
- <div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; std::ifstream textFile(<a class="code" href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">fileName</a>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lineString;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lines = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> startString;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> WHITESPACE = <span class="stringliteral">&quot; \n\r\t\f\v&quot;</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">int</span> lineNum = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">while</span> (getline(textFile, lineString))</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span>(lineNum == 1)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; startString = <a class="code" href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">stripSpace</a>(lineString);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; lines.append(lineString.substr(lineString.find_first_not_of(WHITESPACE), lineString.find_last_not_of(WHITESPACE)+1));</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; lineNum++;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</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; std::regex reg(<span class="stringliteral">&quot;Start:([\\s\\S]*)Terminal:([\\s\\S]*)Productions:([\\s\\S]*)&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::smatch matches;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (std::regex_search(lines, matches, reg))</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; lines = matches.str(3);</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; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> terminalString = matches.str(2);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> symbolString;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">size_t</span> pos;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">while</span> ((pos = terminalString.find(<span class="stringliteral">&quot; &quot;</span>)) != std::string::npos)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; symbolString = <a class="code" href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">stripSpace</a>(terminalString.substr(0, pos));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; terminalString.erase(0, pos + 1); <span class="comment">//Capital is Nonterminal, Otherwise is terminal</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(symbolString);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(symbolString);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a1de2b9f6c39936afa8f821ca262deadd">setStartKind</a>(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(startString));</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ad2f1a578ba72a2b600014b21b6f2d542">insertTerminalKind</a>(<span class="stringliteral">&quot;epsilon&quot;</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> lines;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div><div class="ttc" id="classSVF_1_1GrammarBuilder_html_a7b81810150ce896801e4e6a831ab98aa"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">SVF::GrammarBuilder::grammar</a></div><div class="ttdeci">GrammarBase * grammar</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00074">GrammarBuilder.h:74</a></div></div>
254
+ <div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; std::ifstream textFile(<a class="code" href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">fileName</a>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lineString;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lines = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> startString;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> symbolString;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> WHITESPACE = <span class="stringliteral">&quot; \n\r\t\f\v&quot;</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">int</span> lineNum = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">while</span> (getline(textFile, lineString))</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; <span class="keywordflow">if</span>(lineNum == 1)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; startString = <a class="code" href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">stripSpace</a>(lineString);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span>(lineNum == 3)</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; symbolString = lineString.substr(lineString.find_first_not_of(WHITESPACE), lineString.find_last_not_of(WHITESPACE)+1);</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;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; lines.append(lineString.substr(lineString.find_first_not_of(WHITESPACE), lineString.find_last_not_of(WHITESPACE)+1));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; lineNum++;</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; std::regex reg(<span class="stringliteral">&quot;Start:([\\s\\S]*)Terminal:(.*)Productions:([\\s\\S]*)&quot;</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; std::smatch matches;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span> (std::regex_search(lines, matches, reg))</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; lines = matches.str(3);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> sString;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">size_t</span> pos = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">while</span> ((pos = symbolString.find(<span class="stringliteral">&quot; &quot;</span>)) != std::string::npos)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; sString = <a class="code" href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">stripSpace</a>(symbolString.substr(0, pos));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; symbolString.erase(0, pos + 1); <span class="comment">//Capital is Nonterminal, Otherwise is terminal</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(sString);</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_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(symbolString);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a1de2b9f6c39936afa8f821ca262deadd">setStartKind</a>(<a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">insertSymbol</a>(startString));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">grammar</a>-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ad2f1a578ba72a2b600014b21b6f2d542">insertTerminalKind</a>(<span class="stringliteral">&quot;epsilon&quot;</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> lines;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div><div class="ttc" id="classSVF_1_1GrammarBuilder_html_a7b81810150ce896801e4e6a831ab98aa"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a7b81810150ce896801e4e6a831ab98aa">SVF::GrammarBuilder::grammar</a></div><div class="ttdeci">GrammarBase * grammar</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00074">GrammarBuilder.h:74</a></div></div>
255
255
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a1de2b9f6c39936afa8f821ca262deadd"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a1de2b9f6c39936afa8f821ca262deadd">SVF::GrammarBase::setStartKind</a></div><div class="ttdeci">void setStartKind(Kind startKind)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00200">CFLGrammar.h:200</a></div></div>
256
256
  <div class="ttc" id="classSVF_1_1GrammarBuilder_html_aa0f5135a232adc1ca42d4f51a3c70704"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#aa0f5135a232adc1ca42d4f51a3c70704">SVF::GrammarBuilder::fileName</a></div><div class="ttdeci">std::string fileName</div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8h_source.html#l00073">GrammarBuilder.h:73</a></div></div>
257
- <div class="ttc" id="classSVF_1_1GrammarBuilder_html_a6de372fbe80d33a5688cada0adca0bb8"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">SVF::GrammarBuilder::stripSpace</a></div><div class="ttdeci">const std::string stripSpace(std::string s) const</div><div class="ttdoc">Strip front and tail space. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00096">GrammarBuilder.cpp:96</a></div></div>
257
+ <div class="ttc" id="classSVF_1_1GrammarBuilder_html_a6de372fbe80d33a5688cada0adca0bb8"><div class="ttname"><a href="classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8">SVF::GrammarBuilder::stripSpace</a></div><div class="ttdeci">const std::string stripSpace(std::string s) const</div><div class="ttdoc">Strip front and tail space. </div><div class="ttdef"><b>Definition:</b> <a href="GrammarBuilder_8cpp_source.html#l00100">GrammarBuilder.cpp:100</a></div></div>
258
258
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
259
259
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a3c16f37c05de31fbd2be1ae9c0961e84"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a3c16f37c05de31fbd2be1ae9c0961e84">SVF::GrammarBase::insertSymbol</a></div><div class="ttdeci">Symbol insertSymbol(std::string strLit)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00217">CFLGrammar.cpp:217</a></div></div>
260
260
  <div class="ttc" id="classSVF_1_1GrammarBase_html_ad2f1a578ba72a2b600014b21b6f2d542"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ad2f1a578ba72a2b600014b21b6f2d542">SVF::GrammarBase::insertTerminalKind</a></div><div class="ttdeci">Kind insertTerminalKind(std::string strLit)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00163">CFLGrammar.cpp:163</a></div></div>
@@ -287,8 +287,8 @@ Private Attributes</h2></td></tr>
287
287
 
288
288
  <p>Strip front and tail space. </p>
289
289
 
290
- <p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00096">96</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
291
- <div class="fragment"><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; std::smatch matches;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; std::regex stripReg(<span class="stringliteral">&quot;\\s*(\\S*)\\s*&quot;</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; std::regex_search(s, matches, stripReg);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> matches.str(1);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div></div><!-- fragment -->
290
+ <p class="definition">Definition at line <a class="el" href="GrammarBuilder_8cpp_source.html#l00100">100</a> of file <a class="el" href="GrammarBuilder_8cpp_source.html">GrammarBuilder.cpp</a>.</p>
291
+ <div class="fragment"><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; std::smatch matches;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; std::regex stripReg(<span class="stringliteral">&quot;\\s*(\\S*)\\s*&quot;</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; std::regex_search(s, matches, stripReg);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> matches.str(1);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</div></div><!-- fragment -->
292
292
  </div>
293
293
  </div>
294
294
  <h2 class="groupheader">Member Data Documentation</h2>
@@ -298,7 +298,7 @@ Public Member Functions</h2></td></tr>
298
298
  <div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00087">ICFG.h:87</a></div></div>
299
299
  <div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00162">SVFBasicTypes.h:162</a></div></div>
300
300
  <div class="ttc" id="classSVF_1_1SVFLoop_html_a03c6de676a1d8f99687ea973b9b25d58"><div class="ttname"><a href="classSVF_1_1SVFLoop.html#a03c6de676a1d8f99687ea973b9b25d58">SVF::SVFLoop::addBackICFGEdge</a></div><div class="ttdeci">void addBackICFGEdge(const ICFGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFLoop_8h_source.html#l00121">SVFLoop.h:121</a></div></div>
301
- <div class="ttc" id="classSVF_1_1Options_html_ab7161ca7a809792af82e5aabdfcc3bfb"><div class="ttname"><a href="classSVF_1_1Options.html#ab7161ca7a809792af82e5aabdfcc3bfb">SVF::Options::LoopBound</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; LoopBound</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00259">Options.h:259</a></div></div>
301
+ <div class="ttc" id="classSVF_1_1Options_html_ab7161ca7a809792af82e5aabdfcc3bfb"><div class="ttname"><a href="classSVF_1_1Options.html#ab7161ca7a809792af82e5aabdfcc3bfb">SVF::Options::LoopBound</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; LoopBound</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00260">Options.h:260</a></div></div>
302
302
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
303
303
  </div><!-- fragment -->
304
304
  </div>
@@ -321,7 +321,7 @@ Static Private Attributes</h2></td></tr>
321
321
  </div><div class="memdoc">
322
322
 
323
323
  <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00352">352</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
324
- <div class="fragment"><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;{</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; std::vector&lt;const Function *&gt; ctor_funcs;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; std::vector&lt;const Function *&gt; dtor_funcs;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * orgMain = 0;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">for</span> (Module::global_iterator it = mod.global_begin(),</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; eit = mod.global_end();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *global = &amp;*it;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">if</span> (global-&gt;getName().equals(<a class="code" href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a>) &amp;&amp;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; global-&gt;hasInitializer())</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(global);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (global-&gt;getName().equals(<a class="code" href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a>) &amp;&amp;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; global-&gt;hasInitializer())</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(global);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="comment">// Find main function</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;func : mod)</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> (func.getName().equals(<a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>))</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a> <span class="stringliteral">&quot; already defined&quot;</span>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">if</span>(func.getName().equals(<span class="stringliteral">&quot;main&quot;</span>))</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; orgMain = &amp;func;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; mainMod = &amp;mod;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">// Only create svf.main when the original main function is found, and also</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="comment">// there are global contructor or destructor functions.</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">if</span> (orgMain &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() &gt; 0 &amp;&amp;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; (ctor_funcs.size() &gt; 0 || dtor_funcs.size() &gt; 0))</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; assert(mainMod &amp;&amp; <span class="stringliteral">&quot;Module with main function not found.&quot;</span>);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp; M = *mainMod;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="comment">// char **</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * i8ptr2 = PointerType::getInt8PtrTy(M.getContext())-&gt;getPointerTo();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * i32 = IntegerType::getInt32Ty(M.getContext());</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 9)</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; FunctionCallee svfmainFn = M.getOrInsertFunction(</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; Type::getVoidTy(M.getContext()),</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; i32,i8ptr2,i8ptr2</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; );</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *svfmain = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(svfmainFn.getCallee());</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *svfmain = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(M.getOrInsertFunction(</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; Type::getVoidTy(M.getContext()),</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; i32,i8ptr2,i8ptr2</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; ));</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; svfmain-&gt;setCallingConv(llvm::CallingConv::C);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* block = BasicBlock::Create(M.getContext(), <span class="stringliteral">&quot;entry&quot;</span>, svfmain);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="comment">// emit &quot;call void @ctor()&quot;. ctor_funcs is sorted so the functions are</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="comment">// emitted in the order of priority</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp; ctor: ctor_funcs)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; ctor-&gt;getName(),</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; Type::getVoidTy(M.getContext())</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; );</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; Builder.CreateCall(target);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="comment">// main() should be called after all ctor functions and before dtor</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="comment">// functions.</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; Function::arg_iterator arg_it = svfmain-&gt;arg_begin();</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * args[] = {arg_it, arg_it + 1, arg_it + 2 };</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordtype">size_t</span> cnt = orgMain-&gt;arg_size();</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; assert(cnt &lt;= 3 &amp;&amp; <span class="stringliteral">&quot;Too many arguments for main()&quot;</span>);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; Builder.CreateCall(orgMain, llvm::ArrayRef&lt;Value*&gt;(args,args + cnt));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="comment">// emit &quot;call void @dtor()&quot;. dtor_funcs is sorted so the functions are</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="comment">// emitted in the order of priority</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;dtor : dtor_funcs)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; dtor-&gt;getName(),</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; Type::getVoidTy(M.getContext())</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; );</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; Builder.CreateCall(target);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="comment">// return;</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; Builder.CreateRetVoid();</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
324
+ <div class="fragment"><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;{</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; std::vector&lt;const Function *&gt; ctor_funcs;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; std::vector&lt;const Function *&gt; dtor_funcs;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * orgMain = 0;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">for</span> (Module::global_iterator it = mod.global_begin(),</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; eit = mod.global_end();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *global = &amp;*it;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">if</span> (global-&gt;getName().equals(<a class="code" href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a>) &amp;&amp;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; global-&gt;hasInitializer())</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(global);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (global-&gt;getName().equals(<a class="code" href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a>) &amp;&amp;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; global-&gt;hasInitializer())</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(global);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="comment">// Find main function</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;func : mod)</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> (func.getName().equals(<a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>))</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a> <span class="stringliteral">&quot; already defined&quot;</span>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">if</span>(func.getName().equals(<span class="stringliteral">&quot;main&quot;</span>))</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; orgMain = &amp;func;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; mainMod = &amp;mod;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">// Only create svf.main when the original main function is found, and also</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="comment">// there are global contructor or destructor functions.</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">if</span> (orgMain &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() &gt; 0 &amp;&amp;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; (ctor_funcs.size() &gt; 0 || dtor_funcs.size() &gt; 0))</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; assert(mainMod &amp;&amp; <span class="stringliteral">&quot;Module with main function not found.&quot;</span>);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp; <a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a> = *mainMod;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="comment">// char **</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * i8ptr2 = PointerType::getInt8PtrTy(M.getContext())-&gt;getPointerTo();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * i32 = IntegerType::getInt32Ty(M.getContext());</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 9)</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; FunctionCallee svfmainFn = M.getOrInsertFunction(</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; Type::getVoidTy(M.getContext()),</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; i32,i8ptr2,i8ptr2</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; );</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *svfmain = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(svfmainFn.getCallee());</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *svfmain = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(M.getOrInsertFunction(</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; Type::getVoidTy(M.getContext()),</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; i32,i8ptr2,i8ptr2</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; ));</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; svfmain-&gt;setCallingConv(llvm::CallingConv::C);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* block = BasicBlock::Create(M.getContext(), <span class="stringliteral">&quot;entry&quot;</span>, svfmain);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="comment">// emit &quot;call void @ctor()&quot;. ctor_funcs is sorted so the functions are</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="comment">// emitted in the order of priority</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp; ctor: ctor_funcs)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; ctor-&gt;getName(),</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; Type::getVoidTy(M.getContext())</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; );</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; Builder.CreateCall(target);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="comment">// main() should be called after all ctor functions and before dtor</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="comment">// functions.</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; Function::arg_iterator arg_it = svfmain-&gt;arg_begin();</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * args[] = {arg_it, arg_it + 1, arg_it + 2 };</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordtype">size_t</span> cnt = orgMain-&gt;arg_size();</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; assert(cnt &lt;= 3 &amp;&amp; <span class="stringliteral">&quot;Too many arguments for main()&quot;</span>);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; Builder.CreateCall(orgMain, llvm::ArrayRef&lt;Value*&gt;(args,args + cnt));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="comment">// emit &quot;call void @dtor()&quot;. dtor_funcs is sorted so the functions are</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="comment">// emitted in the order of priority</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;dtor : dtor_funcs)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; dtor-&gt;getName(),</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; Type::getVoidTy(M.getContext())</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; );</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; Builder.CreateCall(target);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="comment">// return;</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; Builder.CreateRetVoid();</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
325
325
  <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
326
326
  <div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
327
327
  <div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
@@ -334,6 +334,7 @@ Static Private Attributes</h2></td></tr>
334
334
  <div class="ttc" id="LLVMModule_8cpp_html_a10ab7c7da3a458495d8528b9e90d714b"><div class="ttname"><a href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a></div><div class="ttdeci">#define SVF_MAIN_FUNC_NAME</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00067">LLVMModule.cpp:67</a></div></div>
335
335
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector&lt; std::reference_wrapper&lt; Module &gt; &gt; modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00055">LLVMModule.h:55</a></div></div>
336
336
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
337
+ <div class="ttc" id="PEGGrammar_8txt_html_abd600039647a1e73c88e7161fa6eb989"><div class="ttname"><a href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a></div><div class="ttdeci">V M</div><div class="ttdef"><b>Definition:</b> <a href="PEGGrammar_8txt_source.html#l00010">PEGGrammar.txt:10</a></div></div>
337
338
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
338
339
  </div><!-- fragment -->
339
340
  </div>
@@ -2018,7 +2018,7 @@ Private Attributes</h2></td></tr>
2018
2018
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a16756e0545fd3d50ab89f45a2e83bb79"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">SVF::SparseBitVector::intersects</a></div><div class="ttdeci">bool intersects(const SparseBitVector&lt; ElementSize &gt; *RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01029">SparseBitVector.h:1029</a></div></div>
2019
2019
  <div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
2020
2020
  <div class="ttc" id="classSVF_1_1MRGenerator_html_afb7ce3a24edda14895999eb15231daff"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#afb7ce3a24edda14895999eb15231daff">SVF::MRGenerator::pta</a></div><div class="ttdeci">BVDataPTAImpl * pta</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00193">MemRegion.h:193</a></div></div>
2021
- <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a798c84d5e861de2b61bcb1a86385f721"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">SVF::BVDataPTAImpl::expandFIObjs</a></div><div class="ttdeci">virtual void expandFIObjs(const PointsTo &amp;pts, PointsTo &amp;expandedPts)</div><div class="ttdoc">Expand FI objects. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00082">PointerAnalysisImpl.cpp:82</a></div></div>
2021
+ <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a798c84d5e861de2b61bcb1a86385f721"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">SVF::BVDataPTAImpl::expandFIObjs</a></div><div class="ttdeci">virtual void expandFIObjs(const PointsTo &amp;pts, PointsTo &amp;expandedPts)</div><div class="ttdoc">Expand FI objects. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00112">PointerAnalysisImpl.cpp:112</a></div></div>
2022
2022
  <div class="ttc" id="namespaceSVF_html_a3e2b6638b0fbca37846e953142bcc844aea8604a04fd5c658e0ca8b9177316ba0"><div class="ttname"><a href="namespaceSVF.html#a3e2b6638b0fbca37846e953142bcc844aea8604a04fd5c658e0ca8b9177316ba0">SVF::Mod</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00192">SVFBasicTypes.h:192</a></div></div>
2023
2023
  </div><!-- fragment -->
2024
2024
  </div>
@@ -2063,7 +2063,7 @@ Private Attributes</h2></td></tr>
2063
2063
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a16756e0545fd3d50ab89f45a2e83bb79"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">SVF::SparseBitVector::intersects</a></div><div class="ttdeci">bool intersects(const SparseBitVector&lt; ElementSize &gt; *RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01029">SparseBitVector.h:1029</a></div></div>
2064
2064
  <div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
2065
2065
  <div class="ttc" id="classSVF_1_1MRGenerator_html_afb7ce3a24edda14895999eb15231daff"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#afb7ce3a24edda14895999eb15231daff">SVF::MRGenerator::pta</a></div><div class="ttdeci">BVDataPTAImpl * pta</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00193">MemRegion.h:193</a></div></div>
2066
- <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a798c84d5e861de2b61bcb1a86385f721"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">SVF::BVDataPTAImpl::expandFIObjs</a></div><div class="ttdeci">virtual void expandFIObjs(const PointsTo &amp;pts, PointsTo &amp;expandedPts)</div><div class="ttdoc">Expand FI objects. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00082">PointerAnalysisImpl.cpp:82</a></div></div>
2066
+ <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a798c84d5e861de2b61bcb1a86385f721"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">SVF::BVDataPTAImpl::expandFIObjs</a></div><div class="ttdeci">virtual void expandFIObjs(const PointsTo &amp;pts, PointsTo &amp;expandedPts)</div><div class="ttdoc">Expand FI objects. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00112">PointerAnalysisImpl.cpp:112</a></div></div>
2067
2067
  <div class="ttc" id="namespaceSVF_html_a3e2b6638b0fbca37846e953142bcc844aea8604a04fd5c658e0ca8b9177316ba0"><div class="ttname"><a href="namespaceSVF.html#a3e2b6638b0fbca37846e953142bcc844aea8604a04fd5c658e0ca8b9177316ba0">SVF::Mod</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00192">SVFBasicTypes.h:192</a></div></div>
2068
2068
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ac14c99ee6064fc9cf30120a83c78e702"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ac14c99ee6064fc9cf30120a83c78e702">SVF::MRGenerator::getModRefInfo</a></div><div class="ttdeci">ModRefInfo getModRefInfo(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00718">MemRegion.cpp:718</a></div></div>
2069
2069
  </div><!-- fragment -->