svf-tools 1.0.628 → 1.0.630

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 (572) hide show
  1. package/SVF-doxygen/html/html/AddressValue_8h_source.html +2 -2
  2. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +3 -3
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +5 -5
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
  5. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
  6. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +21 -21
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +6 -6
  9. package/SVF-doxygen/html/html/Annotator_8h.html +2 -1
  10. package/SVF-doxygen/html/html/Annotator_8h_source.html +19 -18
  11. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/CFLAlias_8cpp.html +1 -0
  14. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +11 -10
  15. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +5 -5
  16. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +3 -3
  17. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +3 -3
  19. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/CFLVF_8cpp.html +1 -0
  24. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +6 -5
  25. package/SVF-doxygen/html/html/CFLVF_8h_source.html +3 -3
  26. package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +1 -1
  27. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +23 -23
  28. package/SVF-doxygen/html/html/CHG_8cpp.html +7 -6
  29. package/SVF-doxygen/html/html/CHG_8cpp_source.html +22 -21
  30. package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/CSC_8cpp_source.html +3 -3
  32. package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
  33. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +4 -4
  35. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
  36. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
  37. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +11 -11
  38. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  39. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +8 -8
  40. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +6 -6
  41. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +2 -2
  42. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
  43. package/SVF-doxygen/html/html/CppUtil_8cpp.html +247 -0
  44. package/SVF-doxygen/html/html/CppUtil_8cpp_source.html +98 -0
  45. package/SVF-doxygen/html/html/CppUtil_8h.html +122 -0
  46. package/SVF-doxygen/html/html/CppUtil_8h_source.html +94 -0
  47. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +3 -3
  48. package/SVF-doxygen/html/html/DCHG_8cpp.html +1 -1
  49. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +40 -40
  50. package/SVF-doxygen/html/html/DCHG_8h.html +2 -1
  51. package/SVF-doxygen/html/html/DCHG_8h_source.html +75 -74
  52. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +10 -10
  53. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  54. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +6 -6
  55. package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
  56. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
  57. package/SVF-doxygen/html/html/DDAStat_8h_source.html +2 -2
  58. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +7 -7
  59. package/SVF-doxygen/html/html/DPItem_8h_source.html +6 -6
  60. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +3 -3
  61. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +2 -2
  62. package/SVF-doxygen/html/html/ExeState_8h_source.html +2 -2
  63. package/SVF-doxygen/html/html/ExtAPI_8cpp.html +9 -8
  64. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +10 -9
  65. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
  66. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +6 -6
  67. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  68. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
  69. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +7 -7
  70. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
  71. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +4 -4
  72. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +14 -14
  73. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
  74. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +6 -6
  75. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  76. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +10 -10
  77. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +3 -3
  79. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
  80. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  81. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +7 -7
  82. package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
  83. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +8 -8
  84. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/IntervalExeState_8cpp_source.html +2 -2
  86. package/SVF-doxygen/html/html/IntervalExeState_8h_source.html +3 -3
  87. package/SVF-doxygen/html/html/IntervalValue_8h_source.html +5 -5
  88. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +4 -4
  89. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h.html +1 -0
  90. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +3 -2
  91. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +41 -41
  92. package/SVF-doxygen/html/html/LLVMModule_8h.html +1 -1
  93. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +6 -6
  94. package/SVF-doxygen/html/html/LLVMUtil_8cpp.html +78 -1
  95. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +71 -38
  96. package/SVF-doxygen/html/html/LLVMUtil_8h.html +41 -7
  97. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +75 -50
  98. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
  99. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +7 -7
  100. package/SVF-doxygen/html/html/LocationSet_8h_source.html +4 -4
  101. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +11 -11
  102. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +5 -5
  103. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +6 -6
  104. package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
  105. package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
  106. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  107. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
  108. package/SVF-doxygen/html/html/MTAAnnotator_8h.html +3 -1
  109. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +29 -27
  110. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +7 -7
  111. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +6 -6
  112. package/SVF-doxygen/html/html/MTAStat_8h.html +1 -0
  113. package/SVF-doxygen/html/html/MTAStat_8h_source.html +9 -8
  114. package/SVF-doxygen/html/html/MTA_8cpp_source.html +13 -13
  115. package/SVF-doxygen/html/html/MTA_8h.html +1 -0
  116. package/SVF-doxygen/html/html/MTA_8h_source.html +12 -11
  117. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  118. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +12 -12
  119. package/SVF-doxygen/html/html/MemRegion_8h_source.html +5 -5
  120. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +10 -10
  121. package/SVF-doxygen/html/html/MemSSA_8h_source.html +4 -4
  122. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +4 -4
  123. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp.html +1 -0
  124. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +23 -23
  125. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +17 -17
  126. package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +4 -4
  127. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
  128. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +2 -2
  129. package/SVF-doxygen/html/html/PCG_8cpp_source.html +5 -5
  130. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +5 -5
  131. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +4 -4
  132. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +2 -2
  133. package/SVF-doxygen/html/html/PersistentPointsToCache_8h.html +1 -0
  134. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +43 -43
  135. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +12 -12
  136. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp.html +1 -0
  137. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +24 -23
  138. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +22 -22
  139. package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +2 -1
  140. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +34 -33
  141. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +25 -25
  142. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +2 -2
  143. package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
  144. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
  145. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +5 -5
  146. package/SVF-doxygen/html/html/RelExeState_8cpp_source.html +2 -2
  147. package/SVF-doxygen/html/html/RelExeState_8h_source.html +4 -4
  148. package/SVF-doxygen/html/html/RelationSolver_8cpp_source.html +1 -1
  149. package/SVF-doxygen/html/html/RelationSolver_8h_source.html +1 -1
  150. package/SVF-doxygen/html/html/SCC_8h_source.html +1 -1
  151. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  152. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  153. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +2 -2
  154. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +4 -4
  155. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  156. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
  157. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +4 -4
  158. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +3 -3
  159. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +13 -13
  160. package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
  161. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +12 -12
  162. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8h_source.html +1 -1
  163. package/SVF-doxygen/html/html/SVFIR2Relation_8cpp_source.html +1 -1
  164. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp.html +1 -1
  165. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +35 -35
  166. package/SVF-doxygen/html/html/SVFIRBuilder_8h.html +1 -0
  167. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +54 -53
  168. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -5
  169. package/SVF-doxygen/html/html/SVFIR_8h_source.html +7 -7
  170. package/SVF-doxygen/html/html/SVFLoop_8h_source.html +1 -1
  171. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  172. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  173. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +4 -4
  174. package/SVF-doxygen/html/html/SVFStat_8h_source.html +1 -1
  175. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +3 -3
  176. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +6 -6
  177. package/SVF-doxygen/html/html/SVFType_8h.html +65 -35
  178. package/SVF-doxygen/html/html/SVFType_8h_source.html +114 -114
  179. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +4 -4
  180. package/SVF-doxygen/html/html/SVFUtil_8h.html +2 -3
  181. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +36 -36
  182. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +4 -4
  183. package/SVF-doxygen/html/html/SVFValue_8h_source.html +11 -11
  184. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
  185. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +4 -4
  186. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  187. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp.html +2 -0
  188. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +37 -36
  189. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +27 -27
  190. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +5 -5
  191. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
  192. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +6 -6
  193. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp.html +1 -1
  194. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +36 -36
  195. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -3
  196. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +17 -17
  197. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +8 -8
  198. package/SVF-doxygen/html/html/TCT_8cpp_source.html +7 -7
  199. package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
  200. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +4 -4
  201. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +4 -4
  202. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
  203. package/SVF-doxygen/html/html/TypeAnalysis_8cpp.html +1 -0
  204. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +11 -10
  205. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +5 -5
  206. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
  207. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  208. package/SVF-doxygen/html/html/VFG_8cpp_source.html +5 -5
  209. package/SVF-doxygen/html/html/VFG_8h_source.html +3 -3
  210. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
  211. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
  212. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +3 -3
  213. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +1 -1
  214. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +6 -6
  215. package/SVF-doxygen/html/html/WPAPass_8h_source.html +3 -3
  216. package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -3
  217. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  218. package/SVF-doxygen/html/html/WTO_8h_source.html +2 -2
  219. package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
  220. package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
  221. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  222. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
  223. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  225. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  226. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1AddressValue.html +3 -3
  228. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  229. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +22 -22
  230. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +11 -11
  231. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +10 -10
  232. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -4
  233. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +5 -5
  234. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
  235. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +39 -39
  236. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +49 -49
  237. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  239. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  240. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +4 -4
  242. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +15 -15
  243. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +8 -8
  244. package/SVF-doxygen/html/html/classSVF_1_1CFLData.html +2 -2
  245. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +1 -1
  246. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +8 -8
  247. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +63 -63
  248. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +22 -22
  249. package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +2 -2
  250. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +4 -4
  251. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +1 -1
  253. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
  254. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
  255. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +1 -1
  256. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  257. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +9 -9
  260. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +6 -6
  261. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +2 -2
  262. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +23 -23
  263. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  264. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +2 -2
  265. package/SVF-doxygen/html/html/classSVF_1_1CxtDPItem.html +2 -2
  266. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  267. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +2 -2
  268. package/SVF-doxygen/html/html/classSVF_1_1CxtStmtDPItem.html +1 -1
  269. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +2 -2
  270. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  271. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +2 -2
  272. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +14 -14
  273. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +124 -124
  274. package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +66 -66
  275. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +5 -5
  276. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +6 -6
  277. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +6 -6
  278. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +35 -35
  279. package/SVF-doxygen/html/html/classSVF_1_1DPItem.html +1 -1
  280. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +8 -8
  281. package/SVF-doxygen/html/html/classSVF_1_1EntryCHI.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +3 -3
  283. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +9 -9
  284. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
  286. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +3 -3
  287. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +17 -17
  288. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +32 -32
  289. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +6 -6
  290. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +15 -15
  291. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
  292. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
  293. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
  294. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  295. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  296. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  297. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +6 -6
  298. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +1 -1
  299. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +10 -10
  300. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +15 -15
  301. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  302. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +1 -1
  303. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +4 -4
  304. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +5 -5
  307. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +1 -1
  308. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  309. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +5 -5
  312. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +1 -1
  313. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +70 -70
  314. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +11 -11
  315. package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +1 -1
  316. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +8 -8
  318. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +47 -47
  319. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +6 -6
  320. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +35 -35
  321. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +23 -23
  322. package/SVF-doxygen/html/html/classSVF_1_1MSSACHI.html +1 -1
  323. package/SVF-doxygen/html/html/classSVF_1_1MSSADEF.html +1 -1
  324. package/SVF-doxygen/html/html/classSVF_1_1MSSAMU.html +1 -1
  325. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHI.html +1 -1
  326. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +38 -38
  327. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +77 -77
  328. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +13 -13
  329. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +11 -11
  330. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +19 -19
  331. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  332. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +29 -29
  333. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
  334. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +2 -2
  335. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
  336. package/SVF-doxygen/html/html/classSVF_1_1MutableVersionedPTData.html +1 -1
  337. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +15 -15
  338. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +43 -43
  339. package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +6 -6
  340. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +5 -5
  341. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  342. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  343. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +7 -7
  344. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  345. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.html +1 -1
  346. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +4 -4
  347. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +2 -2
  348. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
  349. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +2 -2
  350. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +9 -9
  351. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +10 -10
  352. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
  353. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +19 -19
  354. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +141 -141
  355. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +1 -1
  356. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  357. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +78 -78
  358. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +5 -5
  359. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +2 -2
  360. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +7 -7
  361. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +6 -6
  362. package/SVF-doxygen/html/html/classSVF_1_1RelExeState.html +7 -7
  363. package/SVF-doxygen/html/html/classSVF_1_1RelationSolver.html +2 -2
  364. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  365. package/SVF-doxygen/html/html/classSVF_1_1RetMU.html +1 -1
  366. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  367. package/SVF-doxygen/html/html/classSVF_1_1SVFArrayType.html +6 -7
  368. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +4 -4
  369. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +1 -1
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFFunctionType.html +9 -10
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +10 -10
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +6 -6
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +6 -6
  375. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +5 -5
  376. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +30 -30
  377. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +352 -352
  378. package/SVF-doxygen/html/html/classSVF_1_1SVFIntergerType.html +5 -6
  379. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  380. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +4 -5
  381. package/SVF-doxygen/html/html/classSVF_1_1SVFPointerType.html +9 -10
  382. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +5 -5
  383. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +3 -3
  384. package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +5 -6
  385. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +40 -42
  386. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +2 -2
  387. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +2 -2
  388. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
  389. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +95 -95
  390. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +5 -5
  391. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  392. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +2 -2
  393. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +14 -14
  394. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +44 -44
  395. package/SVF-doxygen/html/html/classSVF_1_1StmtDPItem.html +1 -1
  396. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +1 -1
  397. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  398. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +71 -71
  399. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +23 -23
  400. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +22 -22
  401. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  402. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  403. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  404. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +6 -6
  405. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
  406. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +18 -18
  407. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  408. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  409. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +5 -5
  410. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  411. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +20 -20
  412. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +7 -7
  413. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
  414. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +2 -2
  415. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +7 -7
  416. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
  417. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
  418. package/SVF-doxygen/html/html/classSVF_1_1Wto.html +1 -1
  419. package/SVF-doxygen/html/html/classSVF_1_1WtoCycle.html +1 -1
  420. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +1 -1
  421. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +1 -1
  422. package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +1 -1
  423. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +1 -1
  424. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +1 -1
  425. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  426. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  427. package/SVF-doxygen/html/html/dir_862d3276083eaac55caed79b9120bf29.html +2 -0
  428. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  429. package/SVF-doxygen/html/html/dir_967d846b666a902c6ca9bc5c37976e49.html +0 -2
  430. package/SVF-doxygen/html/html/dir_a07347b69f031d2f872c9d4a9c274c8c.html +0 -2
  431. package/SVF-doxygen/html/html/files.html +41 -41
  432. package/SVF-doxygen/html/html/functions_func_i.html +3 -3
  433. package/SVF-doxygen/html/html/functions_g.html +1 -1
  434. package/SVF-doxygen/html/html/functions_i.html +3 -3
  435. package/SVF-doxygen/html/html/functions_n.html +4 -4
  436. package/SVF-doxygen/html/html/functions_o.html +15 -13
  437. package/SVF-doxygen/html/html/functions_s.html +7 -7
  438. package/SVF-doxygen/html/html/functions_t.html +9 -9
  439. package/SVF-doxygen/html/html/functions_v.html +3 -3
  440. package/SVF-doxygen/html/html/globals_c.html +1 -1
  441. package/SVF-doxygen/html/html/globals_d.html +3 -0
  442. package/SVF-doxygen/html/html/globals_defs.html +3 -0
  443. package/SVF-doxygen/html/html/globals_func.html +3 -3
  444. package/SVF-doxygen/html/html/globals_g.html +1 -1
  445. package/SVF-doxygen/html/html/globals_h.html +1 -1
  446. package/SVF-doxygen/html/html/globals_i.html +1 -1
  447. package/SVF-doxygen/html/html/globals_n.html +1 -1
  448. package/SVF-doxygen/html/html/globals_s.html +1 -1
  449. package/SVF-doxygen/html/html/globals_v.html +4 -4
  450. package/SVF-doxygen/html/html/globals_vars.html +7 -7
  451. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +4 -4
  452. package/SVF-doxygen/html/html/iterator_8h_source.html +1 -1
  453. package/SVF-doxygen/html/html/iterator__range_8h_source.html +1 -1
  454. package/SVF-doxygen/html/html/mta_8cpp.html +4 -4
  455. package/SVF-doxygen/html/html/mta_8cpp_source.html +4 -4
  456. package/SVF-doxygen/html/html/namespaceSVF.html +53 -53
  457. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +620 -150
  458. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +95 -125
  459. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +27 -440
  460. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil_1_1ctir.html +4 -4
  461. package/SVF-doxygen/html/html/namespacemembers_d.html +1 -1
  462. package/SVF-doxygen/html/html/namespacemembers_func_d.html +1 -1
  463. package/SVF-doxygen/html/html/namespacemembers_func_g.html +10 -10
  464. package/SVF-doxygen/html/html/namespacemembers_func_i.html +9 -8
  465. package/SVF-doxygen/html/html/namespacemembers_func_v.html +1 -1
  466. package/SVF-doxygen/html/html/namespacemembers_g.html +10 -10
  467. package/SVF-doxygen/html/html/namespacemembers_i.html +9 -8
  468. package/SVF-doxygen/html/html/namespacemembers_n.html +1 -1
  469. package/SVF-doxygen/html/html/namespacemembers_type_n.html +1 -1
  470. package/SVF-doxygen/html/html/namespacemembers_v.html +1 -1
  471. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  472. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  473. package/SVF-doxygen/html/html/search/all_10.js +1 -1
  474. package/SVF-doxygen/html/html/search/all_12.js +6 -6
  475. package/SVF-doxygen/html/html/search/all_13.js +5 -5
  476. package/SVF-doxygen/html/html/search/all_15.js +7 -7
  477. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  478. package/SVF-doxygen/html/html/search/all_3.js +3 -3
  479. package/SVF-doxygen/html/html/search/all_4.js +2 -1
  480. package/SVF-doxygen/html/html/search/all_7.js +12 -12
  481. package/SVF-doxygen/html/html/search/all_8.js +1 -1
  482. package/SVF-doxygen/html/html/search/all_9.js +10 -10
  483. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  484. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  485. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  486. package/SVF-doxygen/html/html/search/defines_3.js +1 -0
  487. package/SVF-doxygen/html/html/search/files_2.js +2 -2
  488. package/SVF-doxygen/html/html/search/functions_14.js +1 -1
  489. package/SVF-doxygen/html/html/search/functions_3.js +1 -1
  490. package/SVF-doxygen/html/html/search/functions_6.js +12 -12
  491. package/SVF-doxygen/html/html/search/functions_7.js +1 -1
  492. package/SVF-doxygen/html/html/search/functions_8.js +10 -10
  493. package/SVF-doxygen/html/html/search/typedefs_c.js +1 -1
  494. package/SVF-doxygen/html/html/search/variables_12.js +1 -1
  495. package/SVF-doxygen/html/html/search/variables_13.js +2 -2
  496. package/SVF-doxygen/html/html/search/variables_15.js +4 -4
  497. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  498. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  499. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +12 -12
  500. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4-members.html +1 -1
  501. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +26 -16
  502. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4-members.html +1 -1
  503. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +25 -15
  504. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +1 -1
  505. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4-members.html +1 -1
  506. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +29 -19
  507. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.html +1 -1
  508. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.html +2 -2
  509. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.html +1 -1
  510. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +2 -2
  511. package/SVF-doxygen/html/html/structSVF_1_1Hash.html +3 -3
  512. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  513. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +5 -5
  514. package/SVF-doxygen/html/html/structSVF_1_1MemRegion_1_1equalMemRegion.html +1 -1
  515. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1equalNodeBS.html +3 -3
  516. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1equalPointsTo.html +3 -3
  517. package/SVF-doxygen/html/html/structSVF_1_1cppUtil_1_1DemangledName.html +6 -6
  518. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
  519. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
  520. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  521. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +1 -1
  522. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  523. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +4 -4
  524. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  525. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  526. package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
  527. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
  528. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +4 -4
  529. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  530. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  531. package/include/MTA/MTA.h +1 -0
  532. package/include/MTA/MTAStat.h +1 -0
  533. package/include/MemoryModel/PersistentPointsToCache.h +1 -0
  534. package/include/SVF-LLVM/DCHG.h +2 -1
  535. package/include/SVF-LLVM/LLVMLoopAnalysis.h +1 -0
  536. package/include/SVF-LLVM/LLVMModule.h +2 -2
  537. package/include/SVF-LLVM/LLVMUtil.h +135 -79
  538. package/include/SVF-LLVM/SVFIRBuilder.h +1 -0
  539. package/include/SVFIR/PAGBuilderFromFile.h +3 -3
  540. package/include/SVFIR/SVFIR.h +3 -3
  541. package/include/SVFIR/SVFModule.h +3 -3
  542. package/include/SVFIR/SVFStatements.h +3 -3
  543. package/include/SVFIR/SVFType.h +120 -103
  544. package/include/SVFIR/SVFValue.h +3 -3
  545. package/include/SVFIR/SVFVariables.h +3 -3
  546. package/include/SVFIR/SymbolTableInfo.h +3 -3
  547. package/include/Util/Annotator.h +8 -17
  548. package/include/{SVF-LLVM/CPPUtil.h → Util/CppUtil.h} +5 -54
  549. package/include/Util/SVFUtil.h +3 -9
  550. package/index.html +9 -5
  551. package/lib/CFL/CFLAlias.cpp +1 -1
  552. package/lib/CFL/CFLVF.cpp +1 -0
  553. package/lib/Graphs/CHG.cpp +1 -0
  554. package/lib/Graphs/ConsG.cpp +0 -5
  555. package/lib/Graphs/IRGraph.cpp +0 -5
  556. package/lib/Graphs/SVFG.cpp +0 -5
  557. package/lib/MemoryModel/PointerAnalysis.cpp +1 -0
  558. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -0
  559. package/lib/SABER/SaberCondAllocator.cpp +2 -0
  560. package/lib/SVF-LLVM/CHGBuilder.cpp +10 -10
  561. package/lib/SVF-LLVM/DCHG.cpp +1 -1
  562. package/lib/SVF-LLVM/LLVMModule.cpp +4 -4
  563. package/lib/SVF-LLVM/LLVMUtil.cpp +362 -4
  564. package/lib/SVF-LLVM/SVFIRBuilder.cpp +2 -2
  565. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +1 -1
  566. package/lib/Util/CppUtil.cpp +214 -0
  567. package/lib/Util/ExtAPI.cpp +1 -1
  568. package/lib/Util/NodeIDAllocator.cpp +3 -2
  569. package/lib/WPA/TypeAnalysis.cpp +1 -0
  570. package/package.json +1 -1
  571. package/tools/MTA/MTAAnnotator.h +2 -0
  572. package/lib/SVF-LLVM/CPPUtil.cpp +0 -572
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">SVFVariables.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="SVFVariables_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">//===- SVFSymbols.h -- SVF Variables------------------------//</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"> * SVFVariables.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: Nov 11, 2013</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 OBJECTANDSYMBOL_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define OBJECTANDSYMBOL_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="GenericGraph_8h.html">Graphs/GenericGraph.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="SymbolTableInfo_8h.html">SVFIR/SymbolTableInfo.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="SVFStatements_8h.html">SVFIR/SVFStatements.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;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></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;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a8d5e9e5137b04659ded32330e128df34"> 40</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * SVFIR program variables (PAGNodes)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html">GenericNode&lt;SVFVar,SVFStmt&gt;</a> <a class="code" href="namespaceSVF.html#a8d5e9e5137b04659ded32330e128df34">GenericPAGNodeTy</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> : <span class="keyword">public</span> GenericPAGNodeTy</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a6755ed387e15f44ffb637f64a0af60bc"> 47</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1IRGraph.html">IRGraph</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a6dbb40e8ee92033b77440c44acd8a868"> 48</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a1499a631a2a15408ea35a09fccc0f0ad"> 49</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1VFG.html">VFG</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"> 51</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff"> 61</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66"> 63</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66">ValNode</a>,</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11"> 64</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11">ObjNode</a>,</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98"> 65</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">RetNode</a>,</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf"> 66</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">VarargNode</a>,</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a"> 67</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">GepValNode</a>,</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f"> 68</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">GepObjNode</a>,</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6"> 69</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">FIObjNode</a>,</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8"> 70</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">DummyValNode</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af"> 71</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">DummyObjNode</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e"> 76</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>; </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a0d918a6c8dd3b7b395d4c7161bcf9656"> 77</a></span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66">SVFStmt::KindToSVFStmtMapTy</a> <a class="code" href="classSVF_1_1SVFVar.html#a0d918a6c8dd3b7b395d4c7161bcf9656">InEdgeKindToSetMap</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a3775dd07e89ea6b25950a8b900a4ceab"> 78</a></span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66">SVFStmt::KindToSVFStmtMapTy</a> <a class="code" href="classSVF_1_1SVFVar.html#a3775dd07e89ea6b25950a8b900a4ceab">OutEdgeKindToSetMap</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a7c8ffadedbf53d30694feeb7771990af"> 79</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a7c8ffadedbf53d30694feeb7771990af">isPtr</a>; </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a83626a4beb124b35bcd5af86c9fc62fd">SVFVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> k);</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#ab76f9dea1559bd9b10b870dbc7bb454a"> 85</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SVFVar.html#ab76f9dea1559bd9b10b870dbc7bb454a">~SVFVar</a>()</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</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"><a class="line" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0"> 91</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* <a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; assert((this-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() != <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">DummyValNode</a> &amp;&amp; this-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() != <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">DummyObjNode</a>) &amp;&amp; <span class="stringliteral">&quot;dummy node do not have value!&quot;</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; assert((<a class="code" href="classSVF_1_1SymbolTableInfo.html#a2fc4bfb83b71a4c14e16168382cb8f5d">SymbolTableInfo::isBlkObjOrConstantObj</a>(this-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())==<span class="keyword">false</span>) &amp;&amp; <span class="stringliteral">&quot;blackhole and constant obj do not have value&quot;</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; assert(value &amp;&amp; <span class="stringliteral">&quot;value is null (GepObjNode whose basenode is a DummyObj?)&quot;</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</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="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047"> 100</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> (value)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> value-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a"> 107</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> value!=<span class="keyword">nullptr</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271"> 112</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#a7c8ffadedbf53d30694feeb7771990af">isPtr</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a091ef22d4fc428985d604b03f287a941">isConstDataOrAggDataButNotNullPtr</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#acf194658d2cbdaf3f26f2af6c325fad7">isIsolatedNode</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">getValueName</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a79b35a312248e96a89a28cbf1b99b6fe"> 127</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1SVFVar.html#a79b35a312248e96a89a28cbf1b99b6fe">getFunction</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span>(value)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst = SVFUtil::dyn_cast&lt;SVFInstruction&gt;(value))</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> inst-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* arg = SVFUtil::dyn_cast&lt;SVFArgument&gt;(value))</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> arg-&gt;getParent();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(value))</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> fun;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6"> 142</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> InEdgeKindToSetMap[kind];</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a927733580b47be5ffcfced44ba9fd6c3"> 147</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFVar.html#a927733580b47be5ffcfced44ba9fd6c3">getOutgoingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> OutEdgeKindToSetMap[kind];</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc"> 152</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (it != InEdgeKindToSetMap.end())</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> (!it-&gt;second.empty());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a9b00f9b5f8ad2422162f4396e2d8fa42"> 161</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a9b00f9b5f8ad2422162f4396e2d8fa42">hasOutgoingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (it != OutEdgeKindToSetMap.end())</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> (!it-&gt;second.empty());</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a893890649ae7d8e275dd823e941aa39b"> 171</a></span>&#160; <span class="keyword">inline</span> SVFStmt::SVFStmtSetTy::iterator <a class="code" href="classSVF_1_1SVFVar.html#a893890649ae7d8e275dd823e941aa39b">getIncomingEdgesBegin</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; assert(it!=InEdgeKindToSetMap.end() &amp;&amp; <span class="stringliteral">&quot;The node does not have such kind of edge&quot;</span>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> it-&gt;second.begin();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#af1cf24ab50e0d86c9d0f9bd5744b4c10"> 179</a></span>&#160; <span class="keyword">inline</span> SVFStmt::SVFStmtSetTy::iterator <a class="code" href="classSVF_1_1SVFVar.html#af1cf24ab50e0d86c9d0f9bd5744b4c10">getIncomingEdgesEnd</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; assert(it!=InEdgeKindToSetMap.end() &amp;&amp; <span class="stringliteral">&quot;The node does not have such kind of edge&quot;</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> it-&gt;second.end();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a9e40eafe55a2c1448b830b56ae72e17f"> 187</a></span>&#160; <span class="keyword">inline</span> SVFStmt::SVFStmtSetTy::iterator <a class="code" href="classSVF_1_1SVFVar.html#a9e40eafe55a2c1448b830b56ae72e17f">getOutgoingEdgesBegin</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; assert(it!=OutEdgeKindToSetMap.end() &amp;&amp; <span class="stringliteral">&quot;The node does not have such kind of edge&quot;</span>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> it-&gt;second.begin();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#aa5176fce9746bc585d43ebb4c8c824e5"> 195</a></span>&#160; <span class="keyword">inline</span> SVFStmt::SVFStmtSetTy::iterator <a class="code" href="classSVF_1_1SVFVar.html#aa5176fce9746bc585d43ebb4c8c824e5">getOutgoingEdgesEnd</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; assert(it!=OutEdgeKindToSetMap.end() &amp;&amp; <span class="stringliteral">&quot;The node does not have such kind of edge&quot;</span>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> it-&gt;second.end();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a9376133075b0d44ff09876af933c8618"> 206</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFVar.html#a9376133075b0d44ff09876af933c8618">addInEdge</a>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* inEdge)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a> kind = inEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; InEdgeKindToSetMap[kind].insert(inEdge);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a93d217b0c9fd8008a2989ca2b4f3fbfb">addIncomingEdge</a>(inEdge);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a21a44c7a30e4e3743f6c3186fd7dbe8f"> 213</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFVar.html#a21a44c7a30e4e3743f6c3186fd7dbe8f">addOutEdge</a>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* outEdge)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a> kind = outEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; OutEdgeKindToSetMap[kind].insert(outEdge);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#ae74283fbc788665296a69e56f334557b">addOutgoingEdge</a>(outEdge);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a71e4fd7a1271a17e971ed90044e6da24"> 220</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a71e4fd7a1271a17e971ed90044e6da24">hasIncomingVariantGepEdge</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">if</span> (it != InEdgeKindToSetMap.end())</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> gep : it-&gt;second)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span>(SVFUtil::cast&lt;GepStmt&gt;(gep)-&gt;isVariantFieldGep())</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFVar.html#aa34b2230655db9c4195e44e1c437bbc6">dump</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#aeea492411a86c65bcce4a1ef956b3dbe"> 243</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>&amp; <a class="code" href="classSVF_1_1SVFVar.html#aeea492411a86c65bcce4a1ef956b3dbe">operator&lt;&lt; </a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp;o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> &amp;node)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; o &lt;&lt; node.<a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;};</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> * Value (Pointer) variable</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html"> 256</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1ValVar.html">ValVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;{</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html#adbbf3c9ff5dcb10ac528d3eb4b69750c"> 262</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ValVar.html#adbbf3c9ff5dcb10ac528d3eb4b69750c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html#a71e5f4eaf74f852d3354ac6b0b65f39c"> 266</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ValVar.html#a71e5f4eaf74f852d3354ac6b0b65f39c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66">SVFVar::ValNode</a> ||</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">SVFVar::GepValNode</a> ||</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">SVFVar::RetNode</a> ||</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">SVFVar::VarargNode</a> ||</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">SVFVar::DummyValNode</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html#a371f38564932cc04c6c4a00a99bf6c6a"> 274</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ValVar.html#a371f38564932cc04c6c4a00a99bf6c6a">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66">SVFVar::ValNode</a> ||</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">SVFVar::GepValNode</a> ||</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">SVFVar::RetNode</a> ||</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">SVFVar::VarargNode</a> ||</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">SVFVar::DummyValNode</a>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html#a4f01c7de5795f85a5f70bbf4f15c70df"> 285</a></span>&#160; <a class="code" href="classSVF_1_1ValVar.html#a4f01c7de5795f85a5f70bbf4f15c70df">ValVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> ty = <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66">ValNode</a>) :</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>(val, i, ty)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html#aeaccfd3bf5f968ad12d7e1a2426e5faa"> 290</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ValVar.html#aeaccfd3bf5f968ad12d7e1a2426e5faa">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;};</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> * Memory Object variable</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html"> 304</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#a3d08dc1d15a449ff4b7018da4bfdcb88"> 308</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1ObjVar.html#a3d08dc1d15a449ff4b7018da4bfdcb88">mem</a>; </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* m, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> ty = <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11">ObjNode</a>) :</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>(val, i, ty), mem(m)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#ac127d3ee00a6bed2bdba2f24b389eb4b"> 317</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjVar.html#ac127d3ee00a6bed2bdba2f24b389eb4b">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#a78ee2be4a346728be947ce29d3820c13"> 321</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjVar.html#a78ee2be4a346728be947ce29d3820c13">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11">SVFVar::ObjNode</a> ||</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">SVFVar::GepObjNode</a> ||</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">SVFVar::FIObjNode</a> ||</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">SVFVar::DummyObjNode</a>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#a42b68822afc39d415db8c29079caf9c8"> 328</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjVar.html#a42b68822afc39d415db8c29079caf9c8">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11">SVFVar::ObjNode</a> ||</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">SVFVar::GepObjNode</a> ||</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">SVFVar::FIObjNode</a> ||</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">SVFVar::DummyObjNode</a>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930"> 338</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> mem;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#ac1609e2e3b6843c6f7992e425771fce3"> 344</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ObjVar.html#ac1609e2e3b6843c6f7992e425771fce3">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#a211bd0b8520af2ceb769aba1d7631ff8"> 351</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1ObjVar.html#a211bd0b8520af2ceb769aba1d7631ff8">getType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a16dbca26cbb5af9be4a0b0aa04325810">getType</a>();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;};</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"> * Gep Value (Pointer) variable, this variable can be dynamic generated for field sensitive analysis</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"> * e.g. memcpy, temp gep value variable needs to be created</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> * Each Gep Value variable is connected to base value variable via gep edge</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html"> 365</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1GepValVar.html">GepValVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;{</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a2ee5e9a2e5a92b32fd81fda09b560ad6"> 369</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1GepValVar.html#a2ee5e9a2e5a92b32fd81fda09b560ad6">ls</a>; <span class="comment">// LocationSet</span></div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a4aa450bce36b4b9f65b769eae649771a"> 370</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1GepValVar.html#a4aa450bce36b4b9f65b769eae649771a">gepValType</a>;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a28e42f01110a2d0a5f1f90bca14c5035"> 375</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepValVar.html#a28e42f01110a2d0a5f1f90bca14c5035">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepValVar.html">GepValVar</a> *)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#aea2c58dc4124157a23c2cc0fe050f158"> 379</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepValVar.html#aea2c58dc4124157a23c2cc0fe050f158">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> * node)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">SVFVar::GepValNode</a>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a8f8f8e21cdfcccd7523dc2371c696ad8"> 383</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepValVar.html#a8f8f8e21cdfcccd7523dc2371c696ad8">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">SVFVar::GepValNode</a>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a0aab756122dcce24faf556f0b7057dc1"> 387</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepValVar.html#a0aab756122dcce24faf556f0b7057dc1">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">SVFVar::GepValNode</a>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a48e169e0bcb567a1c5517f404c5af8de"> 394</a></span>&#160; <a class="code" href="classSVF_1_1GepValVar.html#a48e169e0bcb567a1c5517f404c5af8de">GepValVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; l, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty) :</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">ValVar</a>(val, i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">GepValNode</a>), ls(l), gepValType(ty)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a0e5084d3fc54a70ace07075f846395ef"> 400</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="classSVF_1_1GepValVar.html#a0e5084d3fc54a70ace07075f846395ef">getConstantFieldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#ae89482e674768298f49e51df4ebe63e3"> 406</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1GepValVar.html#ae89482e674768298f49e51df4ebe63e3">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() + <span class="stringliteral">&quot;_&quot;</span> + std::to_string(getConstantFieldIdx());</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;offset_&quot;</span> + std::to_string(getConstantFieldIdx());</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a1e2309d2f36422a15216f9916325e554"> 413</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1GepValVar.html#a1e2309d2f36422a15216f9916325e554">getType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">return</span> gepValType;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;};</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="comment"> * Gep Obj variable, this is dynamic generated for field sensitive analysis</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="comment"> * Each gep obj variable is one field of a MemObj (base)</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html"> 426</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;{</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a55b057663180420c6bb09bf849d83f6b"> 429</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1GepObjVar.html#a55b057663180420c6bb09bf849d83f6b">ls</a>;</div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#aff50e1d96403eeacaa64f7adb07ce0a5"> 430</a></span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> base = 0;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#ab3129ad98687e6352675d84373d96ffe"> 435</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepObjVar.html#ab3129ad98687e6352675d84373d96ffe">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *)</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#ab6105a2f7bbd9a4e611d96f0bcac0e6c"> 439</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepObjVar.html#ab6105a2f7bbd9a4e611d96f0bcac0e6c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> * node)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">SVFVar::GepObjNode</a>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#ad7fc6e6ed6fca8641c44b91ab29524bd"> 443</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepObjVar.html#ad7fc6e6ed6fca8641c44b91ab29524bd">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">SVFVar::GepObjNode</a>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#ac3583a2d4d4ceaf820d23b43a893ac92"> 447</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepObjVar.html#ac3583a2d4d4ceaf820d23b43a893ac92">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">SVFVar::GepObjNode</a>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#ae80d95a4d90ca64eca819e140445004c"> 454</a></span>&#160; <a class="code" href="classSVF_1_1GepObjVar.html#ae80d95a4d90ca64eca819e140445004c">GepObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; l, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> ty = <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">GepObjNode</a>) :</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>(mem-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>(), i, mem, ty), ls(l)</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; base = mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a553e648804b39c503e7288dd0434c339"> 461</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; <a class="code" href="classSVF_1_1GepObjVar.html#a553e648804b39c503e7288dd0434c339">getLocationSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> ls;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#aaf2ab86c43e4f33183289f9bdead36c1"> 467</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="classSVF_1_1GepObjVar.html#aaf2ab86c43e4f33183289f9bdead36c1">getConstantFieldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">return</span> ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a5e371fae7592d763661a7cb777107ff4"> 473</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1GepObjVar.html#a5e371fae7592d763661a7cb777107ff4">setBaseNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> base)</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; this-&gt;base = base;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a4c5e346db61f7e04c15bf8527d8eff3c"> 479</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GepObjVar.html#a4c5e346db61f7e04c15bf8527d8eff3c">getBaseNode</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">return</span> base;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a1134621fcfa81732f882784aa4197e11"> 485</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1GepObjVar.html#a1134621fcfa81732f882784aa4197e11">getType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a806ae865d29c4b05b69c499284758c6f">getFlatternedElemType</a>(mem-&gt;getType(), ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>());</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a88f86fe8abcb0550d838e5de11ae3ef7"> 491</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1GepObjVar.html#a88f86fe8abcb0550d838e5de11ae3ef7">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() + <span class="stringliteral">&quot;_&quot;</span> + std::to_string(ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>());</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;offset_&quot;</span> + std::to_string(ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>());</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;};</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="comment"> * Field-insensitive Gep Obj variable, this is dynamic generated for field sensitive analysis</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="comment"> * Each field-insensitive gep obj node represents all fields of a MemObj (base)</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html"> 505</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;{</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div><div class="line"><a name="l00511"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a1801ca6c6cf3367eff5621fa7c788619"> 511</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FIObjVar.html#a1801ca6c6cf3367eff5621fa7c788619">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a> *)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a07ed7216777acb05861044542cc2fe66"> 515</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FIObjVar.html#a07ed7216777acb05861044542cc2fe66">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> * node)</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">SVFVar::FIObjNode</a>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a1f6ba91fe429f55598cef983a2b3a538"> 519</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FIObjVar.html#a1f6ba91fe429f55598cef983a2b3a538">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">SVFVar::FIObjNode</a>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div><div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a73cd80e57f81d34b6295e110e3d43acc"> 523</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FIObjVar.html#a73cd80e57f81d34b6295e110e3d43acc">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">SVFVar::FIObjNode</a>;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a249efb32d80b9ea0a31e526a0868e876"> 530</a></span>&#160; <a class="code" href="classSVF_1_1FIObjVar.html#a249efb32d80b9ea0a31e526a0868e876">FIObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> ty = <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">FIObjNode</a>) :</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>(val, i, mem, ty)</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a330b28f8488de9e186bedf73e5576a08"> 536</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1FIObjVar.html#a330b28f8488de9e186bedf73e5576a08">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>)</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() + <span class="stringliteral">&quot; (base object)&quot;</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot; (base object)&quot;</span>;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;};</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="comment"> * Unique Return node of a procedure</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00549"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html"> 549</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1RetPN.html">RetPN</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;{</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#acedd9e576a077f96c0638065d4c70bcf"> 555</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPN.html#acedd9e576a077f96c0638065d4c70bcf">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPN.html">RetPN</a> *)</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div><div class="line"><a name="l00559"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#a5e9d174902aa6dcfae418697363967b9"> 559</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPN.html#a5e9d174902aa6dcfae418697363967b9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">SVFVar::RetNode</a>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#a70b218109d2cc7850bbab5a4504784db"> 563</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPN.html#a70b218109d2cc7850bbab5a4504784db">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *node)</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">SVFVar::RetNode</a>;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div><div class="line"><a name="l00567"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#a69ee6310b7236bc1230fa63440b0f551"> 567</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPN.html#a69ee6310b7236bc1230fa63440b0f551">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">SVFVar::RetNode</a>;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#ac551c1aaf9ec3cb77814aa4664d61a23"> 574</a></span>&#160; <a class="code" href="classSVF_1_1RetPN.html#ac551c1aaf9ec3cb77814aa4664d61a23">RetPN</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i) :</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">ValVar</a>(val, i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">RetNode</a>)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00580"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#a48c099d2b441b4cc298166e2c5866c8f"> 580</a></span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1RetPN.html#a48c099d2b441b4cc298166e2c5866c8f">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() + <span class="stringliteral">&quot;_ret&quot;</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; }</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;};</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="comment"> * Unique vararg node of a procedure</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html"> 592</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1VarArgPN.html">VarArgPN</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;{</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#acaecf9e9d98c4a14fecee0877a72839c"> 598</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VarArgPN.html#acaecf9e9d98c4a14fecee0877a72839c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VarArgPN.html">VarArgPN</a> *)</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div><div class="line"><a name="l00602"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#a2adee91065fef72cb8f64924aa83ec0a"> 602</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VarArgPN.html#a2adee91065fef72cb8f64924aa83ec0a">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">SVFVar::VarargNode</a>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#a3a7f82ff9fe4426ae8d967460995e2cd"> 606</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VarArgPN.html#a3a7f82ff9fe4426ae8d967460995e2cd">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *node)</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">SVFVar::VarargNode</a>;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#a7f873a8015eb6a6b30530a7e5a69018d"> 610</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VarArgPN.html#a7f873a8015eb6a6b30530a7e5a69018d">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">SVFVar::VarargNode</a>;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;</div><div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#ad6ebe474373838bc6c00e8baaa3f7137"> 617</a></span>&#160; <a class="code" href="classSVF_1_1VarArgPN.html#ad6ebe474373838bc6c00e8baaa3f7137">VarArgPN</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i) :</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">ValVar</a>(val, i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">VarargNode</a>)</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00623"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#aec7ac87f5fff58b24daea998aaf0cc2a"> 623</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1VarArgPN.html#aec7ac87f5fff58b24daea998aaf0cc2a">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() + <span class="stringliteral">&quot;_vararg&quot;</span>;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;};</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;<span class="comment"> * Dummy variable without any LLVM value</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html"> 637</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DummyValVar.html">DummyValVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;{</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;</div><div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#a06c603907dce56bea44f9a4f9da4d6c7"> 643</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyValVar.html#a06c603907dce56bea44f9a4f9da4d6c7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DummyValVar.html">DummyValVar</a> *)</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div><div class="line"><a name="l00647"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#ac09e183185b178f16547bb355ccb01f3"> 647</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyValVar.html#ac09e183185b178f16547bb355ccb01f3">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">SVFVar::DummyValNode</a>;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; }</div><div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#a3fbbb34ccb50e65d6d7aabe7e84e548f"> 651</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyValVar.html#a3fbbb34ccb50e65d6d7aabe7e84e548f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *node)</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">SVFVar::DummyValNode</a>;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; }</div><div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#abd4bbbbe43db12627923729a9d5a5442"> 655</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyValVar.html#abd4bbbbe43db12627923729a9d5a5442">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; {</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">SVFVar::DummyValNode</a>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;</div><div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#a39fb5acde002694e91599a67ff3ae99a"> 662</a></span>&#160; <a class="code" href="classSVF_1_1DummyValVar.html#a39fb5acde002694e91599a67ff3ae99a">DummyValVar</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i) : <a class="code" href="classSVF_1_1ValVar.html">ValVar</a>(nullptr, i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">DummyValNode</a>)</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#a188ddcb95f842245fb97362ff8a06efd"> 668</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1DummyValVar.html#a188ddcb95f842245fb97362ff8a06efd">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;dummyVal&quot;</span>;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;};</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"> * Dummy object variable</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00680"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html"> 680</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;{</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#a543ca59bd39740d1080fe4702bc2fd69"> 686</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyObjVar.html#a543ca59bd39740d1080fe4702bc2fd69">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a> *)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; }</div><div class="line"><a name="l00690"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#a9552d717a869b0ec6678843a56fc8695"> 690</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyObjVar.html#a9552d717a869b0ec6678843a56fc8695">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">SVFVar::DummyObjNode</a>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#aabbc9127565b4c336b28d433297fa37f"> 694</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyObjVar.html#aabbc9127565b4c336b28d433297fa37f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *node)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">SVFVar::DummyObjNode</a>;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div><div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#a6aefb8e6612cb6322e064ac3521fa849"> 698</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyObjVar.html#a6aefb8e6612cb6322e064ac3521fa849">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">SVFVar::DummyObjNode</a>;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#a3dff74bbf50b6a901239d3fd31e0f36c"> 705</a></span>&#160; <a class="code" href="classSVF_1_1DummyObjVar.html#a3dff74bbf50b6a901239d3fd31e0f36c">DummyObjVar</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i,<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* m, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> ty = <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">DummyObjNode</a>)</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; : <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>(nullptr, i, m, ty)</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#aec23bc498cf78ed065565681e14dd2dd"> 711</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1DummyObjVar.html#aec23bc498cf78ed065565681e14dd2dd">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;dummyObj&quot;</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;};</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* OBJECTANDSYMBOL_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SVFVar_html_a9376133075b0d44ff09876af933c8618"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a9376133075b0d44ff09876af933c8618">SVF::SVFVar::addInEdge</a></div><div class="ttdeci">void addInEdge(SVFStmt *inEdge)</div><div class="ttdoc">add methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00206">SVFVariables.h:206</a></div></div>
69
+ <a href="SVFVariables_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">//===- SVFSymbols.h -- SVF Variables------------------------//</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"> * SVFVariables.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: Nov 11, 2013</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_SVFIR_SVFVARIABLE_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define INCLUDE_SVFIR_SVFVARIABLE_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="GenericGraph_8h.html">Graphs/GenericGraph.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="SymbolTableInfo_8h.html">SVFIR/SymbolTableInfo.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="SVFStatements_8h.html">SVFIR/SVFStatements.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;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></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;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a8d5e9e5137b04659ded32330e128df34"> 40</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * SVFIR program variables (PAGNodes)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html">GenericNode&lt;SVFVar,SVFStmt&gt;</a> <a class="code" href="namespaceSVF.html#a8d5e9e5137b04659ded32330e128df34">GenericPAGNodeTy</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> : <span class="keyword">public</span> GenericPAGNodeTy</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a6755ed387e15f44ffb637f64a0af60bc"> 47</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1IRGraph.html">IRGraph</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a6dbb40e8ee92033b77440c44acd8a868"> 48</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a1499a631a2a15408ea35a09fccc0f0ad"> 49</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1VFG.html">VFG</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"> 51</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff"> 61</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66"> 63</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66">ValNode</a>,</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11"> 64</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11">ObjNode</a>,</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98"> 65</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">RetNode</a>,</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf"> 66</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">VarargNode</a>,</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a"> 67</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">GepValNode</a>,</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f"> 68</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">GepObjNode</a>,</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6"> 69</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">FIObjNode</a>,</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8"> 70</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">DummyValNode</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af"> 71</a></span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">DummyObjNode</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e"> 76</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>; </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a0d918a6c8dd3b7b395d4c7161bcf9656"> 77</a></span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66">SVFStmt::KindToSVFStmtMapTy</a> <a class="code" href="classSVF_1_1SVFVar.html#a0d918a6c8dd3b7b395d4c7161bcf9656">InEdgeKindToSetMap</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a3775dd07e89ea6b25950a8b900a4ceab"> 78</a></span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66">SVFStmt::KindToSVFStmtMapTy</a> <a class="code" href="classSVF_1_1SVFVar.html#a3775dd07e89ea6b25950a8b900a4ceab">OutEdgeKindToSetMap</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a7c8ffadedbf53d30694feeb7771990af"> 79</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a7c8ffadedbf53d30694feeb7771990af">isPtr</a>; </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html#a83626a4beb124b35bcd5af86c9fc62fd">SVFVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> k);</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#ab76f9dea1559bd9b10b870dbc7bb454a"> 85</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SVFVar.html#ab76f9dea1559bd9b10b870dbc7bb454a">~SVFVar</a>()</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</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"><a class="line" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0"> 91</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* <a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; assert((this-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() != <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">DummyValNode</a> &amp;&amp; this-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() != <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">DummyObjNode</a>) &amp;&amp; <span class="stringliteral">&quot;dummy node do not have value!&quot;</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; assert((<a class="code" href="classSVF_1_1SymbolTableInfo.html#a2fc4bfb83b71a4c14e16168382cb8f5d">SymbolTableInfo::isBlkObjOrConstantObj</a>(this-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())==<span class="keyword">false</span>) &amp;&amp; <span class="stringliteral">&quot;blackhole and constant obj do not have value&quot;</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; assert(value &amp;&amp; <span class="stringliteral">&quot;value is null (GepObjNode whose basenode is a DummyObj?)&quot;</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</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="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047"> 100</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> (value)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> value-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a"> 107</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> value!=<span class="keyword">nullptr</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271"> 112</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#a7c8ffadedbf53d30694feeb7771990af">isPtr</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a091ef22d4fc428985d604b03f287a941">isConstDataOrAggDataButNotNullPtr</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#acf194658d2cbdaf3f26f2af6c325fad7">isIsolatedNode</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">getValueName</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a79b35a312248e96a89a28cbf1b99b6fe"> 127</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1SVFVar.html#a79b35a312248e96a89a28cbf1b99b6fe">getFunction</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span>(value)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst = SVFUtil::dyn_cast&lt;SVFInstruction&gt;(value))</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> inst-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* arg = SVFUtil::dyn_cast&lt;SVFArgument&gt;(value))</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> arg-&gt;getParent();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(value))</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> fun;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6"> 142</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> InEdgeKindToSetMap[kind];</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a927733580b47be5ffcfced44ba9fd6c3"> 147</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFVar.html#a927733580b47be5ffcfced44ba9fd6c3">getOutgoingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> OutEdgeKindToSetMap[kind];</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc"> 152</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (it != InEdgeKindToSetMap.end())</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> (!it-&gt;second.empty());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a9b00f9b5f8ad2422162f4396e2d8fa42"> 161</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a9b00f9b5f8ad2422162f4396e2d8fa42">hasOutgoingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (it != OutEdgeKindToSetMap.end())</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> (!it-&gt;second.empty());</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a893890649ae7d8e275dd823e941aa39b"> 171</a></span>&#160; <span class="keyword">inline</span> SVFStmt::SVFStmtSetTy::iterator <a class="code" href="classSVF_1_1SVFVar.html#a893890649ae7d8e275dd823e941aa39b">getIncomingEdgesBegin</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; assert(it!=InEdgeKindToSetMap.end() &amp;&amp; <span class="stringliteral">&quot;The node does not have such kind of edge&quot;</span>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> it-&gt;second.begin();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#af1cf24ab50e0d86c9d0f9bd5744b4c10"> 179</a></span>&#160; <span class="keyword">inline</span> SVFStmt::SVFStmtSetTy::iterator <a class="code" href="classSVF_1_1SVFVar.html#af1cf24ab50e0d86c9d0f9bd5744b4c10">getIncomingEdgesEnd</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; assert(it!=InEdgeKindToSetMap.end() &amp;&amp; <span class="stringliteral">&quot;The node does not have such kind of edge&quot;</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> it-&gt;second.end();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a9e40eafe55a2c1448b830b56ae72e17f"> 187</a></span>&#160; <span class="keyword">inline</span> SVFStmt::SVFStmtSetTy::iterator <a class="code" href="classSVF_1_1SVFVar.html#a9e40eafe55a2c1448b830b56ae72e17f">getOutgoingEdgesBegin</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; assert(it!=OutEdgeKindToSetMap.end() &amp;&amp; <span class="stringliteral">&quot;The node does not have such kind of edge&quot;</span>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> it-&gt;second.begin();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#aa5176fce9746bc585d43ebb4c8c824e5"> 195</a></span>&#160; <span class="keyword">inline</span> SVFStmt::SVFStmtSetTy::iterator <a class="code" href="classSVF_1_1SVFVar.html#aa5176fce9746bc585d43ebb4c8c824e5">getOutgoingEdgesEnd</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)<span class="keyword"> const</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; assert(it!=OutEdgeKindToSetMap.end() &amp;&amp; <span class="stringliteral">&quot;The node does not have such kind of edge&quot;</span>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> it-&gt;second.end();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a9376133075b0d44ff09876af933c8618"> 206</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFVar.html#a9376133075b0d44ff09876af933c8618">addInEdge</a>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* inEdge)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a> kind = inEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; InEdgeKindToSetMap[kind].insert(inEdge);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a93d217b0c9fd8008a2989ca2b4f3fbfb">addIncomingEdge</a>(inEdge);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a21a44c7a30e4e3743f6c3186fd7dbe8f"> 213</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFVar.html#a21a44c7a30e4e3743f6c3186fd7dbe8f">addOutEdge</a>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* outEdge)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">GNodeK</a> kind = outEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; OutEdgeKindToSetMap[kind].insert(outEdge);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#ae74283fbc788665296a69e56f334557b">addOutgoingEdge</a>(outEdge);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#a71e4fd7a1271a17e971ed90044e6da24"> 220</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFVar.html#a71e4fd7a1271a17e971ed90044e6da24">hasIncomingVariantGepEdge</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">if</span> (it != InEdgeKindToSetMap.end())</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> gep : it-&gt;second)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span>(SVFUtil::cast&lt;GepStmt&gt;(gep)-&gt;isVariantFieldGep())</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFVar.html#aa34b2230655db9c4195e44e1c437bbc6">dump</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFVar.html#aeea492411a86c65bcce4a1ef956b3dbe"> 243</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>&amp; <a class="code" href="classSVF_1_1SVFVar.html#aeea492411a86c65bcce4a1ef956b3dbe">operator&lt;&lt; </a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp;o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> &amp;node)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; o &lt;&lt; node.<a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;};</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> * Value (Pointer) variable</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html"> 256</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1ValVar.html">ValVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;{</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html#adbbf3c9ff5dcb10ac528d3eb4b69750c"> 262</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ValVar.html#adbbf3c9ff5dcb10ac528d3eb4b69750c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html#a71e5f4eaf74f852d3354ac6b0b65f39c"> 266</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ValVar.html#a71e5f4eaf74f852d3354ac6b0b65f39c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66">SVFVar::ValNode</a> ||</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">SVFVar::GepValNode</a> ||</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">SVFVar::RetNode</a> ||</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">SVFVar::VarargNode</a> ||</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">SVFVar::DummyValNode</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html#a371f38564932cc04c6c4a00a99bf6c6a"> 274</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ValVar.html#a371f38564932cc04c6c4a00a99bf6c6a">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66">SVFVar::ValNode</a> ||</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">SVFVar::GepValNode</a> ||</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">SVFVar::RetNode</a> ||</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">SVFVar::VarargNode</a> ||</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">SVFVar::DummyValNode</a>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html#a4f01c7de5795f85a5f70bbf4f15c70df"> 285</a></span>&#160; <a class="code" href="classSVF_1_1ValVar.html#a4f01c7de5795f85a5f70bbf4f15c70df">ValVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> ty = <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66">ValNode</a>) :</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>(val, i, ty)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1ValVar.html#aeaccfd3bf5f968ad12d7e1a2426e5faa"> 290</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ValVar.html#aeaccfd3bf5f968ad12d7e1a2426e5faa">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;};</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> * Memory Object variable</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html"> 304</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#a3d08dc1d15a449ff4b7018da4bfdcb88"> 308</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1ObjVar.html#a3d08dc1d15a449ff4b7018da4bfdcb88">mem</a>; </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* m, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> ty = <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11">ObjNode</a>) :</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>(val, i, ty), mem(m)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#ac127d3ee00a6bed2bdba2f24b389eb4b"> 317</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjVar.html#ac127d3ee00a6bed2bdba2f24b389eb4b">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#a78ee2be4a346728be947ce29d3820c13"> 321</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjVar.html#a78ee2be4a346728be947ce29d3820c13">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11">SVFVar::ObjNode</a> ||</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">SVFVar::GepObjNode</a> ||</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">SVFVar::FIObjNode</a> ||</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">SVFVar::DummyObjNode</a>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#a42b68822afc39d415db8c29079caf9c8"> 328</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjVar.html#a42b68822afc39d415db8c29079caf9c8">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffae21504009be26916ccdfcb5de42e3e11">SVFVar::ObjNode</a> ||</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">SVFVar::GepObjNode</a> ||</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">SVFVar::FIObjNode</a> ||</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">SVFVar::DummyObjNode</a>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930"> 338</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> mem;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#ac1609e2e3b6843c6f7992e425771fce3"> 344</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ObjVar.html#ac1609e2e3b6843c6f7992e425771fce3">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjVar.html#a211bd0b8520af2ceb769aba1d7631ff8"> 351</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1ObjVar.html#a211bd0b8520af2ceb769aba1d7631ff8">getType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a16dbca26cbb5af9be4a0b0aa04325810">getType</a>();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;};</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"> * Gep Value (Pointer) variable, this variable can be dynamic generated for field sensitive analysis</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"> * e.g. memcpy, temp gep value variable needs to be created</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> * Each Gep Value variable is connected to base value variable via gep edge</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html"> 365</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1GepValVar.html">GepValVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;{</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a2ee5e9a2e5a92b32fd81fda09b560ad6"> 369</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1GepValVar.html#a2ee5e9a2e5a92b32fd81fda09b560ad6">ls</a>; <span class="comment">// LocationSet</span></div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a4aa450bce36b4b9f65b769eae649771a"> 370</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1GepValVar.html#a4aa450bce36b4b9f65b769eae649771a">gepValType</a>;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a28e42f01110a2d0a5f1f90bca14c5035"> 375</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepValVar.html#a28e42f01110a2d0a5f1f90bca14c5035">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepValVar.html">GepValVar</a> *)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#aea2c58dc4124157a23c2cc0fe050f158"> 379</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepValVar.html#aea2c58dc4124157a23c2cc0fe050f158">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> * node)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">SVFVar::GepValNode</a>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a8f8f8e21cdfcccd7523dc2371c696ad8"> 383</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepValVar.html#a8f8f8e21cdfcccd7523dc2371c696ad8">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">SVFVar::GepValNode</a>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a0aab756122dcce24faf556f0b7057dc1"> 387</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepValVar.html#a0aab756122dcce24faf556f0b7057dc1">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">SVFVar::GepValNode</a>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a48e169e0bcb567a1c5517f404c5af8de"> 394</a></span>&#160; <a class="code" href="classSVF_1_1GepValVar.html#a48e169e0bcb567a1c5517f404c5af8de">GepValVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; l, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty) :</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">ValVar</a>(val, i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa288e3f5d01c94d5c5d685d43f08a6c4a">GepValNode</a>), ls(l), gepValType(ty)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a0e5084d3fc54a70ace07075f846395ef"> 400</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="classSVF_1_1GepValVar.html#a0e5084d3fc54a70ace07075f846395ef">getConstantFieldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#ae89482e674768298f49e51df4ebe63e3"> 406</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1GepValVar.html#ae89482e674768298f49e51df4ebe63e3">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() + <span class="stringliteral">&quot;_&quot;</span> + std::to_string(getConstantFieldIdx());</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;offset_&quot;</span> + std::to_string(getConstantFieldIdx());</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValVar.html#a1e2309d2f36422a15216f9916325e554"> 413</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1GepValVar.html#a1e2309d2f36422a15216f9916325e554">getType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">return</span> gepValType;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;};</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="comment"> * Gep Obj variable, this is dynamic generated for field sensitive analysis</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="comment"> * Each gep obj variable is one field of a MemObj (base)</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html"> 426</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;{</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a55b057663180420c6bb09bf849d83f6b"> 429</a></span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1GepObjVar.html#a55b057663180420c6bb09bf849d83f6b">ls</a>;</div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#aff50e1d96403eeacaa64f7adb07ce0a5"> 430</a></span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> base = 0;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#ab3129ad98687e6352675d84373d96ffe"> 435</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepObjVar.html#ab3129ad98687e6352675d84373d96ffe">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *)</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#ab6105a2f7bbd9a4e611d96f0bcac0e6c"> 439</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepObjVar.html#ab6105a2f7bbd9a4e611d96f0bcac0e6c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> * node)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">SVFVar::GepObjNode</a>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#ad7fc6e6ed6fca8641c44b91ab29524bd"> 443</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepObjVar.html#ad7fc6e6ed6fca8641c44b91ab29524bd">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">SVFVar::GepObjNode</a>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#ac3583a2d4d4ceaf820d23b43a893ac92"> 447</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepObjVar.html#ac3583a2d4d4ceaf820d23b43a893ac92">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">SVFVar::GepObjNode</a>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#ae80d95a4d90ca64eca819e140445004c"> 454</a></span>&#160; <a class="code" href="classSVF_1_1GepObjVar.html#ae80d95a4d90ca64eca819e140445004c">GepObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; l, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> ty = <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaf3364b22f497146f06d1f4175a839f4f">GepObjNode</a>) :</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>(mem-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>(), i, mem, ty), ls(l)</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; base = mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a553e648804b39c503e7288dd0434c339"> 461</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; <a class="code" href="classSVF_1_1GepObjVar.html#a553e648804b39c503e7288dd0434c339">getLocationSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> ls;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#aaf2ab86c43e4f33183289f9bdead36c1"> 467</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="classSVF_1_1GepObjVar.html#aaf2ab86c43e4f33183289f9bdead36c1">getConstantFieldIdx</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">return</span> ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a5e371fae7592d763661a7cb777107ff4"> 473</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1GepObjVar.html#a5e371fae7592d763661a7cb777107ff4">setBaseNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> base)</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; this-&gt;base = base;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a4c5e346db61f7e04c15bf8527d8eff3c"> 479</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GepObjVar.html#a4c5e346db61f7e04c15bf8527d8eff3c">getBaseNode</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">return</span> base;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a1134621fcfa81732f882784aa4197e11"> 485</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1GepObjVar.html#a1134621fcfa81732f882784aa4197e11">getType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a806ae865d29c4b05b69c499284758c6f">getFlatternedElemType</a>(mem-&gt;getType(), ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>());</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjVar.html#a88f86fe8abcb0550d838e5de11ae3ef7"> 491</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1GepObjVar.html#a88f86fe8abcb0550d838e5de11ae3ef7">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() + <span class="stringliteral">&quot;_&quot;</span> + std::to_string(ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>());</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;offset_&quot;</span> + std::to_string(ls.<a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>());</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;};</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="comment"> * Field-insensitive Gep Obj variable, this is dynamic generated for field sensitive analysis</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="comment"> * Each field-insensitive gep obj node represents all fields of a MemObj (base)</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html"> 505</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;{</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div><div class="line"><a name="l00511"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a1801ca6c6cf3367eff5621fa7c788619"> 511</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FIObjVar.html#a1801ca6c6cf3367eff5621fa7c788619">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a> *)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a07ed7216777acb05861044542cc2fe66"> 515</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FIObjVar.html#a07ed7216777acb05861044542cc2fe66">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> * node)</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">SVFVar::FIObjNode</a>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a1f6ba91fe429f55598cef983a2b3a538"> 519</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FIObjVar.html#a1f6ba91fe429f55598cef983a2b3a538">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">SVFVar::FIObjNode</a>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div><div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a73cd80e57f81d34b6295e110e3d43acc"> 523</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FIObjVar.html#a73cd80e57f81d34b6295e110e3d43acc">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">SVFVar::FIObjNode</a>;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a249efb32d80b9ea0a31e526a0868e876"> 530</a></span>&#160; <a class="code" href="classSVF_1_1FIObjVar.html#a249efb32d80b9ea0a31e526a0868e876">FIObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> ty = <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffaabe491b0a744825250b97f407962c4a6">FIObjNode</a>) :</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>(val, i, mem, ty)</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjVar.html#a330b28f8488de9e186bedf73e5576a08"> 536</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1FIObjVar.html#a330b28f8488de9e186bedf73e5576a08">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>)</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() + <span class="stringliteral">&quot; (base object)&quot;</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot; (base object)&quot;</span>;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;};</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="comment"> * Unique Return node of a procedure</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00549"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html"> 549</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1RetPN.html">RetPN</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;{</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#acedd9e576a077f96c0638065d4c70bcf"> 555</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPN.html#acedd9e576a077f96c0638065d4c70bcf">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPN.html">RetPN</a> *)</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div><div class="line"><a name="l00559"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#a5e9d174902aa6dcfae418697363967b9"> 559</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPN.html#a5e9d174902aa6dcfae418697363967b9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">SVFVar::RetNode</a>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#a70b218109d2cc7850bbab5a4504784db"> 563</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPN.html#a70b218109d2cc7850bbab5a4504784db">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *node)</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">SVFVar::RetNode</a>;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div><div class="line"><a name="l00567"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#a69ee6310b7236bc1230fa63440b0f551"> 567</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetPN.html#a69ee6310b7236bc1230fa63440b0f551">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">SVFVar::RetNode</a>;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#ac551c1aaf9ec3cb77814aa4664d61a23"> 574</a></span>&#160; <a class="code" href="classSVF_1_1RetPN.html#ac551c1aaf9ec3cb77814aa4664d61a23">RetPN</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i) :</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">ValVar</a>(val, i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5de2a8fce9a85f31818d58992b381b98">RetNode</a>)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00580"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPN.html#a48c099d2b441b4cc298166e2c5866c8f"> 580</a></span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1RetPN.html#a48c099d2b441b4cc298166e2c5866c8f">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() + <span class="stringliteral">&quot;_ret&quot;</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; }</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;};</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="comment"> * Unique vararg node of a procedure</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html"> 592</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1VarArgPN.html">VarArgPN</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;{</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#acaecf9e9d98c4a14fecee0877a72839c"> 598</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VarArgPN.html#acaecf9e9d98c4a14fecee0877a72839c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VarArgPN.html">VarArgPN</a> *)</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div><div class="line"><a name="l00602"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#a2adee91065fef72cb8f64924aa83ec0a"> 602</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VarArgPN.html#a2adee91065fef72cb8f64924aa83ec0a">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">SVFVar::VarargNode</a>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#a3a7f82ff9fe4426ae8d967460995e2cd"> 606</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VarArgPN.html#a3a7f82ff9fe4426ae8d967460995e2cd">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *node)</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">SVFVar::VarargNode</a>;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#a7f873a8015eb6a6b30530a7e5a69018d"> 610</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VarArgPN.html#a7f873a8015eb6a6b30530a7e5a69018d">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">SVFVar::VarargNode</a>;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;</div><div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#ad6ebe474373838bc6c00e8baaa3f7137"> 617</a></span>&#160; <a class="code" href="classSVF_1_1VarArgPN.html#ad6ebe474373838bc6c00e8baaa3f7137">VarArgPN</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* val, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i) :</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">ValVar</a>(val, i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">VarargNode</a>)</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00623"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#aec7ac87f5fff58b24daea998aaf0cc2a"> 623</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1VarArgPN.html#aec7ac87f5fff58b24daea998aaf0cc2a">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFVar.html#aa72b0f34a0b646751a7b2003d6b9f11e">value</a>-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>() + <span class="stringliteral">&quot;_vararg&quot;</span>;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;};</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;<span class="comment"> * Dummy variable without any LLVM value</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html"> 637</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DummyValVar.html">DummyValVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;{</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;</div><div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#a06c603907dce56bea44f9a4f9da4d6c7"> 643</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyValVar.html#a06c603907dce56bea44f9a4f9da4d6c7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DummyValVar.html">DummyValVar</a> *)</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div><div class="line"><a name="l00647"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#ac09e183185b178f16547bb355ccb01f3"> 647</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyValVar.html#ac09e183185b178f16547bb355ccb01f3">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">SVFVar::DummyValNode</a>;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; }</div><div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#a3fbbb34ccb50e65d6d7aabe7e84e548f"> 651</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyValVar.html#a3fbbb34ccb50e65d6d7aabe7e84e548f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *node)</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">SVFVar::DummyValNode</a>;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; }</div><div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#abd4bbbbe43db12627923729a9d5a5442"> 655</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyValVar.html#abd4bbbbe43db12627923729a9d5a5442">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; {</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">SVFVar::DummyValNode</a>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;</div><div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#a39fb5acde002694e91599a67ff3ae99a"> 662</a></span>&#160; <a class="code" href="classSVF_1_1DummyValVar.html#a39fb5acde002694e91599a67ff3ae99a">DummyValVar</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i) : <a class="code" href="classSVF_1_1ValVar.html">ValVar</a>(nullptr, i, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">DummyValNode</a>)</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValVar.html#a188ddcb95f842245fb97362ff8a06efd"> 668</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1DummyValVar.html#a188ddcb95f842245fb97362ff8a06efd">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;dummyVal&quot;</span>;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;};</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"> * Dummy object variable</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00680"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html"> 680</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;{</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#a543ca59bd39740d1080fe4702bc2fd69"> 686</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyObjVar.html#a543ca59bd39740d1080fe4702bc2fd69">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a> *)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; }</div><div class="line"><a name="l00690"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#a9552d717a869b0ec6678843a56fc8695"> 690</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyObjVar.html#a9552d717a869b0ec6678843a56fc8695">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">SVFVar::DummyObjNode</a>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#aabbc9127565b4c336b28d433297fa37f"> 694</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyObjVar.html#aabbc9127565b4c336b28d433297fa37f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *node)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">SVFVar::DummyObjNode</a>;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div><div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#a6aefb8e6612cb6322e064ac3521fa849"> 698</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DummyObjVar.html#a6aefb8e6612cb6322e064ac3521fa849">classof</a>(<span class="keyword">const</span> GenericPAGNodeTy *node)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">SVFVar::DummyObjNode</a>;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#a3dff74bbf50b6a901239d3fd31e0f36c"> 705</a></span>&#160; <a class="code" href="classSVF_1_1DummyObjVar.html#a3dff74bbf50b6a901239d3fd31e0f36c">DummyObjVar</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> i,<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* m, <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeff">PNODEK</a> ty = <a class="code" href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa1ab625ecaf51446246dcc2944d6559af">DummyObjNode</a>)</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; : <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>(nullptr, i, m, ty)</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjVar.html#aec23bc498cf78ed065565681e14dd2dd"> 711</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1DummyObjVar.html#aec23bc498cf78ed065565681e14dd2dd">getValueName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;dummyObj&quot;</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFVar.html#ada932ef2ae0a3e712174df479c35b0dd">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;};</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_SVFIR_SVFVARIABLE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SVFVar_html_a9376133075b0d44ff09876af933c8618"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a9376133075b0d44ff09876af933c8618">SVF::SVFVar::addInEdge</a></div><div class="ttdeci">void addInEdge(SVFStmt *inEdge)</div><div class="ttdoc">add methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00206">SVFVariables.h:206</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1RetPN_html_a69ee6310b7236bc1230fa63440b0f551"><div class="ttname"><a href="classSVF_1_1RetPN.html#a69ee6310b7236bc1230fa63440b0f551">SVF::RetPN::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00567">SVFVariables.h:567</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1VFG_html"><div class="ttname"><a href="classSVF_1_1VFG.html">SVF::VFG</a></div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00050">VFG.h:50</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1DummyValVar_html_abd4bbbbe43db12627923729a9d5a5442"><div class="ttname"><a href="classSVF_1_1DummyValVar.html#abd4bbbbe43db12627923729a9d5a5442">SVF::DummyValVar::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00655">SVFVariables.h:655</a></div></div>
@@ -105,7 +105,7 @@ $(function() {
105
105
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00182">SVFStatements.h:182</a></div></div>
106
106
  <div class="ttc" id="classSVF_1_1SVFVar_html_ac2db6304ea5526fb446ae882983beeb0"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">SVF::SVFVar::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdoc">Get/has methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00091">SVFVariables.h:91</a></div></div>
107
107
  <div class="ttc" id="classSVF_1_1RetPN_html_ac551c1aaf9ec3cb77814aa4664d61a23"><div class="ttname"><a href="classSVF_1_1RetPN.html#ac551c1aaf9ec3cb77814aa4664d61a23">SVF::RetPN::RetPN</a></div><div class="ttdeci">RetPN(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00574">SVFVariables.h:574</a></div></div>
108
- <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
108
+ <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
109
109
  <div class="ttc" id="classSVF_1_1GepValVar_html_a0aab756122dcce24faf556f0b7057dc1"><div class="ttname"><a href="classSVF_1_1GepValVar.html#a0aab756122dcce24faf556f0b7057dc1">SVF::GepValVar::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00387">SVFVariables.h:387</a></div></div>
110
110
  <div class="ttc" id="classSVF_1_1SVFVar_html_a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa8299ae0d09f1b19411cb07cd79a2bae8">SVF::SVFVar::DummyValNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00070">SVFVariables.h:70</a></div></div>
111
111
  <div class="ttc" id="classSVF_1_1GepValVar_html_a2ee5e9a2e5a92b32fd81fda09b560ad6"><div class="ttname"><a href="classSVF_1_1GepValVar.html#a2ee5e9a2e5a92b32fd81fda09b560ad6">SVF::GepValVar::ls</a></div><div class="ttdeci">LocationSet ls</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00369">SVFVariables.h:369</a></div></div>
@@ -198,14 +198,14 @@ $(function() {
198
198
  <div class="ttc" id="classSVF_1_1DummyObjVar_html_a543ca59bd39740d1080fe4702bc2fd69"><div class="ttname"><a href="classSVF_1_1DummyObjVar.html#a543ca59bd39740d1080fe4702bc2fd69">SVF::DummyObjVar::classof</a></div><div class="ttdeci">static bool classof(const DummyObjVar *)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00686">SVFVariables.h:686</a></div></div>
199
199
  <div class="ttc" id="classSVF_1_1GepObjVar_html_ab6105a2f7bbd9a4e611d96f0bcac0e6c"><div class="ttname"><a href="classSVF_1_1GepObjVar.html#ab6105a2f7bbd9a4e611d96f0bcac0e6c">SVF::GepObjVar::classof</a></div><div class="ttdeci">static bool classof(const ObjVar *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00439">SVFVariables.h:439</a></div></div>
200
200
  <div class="ttc" id="classSVF_1_1GepObjVar_html_aaf2ab86c43e4f33183289f9bdead36c1"><div class="ttname"><a href="classSVF_1_1GepObjVar.html#aaf2ab86c43e4f33183289f9bdead36c1">SVF::GepObjVar::getConstantFieldIdx</a></div><div class="ttdeci">s32_t getConstantFieldIdx() const</div><div class="ttdoc">offset of the mem object </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00467">SVFVariables.h:467</a></div></div>
201
- <div class="ttc" id="classSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00233">SVFType.h:233</a></div></div>
201
+ <div class="ttc" id="classSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00236">SVFType.h:236</a></div></div>
202
202
  <div class="ttc" id="classSVF_1_1SVFVar_html_a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa32d22852d39756992f87bd02def75f66">SVF::SVFVar::ValNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00063">SVFVariables.h:63</a></div></div>
203
203
  <div class="ttc" id="classSVF_1_1SVFVar_html_acf194658d2cbdaf3f26f2af6c325fad7"><div class="ttname"><a href="classSVF_1_1SVFVar.html#acf194658d2cbdaf3f26f2af6c325fad7">SVF::SVFVar::isIsolatedNode</a></div><div class="ttdeci">bool isIsolatedNode() const</div><div class="ttdoc">Whether this is an isoloated node on the SVFIR graph. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8cpp_source.html#l00079">SVFVariables.cpp:79</a></div></div>
204
204
  <div class="ttc" id="classSVF_1_1ValVar_html_a4f01c7de5795f85a5f70bbf4f15c70df"><div class="ttname"><a href="classSVF_1_1ValVar.html#a4f01c7de5795f85a5f70bbf4f15c70df">SVF::ValVar::ValVar</a></div><div class="ttdeci">ValVar(const SVFValue *val, NodeID i, PNODEK ty=ValNode)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00285">SVFVariables.h:285</a></div></div>
205
205
  <div class="ttc" id="classSVF_1_1SVFVar_html_a83626a4beb124b35bcd5af86c9fc62fd"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a83626a4beb124b35bcd5af86c9fc62fd">SVF::SVFVar::SVFVar</a></div><div class="ttdeci">SVFVar(const SVFValue *val, NodeID i, PNODEK k)</div><div class="ttdoc">whether it is a pointer (top-level or address-taken) </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8cpp_source.html#l00041">SVFVariables.cpp:41</a></div></div>
206
206
  <div class="ttc" id="classSVF_1_1SVFVar_html_a9e40eafe55a2c1448b830b56ae72e17f"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a9e40eafe55a2c1448b830b56ae72e17f">SVF::SVFVar::getOutgoingEdgesBegin</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy::iterator getOutgoingEdgesBegin(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Get outgoing SVFStmt iterator. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00187">SVFVariables.h:187</a></div></div>
207
207
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
208
- <div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00049">SVFType.h:49</a></div></div>
208
+ <div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00048">SVFType.h:48</a></div></div>
209
209
  <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>
210
210
  <div class="ttc" id="classSVF_1_1SVFVar_html_a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffa5a13a457f037424f61e74165a9cdcebf">SVF::SVFVar::VarargNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00066">SVFVariables.h:66</a></div></div>
211
211
  <div class="ttc" id="namespaceSVF_html_a8d5e9e5137b04659ded32330e128df34"><div class="ttname"><a href="namespaceSVF.html#a8d5e9e5137b04659ded32330e128df34">SVF::GenericPAGNodeTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt; GenericPAGNodeTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00040">SVFVariables.h:40</a></div></div>