svf-tools 1.0.620 → 1.0.622

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 (191) hide show
  1. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +7 -2
  2. package/SVF-doxygen/html/html/CFLAlias_8h.html +4 -0
  3. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +19 -10
  4. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/CFLBase_8h_source.html +1 -1
  6. package/SVF-doxygen/html/html/CFLDataBuilder_8h.html +96 -0
  7. package/SVF-doxygen/html/html/CFLDataBuilder_8h_source.html +99 -0
  8. package/SVF-doxygen/html/html/CFLData_8h.html +106 -0
  9. package/SVF-doxygen/html/html/CFLData_8h_source.html +136 -0
  10. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +7 -7
  11. package/SVF-doxygen/html/html/CFLSolver_8h.html +4 -0
  12. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +22 -16
  13. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +2 -1
  16. package/SVF-doxygen/html/html/GraphWriter_8h_source.html +2 -1
  17. package/SVF-doxygen/html/html/IntervalValue_8h_source.html +17 -15
  18. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/Options_8cpp_source.html +4 -3
  23. package/SVF-doxygen/html/html/Options_8h_source.html +4 -3
  24. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +3 -3
  25. package/SVF-doxygen/html/html/PointsTo_8h_source.html +3 -3
  26. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  27. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +22 -22
  28. package/SVF-doxygen/html/html/SVFG_8h_source.html +37 -36
  29. package/SVF-doxygen/html/html/SVFValue_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +3 -3
  31. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/WTO_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/annotated.html +357 -351
  34. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
  35. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -0
  37. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
  38. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +27 -24
  39. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
  40. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +2 -1
  41. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.png +0 -0
  42. package/SVF-doxygen/html/html/classSVF_1_1CFLData-members.html +110 -0
  43. package/SVF-doxygen/html/html/classSVF_1_1CFLData.html +1126 -0
  44. package/SVF-doxygen/html/html/classSVF_1_1CFLDataBuilder-members.html +88 -0
  45. package/SVF-doxygen/html/html/classSVF_1_1CFLDataBuilder.html +380 -0
  46. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +48 -39
  47. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.png +0 -0
  48. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +1 -1
  49. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +3 -2
  50. package/SVF-doxygen/html/html/classSVF_1_1HybridData-members.html +89 -0
  51. package/SVF-doxygen/html/html/classSVF_1_1HybridData.html +449 -0
  52. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue-members.html +5 -4
  53. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +32 -0
  54. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
  55. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
  56. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +45 -44
  57. package/SVF-doxygen/html/html/classSVF_1_1Options.html +28 -2
  58. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias-members.html +281 -0
  59. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.html +828 -0
  60. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.png +0 -0
  61. package/SVF-doxygen/html/html/classSVF_1_1POCRSolver-members.html +98 -0
  62. package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.html +245 -0
  63. package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.png +0 -0
  64. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +2 -1
  65. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  66. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +96 -95
  67. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +157 -121
  68. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +116 -115
  69. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +13 -10
  70. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +1 -1
  71. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +2 -2
  72. package/SVF-doxygen/html/html/classes.html +110 -109
  73. package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +4 -0
  74. package/SVF-doxygen/html/html/fastcluster__dm_8cpp_8inc_source.html +1 -1
  75. package/SVF-doxygen/html/html/files.html +9 -7
  76. package/SVF-doxygen/html/html/functions.html +7 -1
  77. package/SVF-doxygen/html/html/functions_0x7e.html +18 -0
  78. package/SVF-doxygen/html/html/functions_a.html +38 -14
  79. package/SVF-doxygen/html/html/functions_b.html +9 -4
  80. package/SVF-doxygen/html/html/functions_c.html +59 -38
  81. package/SVF-doxygen/html/html/functions_d.html +7 -1
  82. package/SVF-doxygen/html/html/functions_e.html +5 -1
  83. package/SVF-doxygen/html/html/functions_func.html +35 -11
  84. package/SVF-doxygen/html/html/functions_func_0x7e.html +18 -0
  85. package/SVF-doxygen/html/html/functions_func_b.html +8 -3
  86. package/SVF-doxygen/html/html/functions_func_c.html +42 -27
  87. package/SVF-doxygen/html/html/functions_func_e.html +2 -1
  88. package/SVF-doxygen/html/html/functions_func_g.html +20 -7
  89. package/SVF-doxygen/html/html/functions_func_h.html +17 -7
  90. package/SVF-doxygen/html/html/functions_func_i.html +14 -10
  91. package/SVF-doxygen/html/html/functions_func_m.html +3 -2
  92. package/SVF-doxygen/html/html/functions_func_o.html +13 -11
  93. package/SVF-doxygen/html/html/functions_func_p.html +6 -3
  94. package/SVF-doxygen/html/html/functions_func_t.html +4 -0
  95. package/SVF-doxygen/html/html/functions_g.html +22 -9
  96. package/SVF-doxygen/html/html/functions_h.html +15 -5
  97. package/SVF-doxygen/html/html/functions_i.html +24 -15
  98. package/SVF-doxygen/html/html/functions_l.html +5 -5
  99. package/SVF-doxygen/html/html/functions_m.html +2 -1
  100. package/SVF-doxygen/html/html/functions_n.html +3 -3
  101. package/SVF-doxygen/html/html/functions_o.html +23 -21
  102. package/SVF-doxygen/html/html/functions_p.html +23 -20
  103. package/SVF-doxygen/html/html/functions_r.html +3 -5
  104. package/SVF-doxygen/html/html/functions_s.html +16 -13
  105. package/SVF-doxygen/html/html/functions_t.html +12 -2
  106. package/SVF-doxygen/html/html/functions_type_c.html +2 -1
  107. package/SVF-doxygen/html/html/functions_type_d.html +3 -0
  108. package/SVF-doxygen/html/html/functions_type_i.html +2 -1
  109. package/SVF-doxygen/html/html/functions_type_t.html +3 -0
  110. package/SVF-doxygen/html/html/functions_v.html +6 -6
  111. package/SVF-doxygen/html/html/functions_vars.html +7 -1
  112. package/SVF-doxygen/html/html/functions_vars_c.html +3 -0
  113. package/SVF-doxygen/html/html/functions_vars_d.html +3 -0
  114. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  115. package/SVF-doxygen/html/html/functions_vars_i.html +4 -0
  116. package/SVF-doxygen/html/html/functions_vars_p.html +6 -0
  117. package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
  118. package/SVF-doxygen/html/html/functions_vars_t.html +3 -0
  119. package/SVF-doxygen/html/html/hierarchy.html +517 -511
  120. package/SVF-doxygen/html/html/namespaceSVF.html +59 -30
  121. package/SVF-doxygen/html/html/namespaceSVF_1_1DOT.html +3 -2
  122. package/SVF-doxygen/html/html/namespacemembers_l.html +3 -0
  123. package/SVF-doxygen/html/html/namespacemembers_type_l.html +3 -0
  124. package/SVF-doxygen/html/html/search/all_0.js +2 -1
  125. package/SVF-doxygen/html/html/search/all_1.js +8 -1
  126. package/SVF-doxygen/html/html/search/all_10.js +11 -8
  127. package/SVF-doxygen/html/html/search/all_11.js +3 -3
  128. package/SVF-doxygen/html/html/search/all_12.js +7 -6
  129. package/SVF-doxygen/html/html/search/all_13.js +8 -5
  130. package/SVF-doxygen/html/html/search/all_15.js +3 -3
  131. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  132. package/SVF-doxygen/html/html/search/all_19.js +6 -0
  133. package/SVF-doxygen/html/html/search/all_2.js +3 -2
  134. package/SVF-doxygen/html/html/search/all_3.js +11 -6
  135. package/SVF-doxygen/html/html/search/all_4.js +2 -1
  136. package/SVF-doxygen/html/html/search/all_5.js +2 -1
  137. package/SVF-doxygen/html/html/search/all_7.js +6 -2
  138. package/SVF-doxygen/html/html/search/all_8.js +5 -2
  139. package/SVF-doxygen/html/html/search/all_9.js +8 -6
  140. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  141. package/SVF-doxygen/html/html/search/all_c.js +4 -3
  142. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  143. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  144. package/SVF-doxygen/html/html/search/all_f.js +5 -5
  145. package/SVF-doxygen/html/html/search/classes_10.js +1 -0
  146. package/SVF-doxygen/html/html/search/classes_2.js +2 -0
  147. package/SVF-doxygen/html/html/search/classes_7.js +2 -1
  148. package/SVF-doxygen/html/html/search/classes_d.js +2 -0
  149. package/SVF-doxygen/html/html/search/files_2.js +2 -0
  150. package/SVF-doxygen/html/html/search/functions_0.js +8 -1
  151. package/SVF-doxygen/html/html/search/functions_1.js +3 -2
  152. package/SVF-doxygen/html/html/search/functions_12.js +2 -1
  153. package/SVF-doxygen/html/html/search/functions_17.js +6 -0
  154. package/SVF-doxygen/html/html/search/functions_2.js +4 -1
  155. package/SVF-doxygen/html/html/search/functions_4.js +1 -1
  156. package/SVF-doxygen/html/html/search/functions_6.js +5 -1
  157. package/SVF-doxygen/html/html/search/functions_7.js +5 -2
  158. package/SVF-doxygen/html/html/search/functions_8.js +2 -1
  159. package/SVF-doxygen/html/html/search/functions_c.js +1 -1
  160. package/SVF-doxygen/html/html/search/functions_e.js +2 -2
  161. package/SVF-doxygen/html/html/search/functions_f.js +1 -0
  162. package/SVF-doxygen/html/html/search/typedefs_11.js +2 -1
  163. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  164. package/SVF-doxygen/html/html/search/typedefs_3.js +1 -0
  165. package/SVF-doxygen/html/html/search/typedefs_7.js +1 -1
  166. package/SVF-doxygen/html/html/search/typedefs_a.js +1 -0
  167. package/SVF-doxygen/html/html/search/variables_0.js +2 -1
  168. package/SVF-doxygen/html/html/search/variables_10.js +2 -0
  169. package/SVF-doxygen/html/html/search/variables_12.js +1 -0
  170. package/SVF-doxygen/html/html/search/variables_13.js +3 -2
  171. package/SVF-doxygen/html/html/search/variables_3.js +1 -0
  172. package/SVF-doxygen/html/html/search/variables_4.js +1 -0
  173. package/SVF-doxygen/html/html/search/variables_5.js +1 -0
  174. package/SVF-doxygen/html/html/search/variables_7.js +1 -1
  175. package/SVF-doxygen/html/html/search/variables_9.js +2 -1
  176. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  177. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  178. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  179. package/SVF-doxygen/html/html/structSVF_1_1HybridData_1_1TreeNode-members.html +86 -0
  180. package/SVF-doxygen/html/html/structSVF_1_1HybridData_1_1TreeNode.html +255 -0
  181. package/include/AbstractExecution/IntervalValue.h +5 -0
  182. package/include/CFL/CFLAlias.h +34 -0
  183. package/include/CFL/CFLData.h +316 -0
  184. package/include/CFL/CFLDataBuilder.h +91 -0
  185. package/include/CFL/CFLSolver.h +21 -0
  186. package/include/Graphs/SVFG.h +6 -0
  187. package/include/Util/Options.h +1 -0
  188. package/lib/CFL/CFLAlias.cpp +36 -0
  189. package/lib/Util/Options.cpp +5 -0
  190. package/package.json +1 -1
  191. package/tools/CFL/cfl.cpp +2 -0
@@ -66,40 +66,46 @@ $(function() {
66
66
  <div class="title">CFLSolver.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="CFLSolver_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===----- CFLSolver.h -- Context-free language reachability solver--------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * CFLSolver.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: March 5, 2022</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef INCLUDE_CFL_CFLSolver_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define INCLUDE_CFL_CFLSolver_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLGraph_8h.html">Graphs/CFLGraph.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLGrammar_8h.html">CFL/CFLGrammar.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html"> 41</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CFLSolver.html">CFLSolver</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a194d2c4c801799b0ba9562e33ca5b695"> 46</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const CFLEdge*&gt;</a> <a class="code" href="classSVF_1_1CFLSolver.html#a194d2c4c801799b0ba9562e33ca5b695">WorkList</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a0ade6e3827c629c3cc3d22a101df7288"> 47</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">CFLGrammar::Production</a> <a class="code" href="classSVF_1_1CFLSolver.html#a0ade6e3827c629c3cc3d22a101df7288">Production</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a06e64c18559b4f311717203ac3fe1fcd"> 48</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">CFLGrammar::Symbol</a> <a class="code" href="classSVF_1_1CFLSolver.html#a06e64c18559b4f311717203ac3fe1fcd">Symbol</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a46ded0b18821a2ade0ee151ac2b2d520"> 50</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1CFLSolver.html#a46ded0b18821a2ade0ee151ac2b2d520">numOfChecks</a>;</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"><a class="line" href="classSVF_1_1CFLSolver.html#a394ecf58da040648dda4adb8d0e7d75b"> 52</a></span>&#160; <a class="code" href="classSVF_1_1CFLSolver.html#a394ecf58da040648dda4adb8d0e7d75b">CFLSolver</a>(<a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* _graph, <a class="code" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a>* _grammar): <a class="code" href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2">graph</a>(_graph), <a class="code" href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49">grammar</a>(_grammar)</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; }</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"><a class="line" href="classSVF_1_1CFLSolver.html#a59bb656e9fc0f5c29feb2200bc198e41"> 56</a></span>&#160; <a class="code" href="classSVF_1_1CFLSolver.html#a59bb656e9fc0f5c29feb2200bc198e41">~CFLSolver</a>()</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2">graph</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49">grammar</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLSolver.html#a5e94324ee4137610d5513ed11b36f4ba">initialize</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLSolver.html#a53c873a9243d2ef3e8d5eff1b8081102">processCFLEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLEdge.html">CFLEdge</a>* Y_edge);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLSolver.html#a2ee3436c26ebdb2aaf790c25b1d8b5a6">solve</a>();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a2c6bce1f73bcf5937a26e91a7daba33c"> 72</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* <a class="code" href="classSVF_1_1CFLSolver.html#a2c6bce1f73bcf5937a26e91a7daba33c">getGraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2">graph</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a99c0a6a2c55bb6eb7f8232399374c827"> 78</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a>* <a class="code" href="classSVF_1_1CFLSolver.html#a99c0a6a2c55bb6eb7f8232399374c827">getGrammar</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49">grammar</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#afc745dc72fd0572a145a78fe6a93ae5c"> 82</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CFLSolver.html#afc745dc72fd0572a145a78fe6a93ae5c">pushIntoWorklist</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLEdge.html">CFLEdge</a>* <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">worklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(item);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#ac1fe4563081c29f8a715bd67d454c8bb"> 86</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CFLSolver.html#ac1fe4563081c29f8a715bd67d454c8bb">isWorklistEmpty</a>()</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">worklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a95573e91816f426ff7b45afb7b7c821e"> 94</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLEdge.html">CFLEdge</a>* <a class="code" href="classSVF_1_1CFLSolver.html#a95573e91816f426ff7b45afb7b7c821e">popFromWorklist</a>()</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">worklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a0e112c2290b3ba4e61da6b1fe9ac506d"> 99</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CFLSolver.html#a0e112c2290b3ba4e61da6b1fe9ac506d">isInWorklist</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLEdge.html">CFLEdge</a>* <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">worklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ab023f3b60ff61d6729d75f4d2942bd83">find</a>(item);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2"> 106</a></span>&#160; <a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* <a class="code" href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2">graph</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49"> 107</a></span>&#160; <a class="code" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a>* <a class="code" href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49">grammar</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e"> 109</a></span>&#160; WorkList <a class="code" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">worklist</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;};</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_CFL_CFLSolver_H_*/</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1CFLSolver_html_a06e64c18559b4f311717203ac3fe1fcd"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a06e64c18559b4f311717203ac3fe1fcd">SVF::CFLSolver::Symbol</a></div><div class="ttdeci">CFLGrammar::Symbol Symbol</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00048">CFLSolver.h:48</a></div></div>
70
- <div class="ttc" id="classSVF_1_1CFLSolver_html_a2c6bce1f73bcf5937a26e91a7daba33c"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a2c6bce1f73bcf5937a26e91a7daba33c">SVF::CFLSolver::getGraph</a></div><div class="ttdeci">const CFLGraph * getGraph() const</div><div class="ttdoc">Return CFL Graph. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00072">CFLSolver.h:72</a></div></div>
69
+ <a href="CFLSolver_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===----- CFLSolver.h -- Context-free language reachability solver--------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * CFLSolver.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: March 5, 2022</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef INCLUDE_CFL_CFLSolver_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define INCLUDE_CFL_CFLSolver_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLGraph_8h.html">Graphs/CFLGraph.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLGrammar_8h.html">CFL/CFLGrammar.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CFLData_8h.html">CFL/CFLData.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><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;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html"> 42</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CFLSolver.html">CFLSolver</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a194d2c4c801799b0ba9562e33ca5b695"> 47</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const CFLEdge*&gt;</a> <a class="code" href="classSVF_1_1CFLSolver.html#a194d2c4c801799b0ba9562e33ca5b695">WorkList</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a0ade6e3827c629c3cc3d22a101df7288"> 48</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">CFLGrammar::Production</a> <a class="code" href="classSVF_1_1CFLSolver.html#a0ade6e3827c629c3cc3d22a101df7288">Production</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a06e64c18559b4f311717203ac3fe1fcd"> 49</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">CFLGrammar::Symbol</a> <a class="code" href="classSVF_1_1CFLSolver.html#a06e64c18559b4f311717203ac3fe1fcd">Symbol</a>;</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"><a class="line" href="classSVF_1_1CFLSolver.html#a46ded0b18821a2ade0ee151ac2b2d520"> 51</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1CFLSolver.html#a46ded0b18821a2ade0ee151ac2b2d520">numOfChecks</a>;</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"><a class="line" href="classSVF_1_1CFLSolver.html#a394ecf58da040648dda4adb8d0e7d75b"> 53</a></span>&#160; <a class="code" href="classSVF_1_1CFLSolver.html#a394ecf58da040648dda4adb8d0e7d75b">CFLSolver</a>(<a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* _graph, <a class="code" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a>* _grammar): <a class="code" href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2">graph</a>(_graph), <a class="code" href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49">grammar</a>(_grammar)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a59bb656e9fc0f5c29feb2200bc198e41"> 57</a></span>&#160; <a class="code" href="classSVF_1_1CFLSolver.html#a59bb656e9fc0f5c29feb2200bc198e41">~CFLSolver</a>()</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; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2">graph</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49">grammar</a>;</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="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLSolver.html#a5e94324ee4137610d5513ed11b36f4ba">initialize</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLSolver.html#a53c873a9243d2ef3e8d5eff1b8081102">processCFLEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLEdge.html">CFLEdge</a>* Y_edge);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLSolver.html#a2ee3436c26ebdb2aaf790c25b1d8b5a6">solve</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a2c6bce1f73bcf5937a26e91a7daba33c"> 73</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* <a class="code" href="classSVF_1_1CFLSolver.html#a2c6bce1f73bcf5937a26e91a7daba33c">getGraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2">graph</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a99c0a6a2c55bb6eb7f8232399374c827"> 79</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a>* <a class="code" href="classSVF_1_1CFLSolver.html#a99c0a6a2c55bb6eb7f8232399374c827">getGrammar</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49">grammar</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#afc745dc72fd0572a145a78fe6a93ae5c"> 83</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CFLSolver.html#afc745dc72fd0572a145a78fe6a93ae5c">pushIntoWorklist</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLEdge.html">CFLEdge</a>* <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">worklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(item);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#ac1fe4563081c29f8a715bd67d454c8bb"> 87</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CFLSolver.html#ac1fe4563081c29f8a715bd67d454c8bb">isWorklistEmpty</a>()</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">worklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a95573e91816f426ff7b45afb7b7c821e"> 95</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLEdge.html">CFLEdge</a>* <a class="code" href="classSVF_1_1CFLSolver.html#a95573e91816f426ff7b45afb7b7c821e">popFromWorklist</a>()</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> <a class="code" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">worklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a0e112c2290b3ba4e61da6b1fe9ac506d"> 100</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CFLSolver.html#a0e112c2290b3ba4e61da6b1fe9ac506d">isInWorklist</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CFLEdge.html">CFLEdge</a>* <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>)</div><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">worklist</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ab023f3b60ff61d6729d75f4d2942bd83">find</a>(item);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2"> 107</a></span>&#160; <a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* <a class="code" href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2">graph</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49"> 108</a></span>&#160; <a class="code" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a>* <a class="code" href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49">grammar</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e"> 110</a></span>&#160; WorkList <a class="code" href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">worklist</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;};</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1POCRSolver.html"> 115</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1POCRSolver.html">POCRSolver</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1CFLSolver.html">CFLSolver</a></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;{</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1POCRSolver.html#a5149116e1dbcffcf656f5a63fa0e0c25"> 118</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1POCRSolver.html#a5149116e1dbcffcf656f5a63fa0e0c25">~POCRSolver</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="keyword">delete</span> _cflData;</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;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1POCRSolver.html#a5e82e65d4e7bec0031d06b41902fae54"> 123</a></span>&#160; <a class="code" href="classSVF_1_1CFLData.html">CFLData</a>* <a class="code" href="classSVF_1_1POCRSolver.html#a5e82e65d4e7bec0031d06b41902fae54">cflData</a>()</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> _cflData;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">//virtual void initialize();</span></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;<span class="keyword">private</span>:</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1POCRSolver.html#a3ed67db7c5bbddee09b7fefdec3ca538"> 131</a></span>&#160; <a class="code" href="classSVF_1_1CFLData.html">CFLData</a>* <a class="code" href="classSVF_1_1POCRSolver.html#a3ed67db7c5bbddee09b7fefdec3ca538">_cflData</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;};</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;}</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_CFL_CFLSolver_H_*/</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1CFLSolver_html_a06e64c18559b4f311717203ac3fe1fcd"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a06e64c18559b4f311717203ac3fe1fcd">SVF::CFLSolver::Symbol</a></div><div class="ttdeci">CFLGrammar::Symbol Symbol</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00049">CFLSolver.h:49</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_a2c6bce1f73bcf5937a26e91a7daba33c"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a2c6bce1f73bcf5937a26e91a7daba33c">SVF::CFLSolver::getGraph</a></div><div class="ttdeci">const CFLGraph * getGraph() const</div><div class="ttdoc">Return CFL Graph. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00073">CFLSolver.h:73</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1CFLGrammar_html"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html">SVF::CFLGrammar</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00290">CFLGrammar.h:290</a></div></div>
72
- <div class="ttc" id="classSVF_1_1CFLSolver_html_a211bb78846886aa9ccd4b160da81e02e"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">SVF::CFLSolver::worklist</a></div><div class="ttdeci">WorkList worklist</div><div class="ttdoc">Worklist for resolution. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00109">CFLSolver.h:109</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_a211bb78846886aa9ccd4b160da81e02e"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a211bb78846886aa9ccd4b160da81e02e">SVF::CFLSolver::worklist</a></div><div class="ttdeci">WorkList worklist</div><div class="ttdoc">Worklist for resolution. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00110">CFLSolver.h:110</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1CFLGraph_html"><div class="ttname"><a href="classSVF_1_1CFLGraph.html">SVF::CFLGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00155">CFLGraph.h:155</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_ab023f3b60ff61d6729d75f4d2942bd83"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ab023f3b60ff61d6729d75f4d2942bd83">SVF::FIFOWorkList::find</a></div><div class="ttdeci">bool find(const Data &amp;data) const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00157">WorkList.h:157</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
76
- <div class="ttc" id="classSVF_1_1CFLSolver_html_afc745dc72fd0572a145a78fe6a93ae5c"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#afc745dc72fd0572a145a78fe6a93ae5c">SVF::CFLSolver::pushIntoWorklist</a></div><div class="ttdeci">bool pushIntoWorklist(const CFLEdge *item)</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00082">CFLSolver.h:82</a></div></div>
77
- <div class="ttc" id="classSVF_1_1CFLSolver_html"><div class="ttname"><a href="classSVF_1_1CFLSolver.html">SVF::CFLSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00041">CFLSolver.h:41</a></div></div>
78
- <div class="ttc" id="classSVF_1_1CFLSolver_html_a394ecf58da040648dda4adb8d0e7d75b"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a394ecf58da040648dda4adb8d0e7d75b">SVF::CFLSolver::CFLSolver</a></div><div class="ttdeci">CFLSolver(CFLGraph *_graph, CFLGrammar *_grammar)</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00052">CFLSolver.h:52</a></div></div>
76
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_afc745dc72fd0572a145a78fe6a93ae5c"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#afc745dc72fd0572a145a78fe6a93ae5c">SVF::CFLSolver::pushIntoWorklist</a></div><div class="ttdeci">bool pushIntoWorklist(const CFLEdge *item)</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00083">CFLSolver.h:83</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1CFLSolver_html"><div class="ttname"><a href="classSVF_1_1CFLSolver.html">SVF::CFLSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00042">CFLSolver.h:42</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_a394ecf58da040648dda4adb8d0e7d75b"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a394ecf58da040648dda4adb8d0e7d75b">SVF::CFLSolver::CFLSolver</a></div><div class="ttdeci">CFLSolver(CFLGraph *_graph, CFLGrammar *_grammar)</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00053">CFLSolver.h:53</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00165">WorkList.h:165</a></div></div>
80
- <div class="ttc" id="classSVF_1_1CFLSolver_html_a59bb656e9fc0f5c29feb2200bc198e41"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a59bb656e9fc0f5c29feb2200bc198e41">SVF::CFLSolver::~CFLSolver</a></div><div class="ttdeci">~CFLSolver()</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00056">CFLSolver.h:56</a></div></div>
81
- <div class="ttc" id="classSVF_1_1CFLSolver_html_a99c0a6a2c55bb6eb7f8232399374c827"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a99c0a6a2c55bb6eb7f8232399374c827">SVF::CFLSolver::getGrammar</a></div><div class="ttdeci">const CFLGrammar * getGrammar() const</div><div class="ttdoc">Return CFL Grammar. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00078">CFLSolver.h:78</a></div></div>
82
- <div class="ttc" id="classSVF_1_1CFLSolver_html_aedd6c605c4c381c738f4c6682c40d9f2"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2">SVF::CFLSolver::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00106">CFLSolver.h:106</a></div></div>
83
- <div class="ttc" id="classSVF_1_1CFLSolver_html_aad88cf557ec43127de859b765505df49"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49">SVF::CFLSolver::grammar</a></div><div class="ttdeci">CFLGrammar * grammar</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00107">CFLSolver.h:107</a></div></div>
80
+ <div class="ttc" id="classSVF_1_1POCRSolver_html_a5e82e65d4e7bec0031d06b41902fae54"><div class="ttname"><a href="classSVF_1_1POCRSolver.html#a5e82e65d4e7bec0031d06b41902fae54">SVF::POCRSolver::cflData</a></div><div class="ttdeci">CFLData * cflData()</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00123">CFLSolver.h:123</a></div></div>
81
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_a59bb656e9fc0f5c29feb2200bc198e41"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a59bb656e9fc0f5c29feb2200bc198e41">SVF::CFLSolver::~CFLSolver</a></div><div class="ttdeci">~CFLSolver()</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00057">CFLSolver.h:57</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_a99c0a6a2c55bb6eb7f8232399374c827"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a99c0a6a2c55bb6eb7f8232399374c827">SVF::CFLSolver::getGrammar</a></div><div class="ttdeci">const CFLGrammar * getGrammar() const</div><div class="ttdoc">Return CFL Grammar. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00079">CFLSolver.h:79</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_aedd6c605c4c381c738f4c6682c40d9f2"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#aedd6c605c4c381c738f4c6682c40d9f2">SVF::CFLSolver::graph</a></div><div class="ttdeci">CFLGraph * graph</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00107">CFLSolver.h:107</a></div></div>
84
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_aad88cf557ec43127de859b765505df49"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#aad88cf557ec43127de859b765505df49">SVF::CFLSolver::grammar</a></div><div class="ttdeci">CFLGrammar * grammar</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00108">CFLSolver.h:108</a></div></div>
84
85
  <div class="ttc" id="CFLGrammar_8h_html"><div class="ttname"><a href="CFLGrammar_8h.html">CFLGrammar.h</a></div></div>
85
- <div class="ttc" id="classSVF_1_1CFLSolver_html_a95573e91816f426ff7b45afb7b7c821e"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a95573e91816f426ff7b45afb7b7c821e">SVF::CFLSolver::popFromWorklist</a></div><div class="ttdeci">const CFLEdge * popFromWorklist()</div><div class="ttdoc">Worklist operations. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00094">CFLSolver.h:94</a></div></div>
86
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_a95573e91816f426ff7b45afb7b7c821e"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a95573e91816f426ff7b45afb7b7c821e">SVF::CFLSolver::popFromWorklist</a></div><div class="ttdeci">const CFLEdge * popFromWorklist()</div><div class="ttdoc">Worklist operations. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00095">CFLSolver.h:95</a></div></div>
86
87
  <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>
87
- <div class="ttc" id="classSVF_1_1CFLSolver_html_a46ded0b18821a2ade0ee151ac2b2d520"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a46ded0b18821a2ade0ee151ac2b2d520">SVF::CFLSolver::numOfChecks</a></div><div class="ttdeci">static double numOfChecks</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00050">CFLSolver.h:50</a></div></div>
88
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_a46ded0b18821a2ade0ee151ac2b2d520"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a46ded0b18821a2ade0ee151ac2b2d520">SVF::CFLSolver::numOfChecks</a></div><div class="ttdeci">static double numOfChecks</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00051">CFLSolver.h:51</a></div></div>
89
+ <div class="ttc" id="classSVF_1_1POCRSolver_html_a3ed67db7c5bbddee09b7fefdec3ca538"><div class="ttname"><a href="classSVF_1_1POCRSolver.html#a3ed67db7c5bbddee09b7fefdec3ca538">SVF::POCRSolver::_cflData</a></div><div class="ttdeci">CFLData * _cflData</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00131">CFLSolver.h:131</a></div></div>
88
90
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList&lt; const CFLEdge * &gt;</a></div></div>
91
+ <div class="ttc" id="classSVF_1_1CFLData_html"><div class="ttname"><a href="classSVF_1_1CFLData.html">SVF::CFLData</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLData_8h_source.html#l00047">CFLData.h:47</a></div></div>
89
92
  <div class="ttc" id="structSVF_1_1GrammarBase_1_1Symbol_html"><div class="ttname"><a href="structSVF_1_1GrammarBase_1_1Symbol.html">SVF::GrammarBase::Symbol</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00042">CFLGrammar.h:42</a></div></div>
90
93
  <div class="ttc" id="CFLGraph_8h_html"><div class="ttname"><a href="CFLGraph_8h.html">CFLGraph.h</a></div></div>
94
+ <div class="ttc" id="CFLData_8h_html"><div class="ttname"><a href="CFLData_8h.html">CFLData.h</a></div></div>
91
95
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00037">AbstractValue.h:37</a></div></div>
92
- <div class="ttc" id="classSVF_1_1CFLSolver_html_ac1fe4563081c29f8a715bd67d454c8bb"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#ac1fe4563081c29f8a715bd67d454c8bb">SVF::CFLSolver::isWorklistEmpty</a></div><div class="ttdeci">bool isWorklistEmpty()</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00086">CFLSolver.h:86</a></div></div>
96
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_ac1fe4563081c29f8a715bd67d454c8bb"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#ac1fe4563081c29f8a715bd67d454c8bb">SVF::CFLSolver::isWorklistEmpty</a></div><div class="ttdeci">bool isWorklistEmpty()</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00087">CFLSolver.h:87</a></div></div>
93
97
  <div class="ttc" id="WorkList_8h_html"><div class="ttname"><a href="WorkList_8h.html">WorkList.h</a></div></div>
94
98
  <div class="ttc" id="classSVF_1_1CFLSolver_html_a2ee3436c26ebdb2aaf790c25b1d8b5a6"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a2ee3436c26ebdb2aaf790c25b1d8b5a6">SVF::CFLSolver::solve</a></div><div class="ttdeci">void solve()</div><div class="ttdoc">Start solving. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8cpp_source.html#l00119">CFLSolver.cpp:119</a></div></div>
95
99
  <div class="ttc" id="classSVF_1_1CFLSolver_html_a53c873a9243d2ef3e8d5eff1b8081102"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a53c873a9243d2ef3e8d5eff1b8081102">SVF::CFLSolver::processCFLEdge</a></div><div class="ttdeci">void processCFLEdge(const CFLEdge *Y_edge)</div><div class="ttdoc">Process CFLEdge. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8cpp_source.html#l00062">CFLSolver.cpp:62</a></div></div>
96
- <div class="ttc" id="classSVF_1_1CFLSolver_html_a194d2c4c801799b0ba9562e33ca5b695"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a194d2c4c801799b0ba9562e33ca5b695">SVF::CFLSolver::WorkList</a></div><div class="ttdeci">FIFOWorkList&lt; const CFLEdge * &gt; WorkList</div><div class="ttdoc">Define worklist. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00046">CFLSolver.h:46</a></div></div>
100
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_a194d2c4c801799b0ba9562e33ca5b695"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a194d2c4c801799b0ba9562e33ca5b695">SVF::CFLSolver::WorkList</a></div><div class="ttdeci">FIFOWorkList&lt; const CFLEdge * &gt; WorkList</div><div class="ttdoc">Define worklist. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00047">CFLSolver.h:47</a></div></div>
97
101
  <div class="ttc" id="classSVF_1_1CFLEdge_html"><div class="ttname"><a href="classSVF_1_1CFLEdge.html">SVF::CFLEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00047">CFLGraph.h:47</a></div></div>
98
- <div class="ttc" id="classSVF_1_1CFLSolver_html_a0ade6e3827c629c3cc3d22a101df7288"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a0ade6e3827c629c3cc3d22a101df7288">SVF::CFLSolver::Production</a></div><div class="ttdeci">CFLGrammar::Production Production</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00047">CFLSolver.h:47</a></div></div>
102
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_a0ade6e3827c629c3cc3d22a101df7288"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a0ade6e3827c629c3cc3d22a101df7288">SVF::CFLSolver::Production</a></div><div class="ttdeci">CFLGrammar::Production Production</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00048">CFLSolver.h:48</a></div></div>
103
+ <div class="ttc" id="classSVF_1_1POCRSolver_html_a5149116e1dbcffcf656f5a63fa0e0c25"><div class="ttname"><a href="classSVF_1_1POCRSolver.html#a5149116e1dbcffcf656f5a63fa0e0c25">SVF::POCRSolver::~POCRSolver</a></div><div class="ttdeci">virtual ~POCRSolver()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00118">CFLSolver.h:118</a></div></div>
99
104
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00200">WorkList.h:200</a></div></div>
105
+ <div class="ttc" id="classSVF_1_1POCRSolver_html"><div class="ttname"><a href="classSVF_1_1POCRSolver.html">SVF::POCRSolver</a></div><div class="ttdoc">Solver Utilize CFLData. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00115">CFLSolver.h:115</a></div></div>
100
106
  <div class="ttc" id="classSVF_1_1CFLSolver_html_a5e94324ee4137610d5513ed11b36f4ba"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a5e94324ee4137610d5513ed11b36f4ba">SVF::CFLSolver::initialize</a></div><div class="ttdeci">void initialize()</div><div class="ttdoc">Initialize worklist. </div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8cpp_source.html#l00036">CFLSolver.cpp:36</a></div></div>
101
107
  <div class="ttc" id="cJSON_8h_html_ac76cea59d438ba893d2f82aabb367d14"><div class="ttname"><a href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a></div><div class="ttdeci">cJSON * item</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00222">cJSON.h:222</a></div></div>
102
- <div class="ttc" id="classSVF_1_1CFLSolver_html_a0e112c2290b3ba4e61da6b1fe9ac506d"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a0e112c2290b3ba4e61da6b1fe9ac506d">SVF::CFLSolver::isInWorklist</a></div><div class="ttdeci">bool isInWorklist(const CFLEdge *item)</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00099">CFLSolver.h:99</a></div></div>
108
+ <div class="ttc" id="classSVF_1_1CFLSolver_html_a0e112c2290b3ba4e61da6b1fe9ac506d"><div class="ttname"><a href="classSVF_1_1CFLSolver.html#a0e112c2290b3ba4e61da6b1fe9ac506d">SVF::CFLSolver::isInWorklist</a></div><div class="ttdeci">bool isInWorklist(const CFLEdge *item)</div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00100">CFLSolver.h:100</a></div></div>
103
109
  </div><!-- fragment --></div><!-- contents -->
104
110
  <!-- start footer part -->
105
111
  <hr class="footer"/><address class="footer"><small>
@@ -71,7 +71,7 @@ $(function() {
71
71
  <div class="ttc" id="classSVF_1_1VFCFLGraphBuilder_html"><div class="ttname"><a href="classSVF_1_1VFCFLGraphBuilder.html">SVF::VFCFLGraphBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00171">CFLGraphBuilder.h:171</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1CFLVF_html_a6047084ea0cfe2827130facdd54e4806"><div class="ttname"><a href="classSVF_1_1CFLVF.html#a6047084ea0cfe2827130facdd54e4806">SVF::CFLVF::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Print grammar and graph. </div><div class="ttdef"><b>Definition:</b> <a href="CFLVF_8cpp_source.html#l00070">CFLVF.cpp:70</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1AndersenWaveDiff_html"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html">SVF::AndersenWaveDiff</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00378">Andersen.h:378</a></div></div>
74
- <div class="ttc" id="classSVF_1_1CFLSolver_html"><div class="ttname"><a href="classSVF_1_1CFLSolver.html">SVF::CFLSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00041">CFLSolver.h:41</a></div></div>
74
+ <div class="ttc" id="classSVF_1_1CFLSolver_html"><div class="ttname"><a href="classSVF_1_1CFLSolver.html">SVF::CFLSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLSolver_8h_source.html#l00042">CFLSolver.h:42</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1Options_html_a81dbd12b5141c4a2758d6f2d3321f1ac"><div class="ttname"><a href="classSVF_1_1Options.html#a81dbd12b5141c4a2758d6f2d3321f1ac">SVF::Options::CFLGraph</a></div><div class="ttdeci">static const Option&lt; std::string &gt; CFLGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00253">Options.h:253</a></div></div>
76
76
  <div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a6c9fa25204550dc5bea1cae52a61472b"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a6c9fa25204550dc5bea1cae52a61472b">SVF::CFLGraphBuilder::buildFromDot</a></div><div class="ttdeci">CFLGraph * buildFromDot(std::string filename, GrammarBase *grammar)</div><div class="ttdoc">Build graph from Dot. </div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8cpp_source.html#l00059">CFLGraphBuilder.cpp:59</a></div></div>
@@ -121,7 +121,7 @@ $(function() {
121
121
  <div class="ttc" id="classSVF_1_1CondVar_html_a90b13685d2126f8c10dde4a504bb28df"><div class="ttname"><a href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">SVF::CondVar::m_cond</a></div><div class="ttdeci">Cond m_cond</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00123">ConditionalPT.h:123</a></div></div>
122
122
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a6d82b5ddafa28542ce65adb0cc56cdce"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a6d82b5ddafa28542ce65adb0cc56cdce">SVF::CondStdSet::iterator</a></div><div class="ttdeci">OrderedSet&lt; Element &gt;::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00136">ConditionalPT.h:136</a></div></div>
123
123
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_aad144061d006968ff4d6d21488b84801"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#aad144061d006968ff4d6d21488b84801">SVF::CondPointsToSet::CondPointsToSet</a></div><div class="ttdeci">CondPointsToSet(const CondPointsToSet&lt; Cond &gt; &amp;cptsSet)</div><div class="ttdoc">Copy constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00324">ConditionalPT.h:324</a></div></div>
124
- <div class="ttc" id="namespaceSVF_html_abf0dfb872989751b13069f859ef408e1"><div class="ttname"><a href="namespaceSVF.html#abf0dfb872989751b13069f859ef408e1">SVF::operator*</a></div><div class="ttdeci">IntervalValue operator*(const IntervalValue &amp;lhs, const IntervalValue &amp;rhs)</div><div class="ttdoc">Multiply IntervalValues. </div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00476">IntervalValue.h:476</a></div></div>
124
+ <div class="ttc" id="namespaceSVF_html_abf0dfb872989751b13069f859ef408e1"><div class="ttname"><a href="namespaceSVF.html#abf0dfb872989751b13069f859ef408e1">SVF::operator*</a></div><div class="ttdeci">IntervalValue operator*(const IntervalValue &amp;lhs, const IntervalValue &amp;rhs)</div><div class="ttdoc">Multiply IntervalValues. </div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00481">IntervalValue.h:481</a></div></div>
125
125
  <div class="ttc" id="classSVF_1_1CondStdSet_html_abc67e77de2d1363af92c3bca2ccccbf1"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#abc67e77de2d1363af92c3bca2ccccbf1">SVF::CondStdSet::~CondStdSet</a></div><div class="ttdeci">~CondStdSet()</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00140">ConditionalPT.h:140</a></div></div>
126
126
  <div class="ttc" id="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator_html"><div class="ttname"><a href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">SVF::CondPointsToSet::CondPtsSetIterator</a></div><div class="ttdoc">Conditional Points-to Set Iterator. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00749">ConditionalPT.h:749</a></div></div>
127
127
  <div class="ttc" id="classSVF_1_1CondVar_html_a50321e5ead24c8a9d6c58998072634f0"><div class="ttname"><a href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0">SVF::CondVar::operator!=</a></div><div class="ttdeci">bool operator!=(const CondVar &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00071">ConditionalPT.h:71</a></div></div>
@@ -66,8 +66,9 @@ $(function() {
66
66
  <div class="title">GraphWriter.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="GraphWriter_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- GraphWriter.cpp - Implements GraphWriter support routines ----------===//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// From the LLVM Project with some modifications, under the Apache License v2.0</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// with LLVM Exceptions. See https://llvm.org/LICENSE.txt for license information.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="GraphWriter_8h.html">Graphs/GraphWriter.h</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7"> 12</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">SVF::DOT::EscapeStr</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &amp;Label)</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> Str(Label);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != Str.length(); ++i)</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">switch</span> (Str[i])</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\n&#39;</span>:</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; Str.insert(Str.begin()+i, <span class="charliteral">&#39;\\&#39;</span>); <span class="comment">// Escape character...</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; ++i;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; Str[i] = <span class="charliteral">&#39;n&#39;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\t&#39;</span>:</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; Str.insert(Str.begin()+i, <span class="charliteral">&#39; &#39;</span>); <span class="comment">// Convert to two spaces</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; ++i;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; Str[i] = <span class="charliteral">&#39; &#39;</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">if</span> (i+1 != Str.length())</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">switch</span> (Str[i+1])</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;l&#39;</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">continue</span>; <span class="comment">// don&#39;t disturb \l</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;|&#39;</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;}&#39;</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; Str.erase(Str.begin()+i);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;}&#39;</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;&lt;&#39;</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;&gt;&#39;</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;|&#39;</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;&quot;&#39;</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; Str.insert(Str.begin()+i, <span class="charliteral">&#39;\\&#39;</span>); <span class="comment">// Escape character...</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; ++i; <span class="comment">// don&#39;t infinite loop</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">break</span>;</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; <span class="keywordflow">return</span> Str;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1DOT_html_a9e3127c2bbedaec1f20d4437bea9e2f7"><div class="ttname"><a href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">SVF::DOT::EscapeStr</a></div><div class="ttdeci">std::string EscapeStr(const std::string &amp;Label)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8cpp_source.html#l00012">GraphWriter.cpp:12</a></div></div>
69
+ <a href="GraphWriter_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- GraphWriter.cpp - Implements GraphWriter support routines ----------===//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// From the LLVM Project with some modifications, under the Apache License v2.0</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// with LLVM Exceptions. See https://llvm.org/LICENSE.txt for license information.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="GraphWriter_8h.html">Graphs/GraphWriter.h</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7"> 12</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">SVF::DOT::EscapeStr</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &amp;<a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">Label</a>)</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> Str(Label);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != Str.length(); ++i)</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">switch</span> (Str[i])</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\n&#39;</span>:</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; Str.insert(Str.begin()+i, <span class="charliteral">&#39;\\&#39;</span>); <span class="comment">// Escape character...</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; ++i;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; Str[i] = <span class="charliteral">&#39;n&#39;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\t&#39;</span>:</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; Str.insert(Str.begin()+i, <span class="charliteral">&#39; &#39;</span>); <span class="comment">// Convert to two spaces</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; ++i;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; Str[i] = <span class="charliteral">&#39; &#39;</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">if</span> (i+1 != Str.length())</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">switch</span> (Str[i+1])</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;l&#39;</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">continue</span>; <span class="comment">// don&#39;t disturb \l</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;|&#39;</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;}&#39;</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; Str.erase(Str.begin()+i);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;}&#39;</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;&lt;&#39;</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;&gt;&#39;</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;|&#39;</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;&quot;&#39;</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; Str.insert(Str.begin()+i, <span class="charliteral">&#39;\\&#39;</span>); <span class="comment">// Escape character...</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; ++i; <span class="comment">// don&#39;t infinite loop</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">break</span>;</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; <span class="keywordflow">return</span> Str;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1DOT_html_a9e3127c2bbedaec1f20d4437bea9e2f7"><div class="ttname"><a href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">SVF::DOT::EscapeStr</a></div><div class="ttdeci">std::string EscapeStr(const std::string &amp;Label)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8cpp_source.html#l00012">GraphWriter.cpp:12</a></div></div>
70
70
  <div class="ttc" id="GraphWriter_8h_html"><div class="ttname"><a href="GraphWriter_8h.html">GraphWriter.h</a></div></div>
71
+ <div class="ttc" id="structSVF_1_1GrammarBase_1_1Symbol_html"><div class="ttname"><a href="structSVF_1_1GrammarBase_1_1Symbol.html">SVF::GrammarBase::Symbol</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00042">CFLGrammar.h:42</a></div></div>
71
72
  <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>
72
73
  </div><!-- fragment --></div><!-- contents -->
73
74
  <!-- start footer part -->