svf-tools 1.0.587 → 1.0.588

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 (536) hide show
  1. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +5 -5
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +7 -7
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +5 -5
  5. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +9 -9
  6. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +18 -18
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +10 -10
  9. package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
  10. package/SVF-doxygen/html/html/BasicTypes_8cpp_source.html +5 -5
  11. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +2 -2
  12. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +5 -5
  13. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +4 -4
  14. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +3 -3
  16. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +12 -12
  17. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +10 -10
  18. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +3 -3
  20. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +6 -6
  21. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +3 -3
  22. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +1 -1
  25. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +25 -25
  26. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
  27. package/SVF-doxygen/html/html/CHG_8cpp.html +3 -3
  28. package/SVF-doxygen/html/html/CHG_8cpp_source.html +12 -12
  29. package/SVF-doxygen/html/html/CHG_8h_source.html +6 -6
  30. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +2 -2
  31. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +26 -26
  32. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +4 -4
  33. package/SVF-doxygen/html/html/CSC_8cpp_source.html +4 -4
  34. package/SVF-doxygen/html/html/CSC_8h_source.html +4 -4
  35. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +6 -6
  36. package/SVF-doxygen/html/html/Casting_8h.html +1 -0
  37. package/SVF-doxygen/html/html/Casting_8h_source.html +42 -42
  38. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +6 -6
  39. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
  40. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  42. package/SVF-doxygen/html/html/ConsG_8h_source.html +4 -4
  43. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +21 -21
  44. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +11 -11
  45. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
  47. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +5 -5
  48. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +27 -27
  49. package/SVF-doxygen/html/html/DCHG_8h_source.html +13 -13
  50. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +12 -12
  51. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  52. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
  53. package/SVF-doxygen/html/html/DDAPass_8h_source.html +4 -4
  54. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +5 -5
  55. package/SVF-doxygen/html/html/DDAStat_8h_source.html +2 -2
  56. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
  57. package/SVF-doxygen/html/html/DPItem_8h_source.html +5 -5
  58. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +7 -7
  59. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +11 -11
  60. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  61. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  62. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +5 -5
  63. package/SVF-doxygen/html/html/ExeState_8h_source.html +4 -4
  64. package/SVF-doxygen/html/html/ExtAPI_8cpp.html +1 -1
  65. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +8 -8
  66. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
  67. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +8 -8
  68. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +6 -6
  69. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +7 -7
  71. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +13 -13
  72. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
  73. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +13 -13
  74. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +7 -7
  75. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
  76. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +5 -5
  77. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
  79. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  80. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +12 -12
  81. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +3 -3
  82. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
  83. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +5 -5
  84. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +10 -10
  86. package/SVF-doxygen/html/html/ICFG_8h_source.html +5 -5
  87. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +12 -12
  88. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +4 -4
  89. package/SVF-doxygen/html/html/IRGraph_8h_source.html +6 -6
  90. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +8 -8
  91. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +28 -28
  92. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +7 -7
  93. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +26 -26
  94. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +18 -18
  95. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  96. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
  97. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +8 -8
  98. package/SVF-doxygen/html/html/LocationSet_8h_source.html +5 -5
  99. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +16 -16
  100. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +10 -10
  101. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +15 -15
  102. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
  103. package/SVF-doxygen/html/html/MHP_8cpp.html +3 -3
  104. package/SVF-doxygen/html/html/MHP_8cpp_source.html +25 -26
  105. package/SVF-doxygen/html/html/MHP_8h_source.html +10 -10
  106. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -4
  107. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +9 -9
  108. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +8 -8
  109. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +21 -21
  110. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +10 -10
  111. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +7 -7
  112. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  113. package/SVF-doxygen/html/html/MTA_8cpp_source.html +14 -14
  114. package/SVF-doxygen/html/html/MTA_8h_source.html +7 -7
  115. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  116. package/SVF-doxygen/html/html/MemPartition_8h_source.html +3 -3
  117. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +20 -20
  118. package/SVF-doxygen/html/html/MemRegion_8h_source.html +8 -8
  119. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +17 -17
  120. package/SVF-doxygen/html/html/MemSSA_8h_source.html +7 -7
  121. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  122. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
  123. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +3 -3
  124. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  125. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  126. package/SVF-doxygen/html/html/PCG_8cpp_source.html +11 -11
  127. package/SVF-doxygen/html/html/PCG_8h_source.html +7 -7
  128. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +4 -4
  129. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +7 -7
  130. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -3
  131. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +3 -3
  132. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  133. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +18 -18
  134. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +19 -19
  135. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +59 -59
  136. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +81 -82
  137. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  138. package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
  139. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +6 -6
  140. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
  141. package/SVF-doxygen/html/html/SCC_8h_source.html +2 -2
  142. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +5 -1
  143. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +85 -85
  144. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +23 -27
  145. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +69 -70
  146. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  147. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +3 -3
  148. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +2 -2
  149. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +4 -4
  150. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +3 -3
  151. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +4 -4
  152. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
  153. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +3 -3
  154. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +4 -4
  155. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +8 -8
  156. package/SVF-doxygen/html/html/SVFG_8h_source.html +4 -4
  157. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +56 -56
  158. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +47 -47
  159. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
  160. package/SVF-doxygen/html/html/SVFIR_8h_source.html +8 -8
  161. package/SVF-doxygen/html/html/SVFLoop_8h_source.html +2 -2
  162. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +3 -3
  163. package/SVF-doxygen/html/html/SVFModule_8h_source.html +13 -13
  164. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +5 -5
  165. package/SVF-doxygen/html/html/SVFStat_8h_source.html +1 -1
  166. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +3 -3
  167. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +10 -10
  168. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +14 -14
  169. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +16 -16
  170. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  171. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +8 -8
  172. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +4 -4
  173. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
  174. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +4 -4
  175. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +14 -14
  176. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +8 -8
  177. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +10 -10
  178. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -2
  179. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
  180. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +6 -6
  181. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +3 -3
  182. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  183. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +3 -3
  184. package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
  185. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +40 -40
  186. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +6 -6
  187. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +16 -16
  188. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +13 -13
  189. package/SVF-doxygen/html/html/TCT_8cpp_source.html +20 -21
  190. package/SVF-doxygen/html/html/TCT_8h_source.html +16 -16
  191. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  192. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +8 -8
  193. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +9 -9
  194. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +6 -6
  195. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +8 -8
  196. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +5 -5
  197. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -14
  198. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +97 -97
  199. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
  200. package/SVF-doxygen/html/html/VFGNode_8h_source.html +7 -7
  201. package/SVF-doxygen/html/html/VFG_8cpp_source.html +10 -10
  202. package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
  203. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
  204. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +13 -13
  205. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +6 -6
  206. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +1 -1
  207. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +9 -9
  208. package/SVF-doxygen/html/html/WPAPass_8h_source.html +6 -6
  209. package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -3
  210. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  211. package/SVF-doxygen/html/html/WorkList_8h_source.html +2 -2
  212. package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
  213. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  214. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  215. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  216. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +2 -2
  221. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +249 -250
  223. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +37 -39
  224. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +216 -217
  225. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +9 -11
  226. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +259 -260
  227. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +15 -17
  228. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +271 -272
  229. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +8 -10
  230. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +14 -14
  231. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +257 -258
  232. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +6 -8
  233. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
  234. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +164 -165
  236. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +31 -33
  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 +2 -2
  241. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +4 -4
  242. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +6 -6
  243. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +191 -192
  244. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +17 -19
  245. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +185 -186
  246. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +9 -11
  247. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  248. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +2 -2
  249. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +189 -190
  250. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +2 -4
  251. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +50 -50
  252. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +8 -8
  253. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +5 -5
  254. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  255. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
  256. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
  257. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +2 -2
  258. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  260. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +36 -36
  261. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  263. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +153 -154
  264. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +17 -19
  265. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
  266. package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
  267. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +4 -4
  268. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
  269. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +255 -256
  271. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +46 -48
  272. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  273. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  274. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +4 -4
  275. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +2 -2
  276. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  277. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  279. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +72 -72
  280. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +7 -7
  281. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +15 -15
  282. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +7 -7
  283. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +27 -27
  284. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  286. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +3 -3
  287. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  288. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  289. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +8 -8
  290. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +12 -12
  291. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  292. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +283 -284
  293. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -5
  294. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +249 -250
  295. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +27 -29
  296. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +274 -275
  297. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +67 -69
  298. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +14 -14
  299. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +35 -36
  300. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  301. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
  303. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
  304. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +3 -3
  305. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
  306. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +5 -5
  307. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  308. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  309. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  312. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +4 -4
  313. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +1 -1
  314. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +4 -4
  315. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +17 -17
  316. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  318. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
  319. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +10 -10
  320. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
  321. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
  322. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  323. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +2 -2
  324. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  325. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  326. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
  327. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  328. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +2 -2
  329. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
  330. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
  331. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  332. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
  333. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +8 -8
  334. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +51 -51
  335. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  336. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  337. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  338. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +9 -9
  339. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +67 -67
  340. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +19 -19
  341. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +50 -51
  342. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +38 -38
  343. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  344. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  345. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +16 -16
  346. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +15 -15
  347. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +44 -44
  348. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +25 -25
  349. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +8 -8
  350. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  351. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +50 -50
  352. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
  353. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -3
  354. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
  355. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +9 -9
  356. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  357. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
  358. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  359. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  360. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +26 -26
  361. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  362. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
  363. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +5 -5
  364. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  365. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
  366. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +3 -3
  367. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +3 -3
  368. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
  369. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +6 -6
  370. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +6 -6
  371. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  372. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +120 -121
  373. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +249 -267
  374. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
  375. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +7 -7
  376. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +11 -11
  377. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  378. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
  379. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +2 -2
  380. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
  381. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  382. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
  383. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +4 -4
  384. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +97 -97
  385. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +12 -12
  386. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +7 -7
  387. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +4 -4
  388. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +4 -4
  389. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +4 -4
  390. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +142 -142
  391. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +3 -3
  392. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +6 -6
  393. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +6 -6
  394. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  395. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
  396. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +7 -7
  397. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +35 -35
  398. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +10 -10
  399. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  400. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +10 -10
  401. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +1 -1
  402. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +228 -229
  403. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +2 -4
  404. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  405. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  406. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  407. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +71 -71
  408. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +29 -29
  409. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +50 -51
  410. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  411. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  412. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
  413. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +21 -21
  414. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +4 -4
  415. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
  416. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
  417. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
  418. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +221 -222
  419. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +16 -18
  420. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  421. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  422. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
  423. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +12 -12
  424. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
  425. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  426. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  427. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
  428. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +324 -325
  429. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +39 -41
  430. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +10 -10
  431. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  432. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
  433. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +2 -2
  434. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +9 -9
  435. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
  436. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
  437. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +1 -1
  438. package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
  439. package/SVF-doxygen/html/html/functions_a.html +5 -8
  440. package/SVF-doxygen/html/html/functions_func_i.html +3 -3
  441. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  442. package/SVF-doxygen/html/html/functions_i.html +2 -2
  443. package/SVF-doxygen/html/html/functions_l.html +8 -8
  444. package/SVF-doxygen/html/html/functions_n.html +4 -4
  445. package/SVF-doxygen/html/html/functions_o.html +8 -8
  446. package/SVF-doxygen/html/html/functions_p.html +14 -16
  447. package/SVF-doxygen/html/html/functions_r.html +2 -4
  448. package/SVF-doxygen/html/html/functions_s.html +7 -7
  449. package/SVF-doxygen/html/html/functions_type.html +0 -3
  450. package/SVF-doxygen/html/html/functions_v.html +6 -6
  451. package/SVF-doxygen/html/html/functions_w.html +11 -11
  452. package/SVF-doxygen/html/html/namespaceSVF.html +156 -174
  453. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +55 -55
  454. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +40 -40
  455. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +46 -46
  456. package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
  457. package/SVF-doxygen/html/html/namespacemembers_type_s.html +0 -3
  458. package/SVF-doxygen/html/html/search/all_1.js +0 -1
  459. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  460. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  461. package/SVF-doxygen/html/html/search/all_12.js +5 -6
  462. package/SVF-doxygen/html/html/search/all_13.js +4 -4
  463. package/SVF-doxygen/html/html/search/all_15.js +3 -3
  464. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  465. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  466. package/SVF-doxygen/html/html/search/all_c.js +5 -5
  467. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  468. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  469. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  470. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  471. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  472. package/SVF-doxygen/html/html/search/typedefs_0.js +0 -1
  473. package/SVF-doxygen/html/html/search/typedefs_10.js +0 -1
  474. package/SVF-doxygen/html/html/search/variables_13.js +2 -2
  475. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  476. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +4 -4
  477. package/SVF-doxygen/html/html/structSVF_1_1Hash.html +3 -3
  478. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  479. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +5 -5
  480. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter.html +1 -1
  481. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter_3_01T_00_018_01_4.html +1 -1
  482. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val.html +5 -5
  483. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html +3 -3
  484. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty.html +2 -2
  485. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl.html +2 -2
  486. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html +2 -2
  487. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html +2 -2
  488. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html +2 -2
  489. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html +2 -2
  490. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html +4 -4
  491. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap.html +2 -2
  492. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html +2 -2
  493. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__simple__type.html +2 -2
  494. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl.html +3 -3
  495. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7.html +3 -3
  496. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl.html +3 -3
  497. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4.html +3 -3
  498. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4.html +3 -3
  499. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4.html +3 -3
  500. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4.html +3 -3
  501. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4.html +3 -3
  502. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4.html +3 -3
  503. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__wrap.html +5 -5
  504. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html +3 -3
  505. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1simplify__type.html +4 -4
  506. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html +6 -6
  507. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
  508. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  509. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  510. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  511. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
  512. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +4 -4
  513. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
  514. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  515. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
  516. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
  517. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  518. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  519. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  520. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_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_01SVF_1_1SymState_01_4.html +1 -1
  526. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  527. package/SVF-doxygen/html/html/svf-ex_8cpp.html +5 -5
  528. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  529. package/include/MemoryModel/PointerAnalysis.h +0 -1
  530. package/include/SVF-FE/BasicTypes.h +7 -1
  531. package/include/Util/BasicTypes.h +1 -22
  532. package/include/Util/Casting.h +1 -0
  533. package/include/Util/SVFBasicTypes.h +0 -5
  534. package/lib/MTA/MHP.cpp +4 -4
  535. package/lib/MTA/TCT.cpp +1 -1
  536. package/package.json +1 -1
@@ -66,52 +66,52 @@ $(function() {
66
66
  <div class="title">Casting.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="Casting_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">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Casting.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 19Sep.,2018</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: yulei</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef INCLUDE_UTIL_CASTING_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define INCLUDE_UTIL_CASTING_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">//===- llvm/Support/Casting.h - Allow flexible, checked, casts --*- C++ -*-===//</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// The LLVM Compiler Infrastructure</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// This file is distributed under the University of Illinois Open Source</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// License. See LICENSE.TXT for details.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</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">// This file defines the llvm::isa&lt;X&gt;(), cast&lt;X&gt;(), dyn_cast&lt;X&gt;(), cast_or_null&lt;X&gt;(),</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// and dyn_cast_or_null&lt;X&gt;() templates.</span></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">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;llvm/Support/Compiler.h&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;llvm/Support/type_traits.h&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html"> 35</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// llvm::isa&lt;x&gt; Support Templates</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// Define a template that can be specialized by smart pointers to reflect the</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">// fact that they are automatically dereferenced, and are not involved with the</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// template selection process... the default implementation is a noop.</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type.html"> 46</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html">simplify_type</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4"> 48</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">SimpleType</a> = From; <span class="comment">// The real type this represents...</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// An accessor to get the real value...</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a8046f044d895a5c9aee85de9705161f9"> 51</a></span>&#160; <span class="keyword">static</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">SimpleType</a> &amp;<a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a8046f044d895a5c9aee85de9705161f9">getSimplifiedValue</a>(From &amp;Val)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> Val;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;};</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html"> 57</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html">simplify_type</a>&lt;const From&gt;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#aadddb18b44c9744dcc639a3de603151d"> 59</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#aadddb18b44c9744dcc639a3de603151d">NonConstSimpleType</a> = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;From&gt;::SimpleType</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#afdc334dc0c584651f9ab538e38cf3aff">SimpleType</a> =</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#afdc334dc0c584651f9ab538e38cf3aff"> 61</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">llvm::add_const_past_pointer&lt;NonConstSimpleType&gt;::type</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ae6f5437cb8355759aadc78fca716bc6a">RetType</a> =</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ae6f5437cb8355759aadc78fca716bc6a"> 63</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">llvm::add_lvalue_reference_if_not_pointer&lt;SimpleType&gt;::type</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ac64f5d9a2ec97aebd7b377319d7f043b"> 65</a></span>&#160; <span class="keyword">static</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ae6f5437cb8355759aadc78fca716bc6a">RetType</a> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ac64f5d9a2ec97aebd7b377319d7f043b">getSimplifiedValue</a>(<span class="keyword">const</span> From&amp; Val)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a8046f044d895a5c9aee85de9705161f9">simplify_type&lt;From&gt;::getSimplifiedValue</a>(const_cast&lt;From&amp;&gt;(Val));</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;};</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">// The core of the implementation of llvm::isa&lt;X&gt; is here; To and From should be</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">// the names of classes. This template can be specialized to customize the</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment">// implementation of llvm::isa&lt;&gt; without rewriting it from scratch.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From, <span class="keyword">typename</span> Enabler = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl.html"> 75</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html">isa_impl</a></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;{</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee"> 77</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">doit</a>(<span class="keyword">const</span> From &amp;Val)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> To::classof(&amp;Val);</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;};</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7.html"> 85</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html">isa_impl</a>&lt;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; To, From, typename <a class="code" href="namespacestd.html">std</a>::enable_if&lt;std::is_base_of&lt;To, From&gt;::value&gt;<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">::type</a>&gt;</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"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7.html#a0da9525f6f39a3eb9ce9275731c2ad64"> 88</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7.html#a0da9525f6f39a3eb9ce9275731c2ad64">doit</a>(<span class="keyword">const</span> From &amp;)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;};</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html"> 94</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html#afbe68352d888c0b15e9f46d4e378bacb"> 96</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html#afbe68352d888c0b15e9f46d4e378bacb">doit</a>(<span class="keyword">const</span> From &amp;Val)</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; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(Val);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;};</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4.html"> 102</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, const From&gt;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;{</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4.html#af9a6a9c7660d5daedf8cd907788ac78d"> 104</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4.html#af9a6a9c7660d5daedf8cd907788ac78d">doit</a>(<span class="keyword">const</span> From &amp;Val)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(Val);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;};</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4.html"> 111</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, const <a class="code" href="namespacestd.html">std</a>::unique_ptr&lt;From&gt;&gt;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;{</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4.html#aff368847551a69d07b06237908594852"> 113</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4.html#aff368847551a69d07b06237908594852">doit</a>(<span class="keyword">const</span> std::unique_ptr&lt;From&gt; &amp;Val)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; assert(Val &amp;&amp; <span class="stringliteral">&quot;llvm::isa&lt;&gt; used on a null pointer&quot;</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html#afbe68352d888c0b15e9f46d4e378bacb">isa_impl_cl&lt;To, From&gt;::doit</a>(*Val);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;};</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4.html"> 120</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, From*&gt;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;{</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4.html#a8add67bd107583b7c34fce53a748bcb0"> 122</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4.html#a8add67bd107583b7c34fce53a748bcb0">doit</a>(<span class="keyword">const</span> From *Val)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; assert(Val &amp;&amp; <span class="stringliteral">&quot;llvm::isa&lt;&gt; used on a null pointer&quot;</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(*Val);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;};</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4.html"> 129</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, From*<span class="keyword">const</span>&gt;</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"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4.html#ac95b00b5d96e6b8457ecade4dbda3de3"> 131</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4.html#ac95b00b5d96e6b8457ecade4dbda3de3">doit</a>(<span class="keyword">const</span> From *Val)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; assert(Val &amp;&amp; <span class="stringliteral">&quot;llvm::isa&lt;&gt; used on a null pointer&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(*Val);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;};</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4.html"> 138</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, const From*&gt;</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"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4.html#a761b612c6ee476a28aabfbbc6b2da7ab"> 140</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4.html#a761b612c6ee476a28aabfbbc6b2da7ab">doit</a>(<span class="keyword">const</span> From *Val)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; assert(Val &amp;&amp; <span class="stringliteral">&quot;llvm::isa&lt;&gt; used on a null pointer&quot;</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(*Val);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;};</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4.html"> 147</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, const From*<span class="keyword">const</span>&gt;</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"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4.html#af73d1d0d7eb6f51090b4df47b497483a"> 149</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4.html#af73d1d0d7eb6f51090b4df47b497483a">doit</a>(<span class="keyword">const</span> From *Val)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; assert(Val &amp;&amp; <span class="stringliteral">&quot;llvm::isa&lt;&gt; used on a null pointer&quot;</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(*Val);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;};</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From, <span class="keyword">typename</span> SimpleFrom&gt;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html"> 157</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html">isa_impl_wrap</a></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// When From != SimplifiedType, we can simplify the type some more by using</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// the simplify_type template.</span></div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html#aa0f166d8bdcd1e7b954cc29c19a40b04"> 161</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html#aa0f166d8bdcd1e7b954cc29c19a40b04">doit</a>(<span class="keyword">const</span> From &amp;Val)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html">isa_impl_wrap</a>&lt;To, SimpleFrom,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;SimpleFrom&gt;::SimpleType</a>&gt;::doit(</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html">simplify_type&lt;const From&gt;::getSimplifiedValue</a>(Val));</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;};</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> FromTy&gt;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html"> 170</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html">isa_impl_wrap</a>&lt;To, FromTy, FromTy&gt;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">// When From == SimpleType, we are as simple as we are going to get.</span></div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#a414dc089b04305b8580dede7a6337404"> 173</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#a414dc089b04305b8580dede7a6337404">doit</a>(<span class="keyword">const</span> FromTy &amp;Val)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html#afbe68352d888c0b15e9f46d4e378bacb">isa_impl_cl&lt;To,FromTy&gt;::doit</a>(Val);</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="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment">// llvm::isa&lt;X&gt; - Return true if the parameter to the template is an instance of the</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment">// template type argument. Used like this:</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">// if (llvm::isa&lt;Type&gt;(myVal)) { ... }</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737"> 184</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt; LLVM_NODISCARD <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">isa</a>(<span class="keyword">const</span> Y &amp;Val)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;{</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html">isa_impl_wrap</a>&lt;X, <span class="keyword">const</span> Y,</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;const Y&gt;::SimpleType</a>&gt;::doit(Val);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment">// cast&lt;x&gt; Support Templates</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty.html"> 194</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html">cast_retty</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">// Calculate what type the &#39;cast&#39; function should return, based on a requested</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment">// type of To and a source type of From.</span></div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html"> 198</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;{</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html#a5f8f6d651931eba7e0fa14c26a691a04"> 200</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html#a5f8f6d651931eba7e0fa14c26a691a04">ret_type</a> = To &amp;; <span class="comment">// Normal case, return Ty&amp;</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;};</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html"> 202</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a>&lt;To, const From&gt;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;{</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html#ad0bc349135b60cc51fd040b615a979f7"> 204</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html#ad0bc349135b60cc51fd040b615a979f7">ret_type</a> = <span class="keyword">const</span> To &amp;; <span class="comment">// Normal case, return Ty&amp;</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"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html"> 207</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a>&lt;To, From*&gt;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;{</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html#a86c02dc15b65d0c052ea4447b3fb6333"> 209</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html#a86c02dc15b65d0c052ea4447b3fb6333">ret_type</a> = To *; <span class="comment">// Pointer arg case, return Ty*</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;};</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html"> 212</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a>&lt;To, const From*&gt;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;{</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html#a98a60de95a331a34dcbad6da9961a9b7"> 214</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html#a98a60de95a331a34dcbad6da9961a9b7">ret_type</a> = <span class="keyword">const</span> To *; <span class="comment">// Constant pointer arg case, return const Ty*</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;};</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html"> 217</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a>&lt;To, const From*<span class="keyword">const</span>&gt;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;{</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html#add8668ca96bbf0808c146cc81c62267c"> 219</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html#add8668ca96bbf0808c146cc81c62267c">ret_type</a> = <span class="keyword">const</span> To *; <span class="comment">// Constant pointer arg case, return const Ty*</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;};</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html"> 223</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a>&lt;To, <a class="code" href="namespacestd.html">std</a>::unique_ptr&lt;From&gt;&gt;</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="keyword">private</span>:</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a9d08abc346f3b77c487eba144f3cbd8d"> 226</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a9d08abc346f3b77c487eba144f3cbd8d">PointerType</a> = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html#a5f8f6d651931eba7e0fa14c26a691a04">cast_retty_impl&lt;To, From *&gt;::ret_type</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a052f7cd3a81e368060f132bf0268fa68"> 227</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a052f7cd3a81e368060f132bf0268fa68">ResultType</a> = <span class="keyword">typename</span> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">std::remove_pointer&lt;PointerType&gt;::type</a>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a3bf80190e39c339d4e3ec703789ae845"> 230</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a3bf80190e39c339d4e3ec703789ae845">ret_type</a> = std::unique_ptr&lt;ResultType&gt;;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;};</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From, <span class="keyword">class</span> SimpleFrom&gt;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html"> 234</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html">cast_retty_wrap</a></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="comment">// When the simplified type and the from type are not the same, use the type</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// simplifier to reduce the type, then reuse cast_retty_impl to get the</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// resultant type.</span></div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html#af3d80ab43e47626f32c91a6c4454e82e"> 239</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html#af3d80ab43e47626f32c91a6c4454e82e">ret_type</a> = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, SimpleFrom&gt;::ret_type</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;};</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> FromTy&gt;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html"> 243</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html">cast_retty_wrap</a>&lt;To, FromTy, FromTy&gt;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;{</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="comment">// When the simplified type is equal to the from type, use it directly.</span></div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#ad989c130f2b6cd5a0f1ba0c7abd62b9a"> 246</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#ad989c130f2b6cd5a0f1ba0c7abd62b9a">ret_type</a> = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html#a5f8f6d651931eba7e0fa14c26a691a04">cast_retty_impl&lt;To,FromTy&gt;::ret_type</a>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;};</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html">cast_retty</a></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; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#ad989c130f2b6cd5a0f1ba0c7abd62b9a">ret_type</a> = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html">cast_retty_wrap</a>&lt;</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b"> 253</a></span>&#160; To, From, <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;From&gt;::SimpleType</a>&gt;<a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">::ret_type</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;};</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment">// Ensure the non-simple values are converted using the simplify_type template</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">// that may be specialized by smart pointers...</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html"> 259</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From, <span class="keyword">class</span> SimpleFrom&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;{</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// This is not a simple type, use the template to simplify it...</span></div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html#a42987ff69d76fef88044fe0b19743239"> 262</a></span>&#160; <span class="keyword">static</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, From&gt;::ret_type</a> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html#a42987ff69d76fef88044fe0b19743239">doit</a>(From &amp;Val)</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> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;To, SimpleFrom,</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;SimpleFrom&gt;::SimpleType</a>&gt;::doit(</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html">simplify_type&lt;From&gt;::getSimplifiedValue</a>(Val));</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;};</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html"> 270</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> FromTy&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;To,FromTy,FromTy&gt;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;{</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="comment">// This _is_ a simple type, just cast it.</span></div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html#a2dd56ef15d86f61c7fef34dc15173e4a"> 273</a></span>&#160; <span class="keyword">static</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, FromTy&gt;::ret_type</a> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html#a2dd56ef15d86f61c7fef34dc15173e4a">doit</a>(<span class="keyword">const</span> FromTy &amp;Val)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, FromTy&gt;::ret_type</a> Res2</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; = (<span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, FromTy&gt;::ret_type</a>)const_cast&lt;FromTy&amp;&gt;(Val);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> Res2;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;};</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1is__simple__type.html"> 281</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1is__simple__type.html">is_simple_type</a></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;{</div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1is__simple__type.html#a700d43a1b318fb30fa9472da323cb34f"> 283</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value =</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; std::is_same&lt;X, typename simplify_type&lt;X&gt;::SimpleType&gt;::value;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;};</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment">// cast&lt;X&gt; - Return the argument parameter cast to the specified type. This</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment">// casting operator asserts that the type is correct, so it does not return null</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment">// on failure. It does not allow a null argument (use cast_or_null for that).</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment">// It is typically used like this:</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment">// cast&lt;Instruction&gt;(myVal)-&gt;getParent()</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="keyword">inline</span> <span class="keyword">typename</span> std::enable_if&lt;!is_simple_type&lt;Y&gt;::value,</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, const Y&gt;::ret_type</a>&gt;<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">::type</a></div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c"> 297</a></span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>(<span class="keyword">const</span> Y &amp;Val)</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; assert(llvm::isa&lt;X&gt;(Val) &amp;&amp; <span class="stringliteral">&quot;cast&lt;Ty&gt;() argument of incompatible type!&quot;</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; X, <span class="keyword">const</span> Y, <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;const Y&gt;::SimpleType</a>&gt;::doit(Val);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;}</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a406dd9baf2ce66235d482fd6c6121b2c"> 305</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, Y&gt;::ret_type</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>(Y &amp;Val)</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; assert(llvm::isa&lt;X&gt;(Val) &amp;&amp; <span class="stringliteral">&quot;cast&lt;Ty&gt;() argument of incompatible type!&quot;</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;X, Y,</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;Y&gt;::SimpleType</a>&gt;::doit(Val);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#acc2419a55c0427571f11ad14db2fe481"> 313</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, Y *&gt;::ret_type</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>(Y *Val)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;{</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; assert(llvm::isa&lt;X&gt;(Val) &amp;&amp; <span class="stringliteral">&quot;cast&lt;Ty&gt;() argument of incompatible type!&quot;</span>);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;X, Y*,</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;Y*&gt;::SimpleType</a>&gt;::doit(Val);</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;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html">cast_retty&lt;X, std::unique_ptr&lt;Y&gt;</a>&gt;::ret_type</div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#af3ca049b4ce83c874e231f5e13bf36a8"> 322</a></span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>(std::unique_ptr&lt;Y&gt; &amp;&amp;Val)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;{</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; assert(llvm::isa&lt;X&gt;(Val.get()) &amp;&amp; <span class="stringliteral">&quot;cast&lt;Ty&gt;() argument of incompatible type!&quot;</span>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">using</span> ret_type = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html">cast_retty&lt;X, std::unique_ptr&lt;Y&gt;</a>&gt;::ret_type;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">return</span> ret_type(</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;X, Y *, <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;Y *&gt;::SimpleType</a>&gt;::doit(</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; Val.release()));</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;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment">// dyn_cast&lt;X&gt; - Return the argument parameter cast to the specified type. This</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment">// casting operator returns null if the argument is of the wrong type, so it can</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment">// be used to test for a type as well as cast if successful. This should be</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment">// used in the context of an if statement like this:</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment">// if (const Instruction *I = dyn_cast&lt;Instruction&gt;(myVal)) { ... }</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;LLVM_NODISCARD <span class="keyword">inline</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="keyword">typename</span> std::enable_if&lt;!is_simple_type&lt;Y&gt;::value,</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, const Y&gt;::ret_type</a>&gt;<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">::type</a></div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70"> 343</a></span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">dyn_cast</a>(<span class="keyword">const</span> Y &amp;Val)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;{</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">return</span> llvm::isa&lt;X&gt;(Val) ? llvm::cast&lt;X&gt;(Val) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;}</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a52d852ba8fa569e858565b3bba403656"> 349</a></span>&#160;LLVM_NODISCARD <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, Y&gt;::ret_type</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">dyn_cast</a>(Y &amp;Val)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;{</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span> llvm::isa&lt;X&gt;(Val) ? llvm::cast&lt;X&gt;(Val) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;}</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a105c5c5e97d56533fb2b3ba7a0bc59f3"> 355</a></span>&#160;LLVM_NODISCARD <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, Y *&gt;::ret_type</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">dyn_cast</a>(Y *Val)</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;{</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> llvm::isa&lt;X&gt;(Val) ? llvm::cast&lt;X&gt;(Val) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;}</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;} <span class="comment">// End namespace SVFUtil</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_UTIL_CASTING_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4_html_af9a6a9c7660d5daedf8cd907788ac78d"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4.html#af9a6a9c7660d5daedf8cd907788ac78d">SVF::SVFUtil::isa_impl_cl&lt; To, const From &gt;::doit</a></div><div class="ttdeci">static bool doit(const From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00104">Casting.h:104</a></div></div>
70
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl.html">SVF::SVFUtil::isa_impl</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00075">Casting.h:75</a></div></div>
71
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__wrap_html_af3d80ab43e47626f32c91a6c4454e82e"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html#af3d80ab43e47626f32c91a6c4454e82e">SVF::SVFUtil::cast_retty_wrap::ret_type</a></div><div class="ttdeci">typename cast_retty&lt; To, SimpleFrom &gt;::ret_type ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00239">Casting.h:239</a></div></div>
72
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4_html_a414dc089b04305b8580dede7a6337404"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#a414dc089b04305b8580dede7a6337404">SVF::SVFUtil::isa_impl_wrap&lt; To, FromTy, FromTy &gt;::doit</a></div><div class="ttdeci">static bool doit(const FromTy &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00173">Casting.h:173</a></div></div>
73
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4_html_add8668ca96bbf0808c146cc81c62267c"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html#add8668ca96bbf0808c146cc81c62267c">SVF::SVFUtil::cast_retty_impl&lt; To, const From *const &gt;::ret_type</a></div><div class="ttdeci">const To * ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00219">Casting.h:219</a></div></div>
74
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl_html_a150c6a99c45befa44a4cd2bcc8d06eee"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">SVF::SVFUtil::isa_impl::doit</a></div><div class="ttdeci">static bool doit(const From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00077">Casting.h:77</a></div></div>
75
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4_html_a761b612c6ee476a28aabfbbc6b2da7ab"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4.html#a761b612c6ee476a28aabfbbc6b2da7ab">SVF::SVFUtil::isa_impl_cl&lt; To, const From * &gt;::doit</a></div><div class="ttdeci">static bool doit(const From *Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00140">Casting.h:140</a></div></div>
76
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4_html_ad989c130f2b6cd5a0f1ba0c7abd62b9a"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#ad989c130f2b6cd5a0f1ba0c7abd62b9a">SVF::SVFUtil::cast_retty_wrap&lt; To, FromTy, FromTy &gt;::ret_type</a></div><div class="ttdeci">typename cast_retty_impl&lt; To, FromTy &gt;::ret_type ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00246">Casting.h:246</a></div></div>
77
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty_html_aea91708cabb8176b031f1c1fdb89a15b"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">SVF::SVFUtil::cast_retty::ret_type</a></div><div class="ttdeci">typename cast_retty_wrap&lt; To, From, typename simplify_type&lt; From &gt;::SimpleType &gt;::ret_type ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00253">Casting.h:253</a></div></div>
78
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__wrap_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html">SVF::SVFUtil::isa_impl_wrap</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00157">Casting.h:157</a></div></div>
69
+ <a href="Casting_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">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Casting.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 19Sep.,2018</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: yulei</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef INCLUDE_UTIL_CASTING_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define INCLUDE_UTIL_CASTING_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">//===- llvm/Support/Casting.h - Allow flexible, checked, casts --*- C++ -*-===//</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// The LLVM Compiler Infrastructure</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// This file is distributed under the University of Illinois Open Source</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// License. See LICENSE.TXT for details.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</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">// This file defines the llvm::isa&lt;X&gt;(), cast&lt;X&gt;(), dyn_cast&lt;X&gt;(), cast_or_null&lt;X&gt;(),</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// and dyn_cast_or_null&lt;X&gt;() templates.</span></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">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;llvm/Support/Compiler.h&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;llvm/Support/type_traits.h&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &lt;llvm/IR/BasicBlock.h&gt;</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="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html"> 36</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// llvm::isa&lt;x&gt; Support Templates</span></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;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">// Define a template that can be specialized by smart pointers to reflect the</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// fact that they are automatically dereferenced, and are not involved with the</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">// template selection process... the default implementation is a noop.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type.html"> 47</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html">simplify_type</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4"> 49</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">SimpleType</a> = From; <span class="comment">// The real type this represents...</span></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="comment">// An accessor to get the real value...</span></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a8046f044d895a5c9aee85de9705161f9"> 52</a></span>&#160; <span class="keyword">static</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">SimpleType</a> &amp;<a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a8046f044d895a5c9aee85de9705161f9">getSimplifiedValue</a>(From &amp;Val)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> Val;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;};</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html"> 58</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html">simplify_type</a>&lt;const From&gt;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#aadddb18b44c9744dcc639a3de603151d"> 60</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#aadddb18b44c9744dcc639a3de603151d">NonConstSimpleType</a> = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;From&gt;::SimpleType</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#afdc334dc0c584651f9ab538e38cf3aff">SimpleType</a> =</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#afdc334dc0c584651f9ab538e38cf3aff"> 62</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">llvm::add_const_past_pointer&lt;NonConstSimpleType&gt;::type</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ae6f5437cb8355759aadc78fca716bc6a">RetType</a> =</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ae6f5437cb8355759aadc78fca716bc6a"> 64</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">llvm::add_lvalue_reference_if_not_pointer&lt;SimpleType&gt;::type</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ac64f5d9a2ec97aebd7b377319d7f043b"> 66</a></span>&#160; <span class="keyword">static</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ae6f5437cb8355759aadc78fca716bc6a">RetType</a> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ac64f5d9a2ec97aebd7b377319d7f043b">getSimplifiedValue</a>(<span class="keyword">const</span> From&amp; Val)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a8046f044d895a5c9aee85de9705161f9">simplify_type&lt;From&gt;::getSimplifiedValue</a>(const_cast&lt;From&amp;&gt;(Val));</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;};</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">// The core of the implementation of llvm::isa&lt;X&gt; is here; To and From should be</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment">// the names of classes. This template can be specialized to customize the</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">// implementation of llvm::isa&lt;&gt; without rewriting it from scratch.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From, <span class="keyword">typename</span> Enabler = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl.html"> 76</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html">isa_impl</a></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee"> 78</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">doit</a>(<span class="keyword">const</span> From &amp;Val)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> To::classof(&amp;Val);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;};</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7.html"> 86</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html">isa_impl</a>&lt;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; To, From, typename <a class="code" href="namespacestd.html">std</a>::enable_if&lt;std::is_base_of&lt;To, From&gt;::value&gt;<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">::type</a>&gt;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7.html#a0da9525f6f39a3eb9ce9275731c2ad64"> 89</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7.html#a0da9525f6f39a3eb9ce9275731c2ad64">doit</a>(<span class="keyword">const</span> From &amp;)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;};</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html"> 95</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html#afbe68352d888c0b15e9f46d4e378bacb"> 97</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html#afbe68352d888c0b15e9f46d4e378bacb">doit</a>(<span class="keyword">const</span> From &amp;Val)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(Val);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;};</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4.html"> 103</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, const From&gt;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;{</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4.html#af9a6a9c7660d5daedf8cd907788ac78d"> 105</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4.html#af9a6a9c7660d5daedf8cd907788ac78d">doit</a>(<span class="keyword">const</span> From &amp;Val)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(Val);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;};</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4.html"> 112</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, const <a class="code" href="namespacestd.html">std</a>::unique_ptr&lt;From&gt;&gt;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;{</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4.html#aff368847551a69d07b06237908594852"> 114</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4.html#aff368847551a69d07b06237908594852">doit</a>(<span class="keyword">const</span> std::unique_ptr&lt;From&gt; &amp;Val)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; assert(Val &amp;&amp; <span class="stringliteral">&quot;llvm::isa&lt;&gt; used on a null pointer&quot;</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html#afbe68352d888c0b15e9f46d4e378bacb">isa_impl_cl&lt;To, From&gt;::doit</a>(*Val);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;};</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4.html"> 121</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, From*&gt;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;{</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4.html#a8add67bd107583b7c34fce53a748bcb0"> 123</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4.html#a8add67bd107583b7c34fce53a748bcb0">doit</a>(<span class="keyword">const</span> From *Val)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; assert(Val &amp;&amp; <span class="stringliteral">&quot;llvm::isa&lt;&gt; used on a null pointer&quot;</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(*Val);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;};</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4.html"> 130</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, From*<span class="keyword">const</span>&gt;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;{</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4.html#ac95b00b5d96e6b8457ecade4dbda3de3"> 132</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4.html#ac95b00b5d96e6b8457ecade4dbda3de3">doit</a>(<span class="keyword">const</span> From *Val)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; assert(Val &amp;&amp; <span class="stringliteral">&quot;llvm::isa&lt;&gt; used on a null pointer&quot;</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(*Val);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;};</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4.html"> 139</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, const From*&gt;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;{</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4.html#a761b612c6ee476a28aabfbbc6b2da7ab"> 141</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4.html#a761b612c6ee476a28aabfbbc6b2da7ab">doit</a>(<span class="keyword">const</span> From *Val)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; assert(Val &amp;&amp; <span class="stringliteral">&quot;llvm::isa&lt;&gt; used on a null pointer&quot;</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(*Val);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;};</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4.html"> 148</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">isa_impl_cl</a>&lt;To, const From*<span class="keyword">const</span>&gt;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;{</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4.html#af73d1d0d7eb6f51090b4df47b497483a"> 150</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4.html#af73d1d0d7eb6f51090b4df47b497483a">doit</a>(<span class="keyword">const</span> From *Val)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; assert(Val &amp;&amp; <span class="stringliteral">&quot;llvm::isa&lt;&gt; used on a null pointer&quot;</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">isa_impl&lt;To, From&gt;::doit</a>(*Val);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;};</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> From, <span class="keyword">typename</span> SimpleFrom&gt;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html"> 158</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html">isa_impl_wrap</a></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// When From != SimplifiedType, we can simplify the type some more by using</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="comment">// the simplify_type template.</span></div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html#aa0f166d8bdcd1e7b954cc29c19a40b04"> 162</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html#aa0f166d8bdcd1e7b954cc29c19a40b04">doit</a>(<span class="keyword">const</span> From &amp;Val)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html">isa_impl_wrap</a>&lt;To, SimpleFrom,</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;SimpleFrom&gt;::SimpleType</a>&gt;::doit(</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html">simplify_type&lt;const From&gt;::getSimplifiedValue</a>(Val));</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;};</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> To, <span class="keyword">typename</span> FromTy&gt;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html"> 171</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html">isa_impl_wrap</a>&lt;To, FromTy, FromTy&gt;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="comment">// When From == SimpleType, we are as simple as we are going to get.</span></div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#a414dc089b04305b8580dede7a6337404"> 174</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#a414dc089b04305b8580dede7a6337404">doit</a>(<span class="keyword">const</span> FromTy &amp;Val)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html#afbe68352d888c0b15e9f46d4e378bacb">isa_impl_cl&lt;To,FromTy&gt;::doit</a>(Val);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;};</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment">// llvm::isa&lt;X&gt; - Return true if the parameter to the template is an instance of the</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">// template type argument. Used like this:</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment">// if (llvm::isa&lt;Type&gt;(myVal)) { ... }</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737"> 185</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt; LLVM_NODISCARD <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">isa</a>(<span class="keyword">const</span> Y &amp;Val)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;{</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html">isa_impl_wrap</a>&lt;X, <span class="keyword">const</span> Y,</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;const Y&gt;::SimpleType</a>&gt;::doit(Val);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment">// cast&lt;x&gt; Support Templates</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty.html"> 195</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html">cast_retty</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment">// Calculate what type the &#39;cast&#39; function should return, based on a requested</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment">// type of To and a source type of From.</span></div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html"> 199</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;{</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html#a5f8f6d651931eba7e0fa14c26a691a04"> 201</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html#a5f8f6d651931eba7e0fa14c26a691a04">ret_type</a> = To &amp;; <span class="comment">// Normal case, return Ty&amp;</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;};</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html"> 203</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a>&lt;To, const From&gt;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;{</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html#ad0bc349135b60cc51fd040b615a979f7"> 205</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html#ad0bc349135b60cc51fd040b615a979f7">ret_type</a> = <span class="keyword">const</span> To &amp;; <span class="comment">// Normal case, return Ty&amp;</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;};</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"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html"> 208</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a>&lt;To, From*&gt;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;{</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html#a86c02dc15b65d0c052ea4447b3fb6333"> 210</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html#a86c02dc15b65d0c052ea4447b3fb6333">ret_type</a> = To *; <span class="comment">// Pointer arg case, return Ty*</span></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="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html"> 213</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a>&lt;To, const From*&gt;</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"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html#a98a60de95a331a34dcbad6da9961a9b7"> 215</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html#a98a60de95a331a34dcbad6da9961a9b7">ret_type</a> = <span class="keyword">const</span> To *; <span class="comment">// Constant pointer arg case, return const Ty*</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;};</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html"> 218</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a>&lt;To, const From*<span class="keyword">const</span>&gt;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;{</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html#add8668ca96bbf0808c146cc81c62267c"> 220</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html#add8668ca96bbf0808c146cc81c62267c">ret_type</a> = <span class="keyword">const</span> To *; <span class="comment">// Constant pointer arg case, return const Ty*</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;};</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html"> 224</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">cast_retty_impl</a>&lt;To, <a class="code" href="namespacestd.html">std</a>::unique_ptr&lt;From&gt;&gt;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a9d08abc346f3b77c487eba144f3cbd8d"> 227</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a9d08abc346f3b77c487eba144f3cbd8d">PointerType</a> = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html#a5f8f6d651931eba7e0fa14c26a691a04">cast_retty_impl&lt;To, From *&gt;::ret_type</a>;</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a052f7cd3a81e368060f132bf0268fa68"> 228</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a052f7cd3a81e368060f132bf0268fa68">ResultType</a> = <span class="keyword">typename</span> <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">std::remove_pointer&lt;PointerType&gt;::type</a>;</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a3bf80190e39c339d4e3ec703789ae845"> 231</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a3bf80190e39c339d4e3ec703789ae845">ret_type</a> = std::unique_ptr&lt;ResultType&gt;;</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">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From, <span class="keyword">class</span> SimpleFrom&gt;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html"> 235</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html">cast_retty_wrap</a></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// When the simplified type and the from type are not the same, use the type</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// simplifier to reduce the type, then reuse cast_retty_impl to get the</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// resultant type.</span></div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html#af3d80ab43e47626f32c91a6c4454e82e"> 240</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html#af3d80ab43e47626f32c91a6c4454e82e">ret_type</a> = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, SimpleFrom&gt;::ret_type</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;};</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> FromTy&gt;</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html"> 244</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html">cast_retty_wrap</a>&lt;To, FromTy, FromTy&gt;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// When the simplified type is equal to the from type, use it directly.</span></div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#ad989c130f2b6cd5a0f1ba0c7abd62b9a"> 247</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#ad989c130f2b6cd5a0f1ba0c7abd62b9a">ret_type</a> = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html#a5f8f6d651931eba7e0fa14c26a691a04">cast_retty_impl&lt;To,FromTy&gt;::ret_type</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;};</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From&gt;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html">cast_retty</a></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="keyword">using</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#ad989c130f2b6cd5a0f1ba0c7abd62b9a">ret_type</a> = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html">cast_retty_wrap</a>&lt;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b"> 254</a></span>&#160; To, From, <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;From&gt;::SimpleType</a>&gt;<a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">::ret_type</a>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;};</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">// Ensure the non-simple values are converted using the simplify_type template</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment">// that may be specialized by smart pointers...</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html"> 260</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> From, <span class="keyword">class</span> SimpleFrom&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a></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"> 262</span>&#160; <span class="comment">// This is not a simple type, use the template to simplify it...</span></div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html#a42987ff69d76fef88044fe0b19743239"> 263</a></span>&#160; <span class="keyword">static</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, From&gt;::ret_type</a> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html#a42987ff69d76fef88044fe0b19743239">doit</a>(From &amp;Val)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;To, SimpleFrom,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;SimpleFrom&gt;::SimpleType</a>&gt;::doit(</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html">simplify_type&lt;From&gt;::getSimplifiedValue</a>(Val));</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;};</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html"> 271</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> To, <span class="keyword">class</span> FromTy&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;To,FromTy,FromTy&gt;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// This _is_ a simple type, just cast it.</span></div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html#a2dd56ef15d86f61c7fef34dc15173e4a"> 274</a></span>&#160; <span class="keyword">static</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, FromTy&gt;::ret_type</a> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html#a2dd56ef15d86f61c7fef34dc15173e4a">doit</a>(<span class="keyword">const</span> FromTy &amp;Val)</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="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, FromTy&gt;::ret_type</a> Res2</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; = (<span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, FromTy&gt;::ret_type</a>)const_cast&lt;FromTy&amp;&gt;(Val);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> Res2;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;};</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1is__simple__type.html"> 282</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X&gt; <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1is__simple__type.html">is_simple_type</a></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;{</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1is__simple__type.html#a700d43a1b318fb30fa9472da323cb34f"> 284</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value =</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; std::is_same&lt;X, typename simplify_type&lt;X&gt;::SimpleType&gt;::value;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;};</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;<span class="comment">// cast&lt;X&gt; - Return the argument parameter cast to the specified type. This</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment">// casting operator asserts that the type is correct, so it does not return null</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment">// on failure. It does not allow a null argument (use cast_or_null for that).</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment">// It is typically used like this:</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment">// cast&lt;Instruction&gt;(myVal)-&gt;getParent()</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="keyword">inline</span> <span class="keyword">typename</span> std::enable_if&lt;!is_simple_type&lt;Y&gt;::value,</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, const Y&gt;::ret_type</a>&gt;<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">::type</a></div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c"> 298</a></span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>(<span class="keyword">const</span> Y &amp;Val)</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; assert(llvm::isa&lt;X&gt;(Val) &amp;&amp; <span class="stringliteral">&quot;cast&lt;Ty&gt;() argument of incompatible type!&quot;</span>);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; X, <span class="keyword">const</span> Y, <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;const Y&gt;::SimpleType</a>&gt;::doit(Val);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;}</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a406dd9baf2ce66235d482fd6c6121b2c"> 306</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, Y&gt;::ret_type</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>(Y &amp;Val)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;{</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; assert(llvm::isa&lt;X&gt;(Val) &amp;&amp; <span class="stringliteral">&quot;cast&lt;Ty&gt;() argument of incompatible type!&quot;</span>);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;X, Y,</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;Y&gt;::SimpleType</a>&gt;::doit(Val);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;}</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#acc2419a55c0427571f11ad14db2fe481"> 314</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, Y *&gt;::ret_type</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>(Y *Val)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;{</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; assert(llvm::isa&lt;X&gt;(Val) &amp;&amp; <span class="stringliteral">&quot;cast&lt;Ty&gt;() argument of incompatible type!&quot;</span>);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;X, Y*,</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;Y*&gt;::SimpleType</a>&gt;::doit(Val);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;}</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"> 321</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html">cast_retty&lt;X, std::unique_ptr&lt;Y&gt;</a>&gt;::ret_type</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#af3ca049b4ce83c874e231f5e13bf36a8"> 323</a></span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>(std::unique_ptr&lt;Y&gt; &amp;&amp;Val)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; assert(llvm::isa&lt;X&gt;(Val.get()) &amp;&amp; <span class="stringliteral">&quot;cast&lt;Ty&gt;() argument of incompatible type!&quot;</span>);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keyword">using</span> ret_type = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html">cast_retty&lt;X, std::unique_ptr&lt;Y&gt;</a>&gt;::ret_type;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> ret_type(</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">cast_convert_val</a>&lt;X, Y *, <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">simplify_type&lt;Y *&gt;::SimpleType</a>&gt;::doit(</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; Val.release()));</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;}</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment">// dyn_cast&lt;X&gt; - Return the argument parameter cast to the specified type. This</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment">// casting operator returns null if the argument is of the wrong type, so it can</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment">// be used to test for a type as well as cast if successful. This should be</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment">// used in the context of an if statement like this:</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment">// if (const Instruction *I = dyn_cast&lt;Instruction&gt;(myVal)) { ... }</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;LLVM_NODISCARD <span class="keyword">inline</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="keyword">typename</span> std::enable_if&lt;!is_simple_type&lt;Y&gt;::value,</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, const Y&gt;::ret_type</a>&gt;<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">::type</a></div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70"> 344</a></span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">dyn_cast</a>(<span class="keyword">const</span> Y &amp;Val)</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;{</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">return</span> llvm::isa&lt;X&gt;(Val) ? llvm::cast&lt;X&gt;(Val) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;}</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a52d852ba8fa569e858565b3bba403656"> 350</a></span>&#160;LLVM_NODISCARD <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, Y&gt;::ret_type</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">dyn_cast</a>(Y &amp;Val)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;{</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> llvm::isa&lt;X&gt;(Val) ? llvm::cast&lt;X&gt;(Val) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;}</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> X, <span class="keyword">class</span> Y&gt;</div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a105c5c5e97d56533fb2b3ba7a0bc59f3"> 356</a></span>&#160;LLVM_NODISCARD <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;X, Y *&gt;::ret_type</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">dyn_cast</a>(Y *Val)</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; <span class="keywordflow">return</span> llvm::isa&lt;X&gt;(Val) ? llvm::cast&lt;X&gt;(Val) : <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;} <span class="comment">// End namespace SVFUtil</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_UTIL_CASTING_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4_html_af9a6a9c7660d5daedf8cd907788ac78d"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_4.html#af9a6a9c7660d5daedf8cd907788ac78d">SVF::SVFUtil::isa_impl_cl&lt; To, const From &gt;::doit</a></div><div class="ttdeci">static bool doit(const From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00105">Casting.h:105</a></div></div>
70
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl.html">SVF::SVFUtil::isa_impl</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00076">Casting.h:76</a></div></div>
71
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__wrap_html_af3d80ab43e47626f32c91a6c4454e82e"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html#af3d80ab43e47626f32c91a6c4454e82e">SVF::SVFUtil::cast_retty_wrap::ret_type</a></div><div class="ttdeci">typename cast_retty&lt; To, SimpleFrom &gt;::ret_type ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00240">Casting.h:240</a></div></div>
72
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4_html_a414dc089b04305b8580dede7a6337404"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#a414dc089b04305b8580dede7a6337404">SVF::SVFUtil::isa_impl_wrap&lt; To, FromTy, FromTy &gt;::doit</a></div><div class="ttdeci">static bool doit(const FromTy &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00174">Casting.h:174</a></div></div>
73
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4_html_add8668ca96bbf0808c146cc81c62267c"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html#add8668ca96bbf0808c146cc81c62267c">SVF::SVFUtil::cast_retty_impl&lt; To, const From *const &gt;::ret_type</a></div><div class="ttdeci">const To * ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00220">Casting.h:220</a></div></div>
74
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl_html_a150c6a99c45befa44a4cd2bcc8d06eee"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl.html#a150c6a99c45befa44a4cd2bcc8d06eee">SVF::SVFUtil::isa_impl::doit</a></div><div class="ttdeci">static bool doit(const From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00078">Casting.h:78</a></div></div>
75
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4_html_a761b612c6ee476a28aabfbbc6b2da7ab"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5_01_4.html#a761b612c6ee476a28aabfbbc6b2da7ab">SVF::SVFUtil::isa_impl_cl&lt; To, const From * &gt;::doit</a></div><div class="ttdeci">static bool doit(const From *Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00141">Casting.h:141</a></div></div>
76
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4_html_ad989c130f2b6cd5a0f1ba0c7abd62b9a"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html#ad989c130f2b6cd5a0f1ba0c7abd62b9a">SVF::SVFUtil::cast_retty_wrap&lt; To, FromTy, FromTy &gt;::ret_type</a></div><div class="ttdeci">typename cast_retty_impl&lt; To, FromTy &gt;::ret_type ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00247">Casting.h:247</a></div></div>
77
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty_html_aea91708cabb8176b031f1c1fdb89a15b"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">SVF::SVFUtil::cast_retty::ret_type</a></div><div class="ttdeci">typename cast_retty_wrap&lt; To, From, typename simplify_type&lt; From &gt;::SimpleType &gt;::ret_type ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00254">Casting.h:254</a></div></div>
78
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__wrap_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html">SVF::SVFUtil::isa_impl_wrap</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00158">Casting.h:158</a></div></div>
79
79
  <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
80
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4_html_afdc334dc0c584651f9ab538e38cf3aff"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#afdc334dc0c584651f9ab538e38cf3aff">SVF::SVFUtil::simplify_type&lt; const From &gt;::SimpleType</a></div><div class="ttdeci">typename llvm::add_const_past_pointer&lt; NonConstSimpleType &gt;::type SimpleType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00061">Casting.h:61</a></div></div>
81
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__convert__val_html_a42987ff69d76fef88044fe0b19743239"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__convert__val.html#a42987ff69d76fef88044fe0b19743239">SVF::SVFUtil::cast_convert_val::doit</a></div><div class="ttdeci">static cast_retty&lt; To, From &gt;::ret_type doit(From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00262">Casting.h:262</a></div></div>
82
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4_html_a2dd56ef15d86f61c7fef34dc15173e4a"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html#a2dd56ef15d86f61c7fef34dc15173e4a">SVF::SVFUtil::cast_convert_val&lt; To, FromTy, FromTy &gt;::doit</a></div><div class="ttdeci">static cast_retty&lt; To, FromTy &gt;::ret_type doit(const FromTy &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00273">Casting.h:273</a></div></div>
83
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4_html_ad0bc349135b60cc51fd040b615a979f7"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html#ad0bc349135b60cc51fd040b615a979f7">SVF::SVFUtil::cast_retty_impl&lt; To, const From &gt;::ret_type</a></div><div class="ttdeci">const To &amp; ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00204">Casting.h:204</a></div></div>
84
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4_html_af73d1d0d7eb6f51090b4df47b497483a"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4.html#af73d1d0d7eb6f51090b4df47b497483a">SVF::SVFUtil::isa_impl_cl&lt; To, const From *const &gt;::doit</a></div><div class="ttdeci">static bool doit(const From *Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00149">Casting.h:149</a></div></div>
85
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__wrap_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html">SVF::SVFUtil::cast_retty_wrap</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00234">Casting.h:234</a></div></div>
80
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4_html_afdc334dc0c584651f9ab538e38cf3aff"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#afdc334dc0c584651f9ab538e38cf3aff">SVF::SVFUtil::simplify_type&lt; const From &gt;::SimpleType</a></div><div class="ttdeci">typename llvm::add_const_past_pointer&lt; NonConstSimpleType &gt;::type SimpleType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00062">Casting.h:62</a></div></div>
81
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__convert__val_html_a42987ff69d76fef88044fe0b19743239"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__convert__val.html#a42987ff69d76fef88044fe0b19743239">SVF::SVFUtil::cast_convert_val::doit</a></div><div class="ttdeci">static cast_retty&lt; To, From &gt;::ret_type doit(From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00263">Casting.h:263</a></div></div>
82
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4_html_a2dd56ef15d86f61c7fef34dc15173e4a"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html#a2dd56ef15d86f61c7fef34dc15173e4a">SVF::SVFUtil::cast_convert_val&lt; To, FromTy, FromTy &gt;::doit</a></div><div class="ttdeci">static cast_retty&lt; To, FromTy &gt;::ret_type doit(const FromTy &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00274">Casting.h:274</a></div></div>
83
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4_html_ad0bc349135b60cc51fd040b615a979f7"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html#ad0bc349135b60cc51fd040b615a979f7">SVF::SVFUtil::cast_retty_impl&lt; To, const From &gt;::ret_type</a></div><div class="ttdeci">const To &amp; ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00205">Casting.h:205</a></div></div>
84
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4_html_af73d1d0d7eb6f51090b4df47b497483a"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01From_01_5const_01_4.html#af73d1d0d7eb6f51090b4df47b497483a">SVF::SVFUtil::isa_impl_cl&lt; To, const From *const &gt;::doit</a></div><div class="ttdeci">static bool doit(const From *Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00150">Casting.h:150</a></div></div>
85
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__wrap_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__wrap.html">SVF::SVFUtil::cast_retty_wrap</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00235">Casting.h:235</a></div></div>
86
86
  <div class="ttc" id="cJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
87
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_html_a8046f044d895a5c9aee85de9705161f9"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type.html#a8046f044d895a5c9aee85de9705161f9">SVF::SVFUtil::simplify_type::getSimplifiedValue</a></div><div class="ttdeci">static SimpleType &amp; getSimplifiedValue(From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00051">Casting.h:51</a></div></div>
88
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4_html_a98a60de95a331a34dcbad6da9961a9b7"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html#a98a60de95a331a34dcbad6da9961a9b7">SVF::SVFUtil::cast_retty_impl&lt; To, const From * &gt;::ret_type</a></div><div class="ttdeci">const To * ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00214">Casting.h:214</a></div></div>
89
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4_html_a052f7cd3a81e368060f132bf0268fa68"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a052f7cd3a81e368060f132bf0268fa68">SVF::SVFUtil::cast_retty_impl&lt; To, std::unique_ptr&lt; From &gt; &gt;::ResultType</a></div><div class="ttdeci">typename std::remove_pointer&lt; PointerType &gt;::type ResultType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00227">Casting.h:227</a></div></div>
87
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_html_a8046f044d895a5c9aee85de9705161f9"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type.html#a8046f044d895a5c9aee85de9705161f9">SVF::SVFUtil::simplify_type::getSimplifiedValue</a></div><div class="ttdeci">static SimpleType &amp; getSimplifiedValue(From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00052">Casting.h:52</a></div></div>
88
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4_html_a98a60de95a331a34dcbad6da9961a9b7"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html#a98a60de95a331a34dcbad6da9961a9b7">SVF::SVFUtil::cast_retty_impl&lt; To, const From * &gt;::ret_type</a></div><div class="ttdeci">const To * ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00215">Casting.h:215</a></div></div>
89
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4_html_a052f7cd3a81e368060f132bf0268fa68"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a052f7cd3a81e368060f132bf0268fa68">SVF::SVFUtil::cast_retty_impl&lt; To, std::unique_ptr&lt; From &gt; &gt;::ResultType</a></div><div class="ttdeci">typename std::remove_pointer&lt; PointerType &gt;::type ResultType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00228">Casting.h:228</a></div></div>
90
90
  <div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
91
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4_html_ac64f5d9a2ec97aebd7b377319d7f043b"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ac64f5d9a2ec97aebd7b377319d7f043b">SVF::SVFUtil::simplify_type&lt; const From &gt;::getSimplifiedValue</a></div><div class="ttdeci">static RetType getSimplifiedValue(const From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00065">Casting.h:65</a></div></div>
92
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_html_a5f8f6d651931eba7e0fa14c26a691a04"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html#a5f8f6d651931eba7e0fa14c26a691a04">SVF::SVFUtil::cast_retty_impl::ret_type</a></div><div class="ttdeci">To &amp; ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00200">Casting.h:200</a></div></div>
93
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4_html_a86c02dc15b65d0c052ea4447b3fb6333"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html#a86c02dc15b65d0c052ea4447b3fb6333">SVF::SVFUtil::cast_retty_impl&lt; To, From * &gt;::ret_type</a></div><div class="ttdeci">To * ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00209">Casting.h:209</a></div></div>
94
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4_html_a9d08abc346f3b77c487eba144f3cbd8d"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a9d08abc346f3b77c487eba144f3cbd8d">SVF::SVFUtil::cast_retty_impl&lt; To, std::unique_ptr&lt; From &gt; &gt;::PointerType</a></div><div class="ttdeci">typename cast_retty_impl&lt; To, From * &gt;::ret_type PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00226">Casting.h:226</a></div></div>
95
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4_html_ae6f5437cb8355759aadc78fca716bc6a"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ae6f5437cb8355759aadc78fca716bc6a">SVF::SVFUtil::simplify_type&lt; const From &gt;::RetType</a></div><div class="ttdeci">typename llvm::add_lvalue_reference_if_not_pointer&lt; SimpleType &gt;::type RetType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00063">Casting.h:63</a></div></div>
96
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__wrap_html_aa0f166d8bdcd1e7b954cc29c19a40b04"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html#aa0f166d8bdcd1e7b954cc29c19a40b04">SVF::SVFUtil::isa_impl_wrap::doit</a></div><div class="ttdeci">static bool doit(const From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00161">Casting.h:161</a></div></div>
97
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4_html_a3bf80190e39c339d4e3ec703789ae845"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a3bf80190e39c339d4e3ec703789ae845">SVF::SVFUtil::cast_retty_impl&lt; To, std::unique_ptr&lt; From &gt; &gt;::ret_type</a></div><div class="ttdeci">std::unique_ptr&lt; ResultType &gt; ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00230">Casting.h:230</a></div></div>
98
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4_html_aadddb18b44c9744dcc639a3de603151d"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#aadddb18b44c9744dcc639a3de603151d">SVF::SVFUtil::simplify_type&lt; const From &gt;::NonConstSimpleType</a></div><div class="ttdeci">typename simplify_type&lt; From &gt;::SimpleType NonConstSimpleType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00059">Casting.h:59</a></div></div>
99
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4_html_ac95b00b5d96e6b8457ecade4dbda3de3"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4.html#ac95b00b5d96e6b8457ecade4dbda3de3">SVF::SVFUtil::isa_impl_cl&lt; To, From *const &gt;::doit</a></div><div class="ttdeci">static bool doit(const From *Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00131">Casting.h:131</a></div></div>
100
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7_html_a0da9525f6f39a3eb9ce9275731c2ad64"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7.html#a0da9525f6f39a3eb9ce9275731c2ad64">SVF::SVFUtil::isa_impl&lt; To, From, typename std::enable_if&lt; std::is_base_of&lt; To, From &gt;::value &gt;::type &gt;::doit</a></div><div class="ttdeci">static bool doit(const From &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00088">Casting.h:88</a></div></div>
101
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1is__simple__type_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1is__simple__type.html">SVF::SVFUtil::is_simple_type</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00281">Casting.h:281</a></div></div>
102
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">SVF::SVFUtil::cast_retty_impl</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00198">Casting.h:198</a></div></div>
103
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4_html_a8add67bd107583b7c34fce53a748bcb0"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4.html#a8add67bd107583b7c34fce53a748bcb0">SVF::SVFUtil::isa_impl_cl&lt; To, From * &gt;::doit</a></div><div class="ttdeci">static bool doit(const From *Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00122">Casting.h:122</a></div></div>
91
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4_html_ac64f5d9a2ec97aebd7b377319d7f043b"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ac64f5d9a2ec97aebd7b377319d7f043b">SVF::SVFUtil::simplify_type&lt; const From &gt;::getSimplifiedValue</a></div><div class="ttdeci">static RetType getSimplifiedValue(const From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00066">Casting.h:66</a></div></div>
92
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_html_a5f8f6d651931eba7e0fa14c26a691a04"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html#a5f8f6d651931eba7e0fa14c26a691a04">SVF::SVFUtil::cast_retty_impl::ret_type</a></div><div class="ttdeci">To &amp; ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00201">Casting.h:201</a></div></div>
93
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4_html_a86c02dc15b65d0c052ea4447b3fb6333"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html#a86c02dc15b65d0c052ea4447b3fb6333">SVF::SVFUtil::cast_retty_impl&lt; To, From * &gt;::ret_type</a></div><div class="ttdeci">To * ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00210">Casting.h:210</a></div></div>
94
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4_html_a9d08abc346f3b77c487eba144f3cbd8d"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a9d08abc346f3b77c487eba144f3cbd8d">SVF::SVFUtil::cast_retty_impl&lt; To, std::unique_ptr&lt; From &gt; &gt;::PointerType</a></div><div class="ttdeci">typename cast_retty_impl&lt; To, From * &gt;::ret_type PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00227">Casting.h:227</a></div></div>
95
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4_html_ae6f5437cb8355759aadc78fca716bc6a"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#ae6f5437cb8355759aadc78fca716bc6a">SVF::SVFUtil::simplify_type&lt; const From &gt;::RetType</a></div><div class="ttdeci">typename llvm::add_lvalue_reference_if_not_pointer&lt; SimpleType &gt;::type RetType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00064">Casting.h:64</a></div></div>
96
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__wrap_html_aa0f166d8bdcd1e7b954cc29c19a40b04"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__wrap.html#aa0f166d8bdcd1e7b954cc29c19a40b04">SVF::SVFUtil::isa_impl_wrap::doit</a></div><div class="ttdeci">static bool doit(const From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00162">Casting.h:162</a></div></div>
97
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4_html_a3bf80190e39c339d4e3ec703789ae845"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html#a3bf80190e39c339d4e3ec703789ae845">SVF::SVFUtil::cast_retty_impl&lt; To, std::unique_ptr&lt; From &gt; &gt;::ret_type</a></div><div class="ttdeci">std::unique_ptr&lt; ResultType &gt; ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00231">Casting.h:231</a></div></div>
98
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4_html_aadddb18b44c9744dcc639a3de603151d"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type_3_01const_01From_01_4.html#aadddb18b44c9744dcc639a3de603151d">SVF::SVFUtil::simplify_type&lt; const From &gt;::NonConstSimpleType</a></div><div class="ttdeci">typename simplify_type&lt; From &gt;::SimpleType NonConstSimpleType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00060">Casting.h:60</a></div></div>
99
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4_html_ac95b00b5d96e6b8457ecade4dbda3de3"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5const_01_4.html#ac95b00b5d96e6b8457ecade4dbda3de3">SVF::SVFUtil::isa_impl_cl&lt; To, From *const &gt;::doit</a></div><div class="ttdeci">static bool doit(const From *Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00132">Casting.h:132</a></div></div>
100
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7_html_a0da9525f6f39a3eb9ce9275731c2ad64"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl_3_01To_00_01From_00_01typename_01std_1_1enable__if_3_01std_1_1101a002941fb8432b76e90258f1ec6b7.html#a0da9525f6f39a3eb9ce9275731c2ad64">SVF::SVFUtil::isa_impl&lt; To, From, typename std::enable_if&lt; std::is_base_of&lt; To, From &gt;::value &gt;::type &gt;::doit</a></div><div class="ttdeci">static bool doit(const From &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00089">Casting.h:89</a></div></div>
101
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1is__simple__type_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1is__simple__type.html">SVF::SVFUtil::is_simple_type</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00282">Casting.h:282</a></div></div>
102
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty__impl_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty__impl.html">SVF::SVFUtil::cast_retty_impl</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00199">Casting.h:199</a></div></div>
103
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4_html_a8add67bd107583b7c34fce53a748bcb0"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01From_01_5_01_4.html#a8add67bd107583b7c34fce53a748bcb0">SVF::SVFUtil::isa_impl_cl&lt; To, From * &gt;::doit</a></div><div class="ttdeci">static bool doit(const From *Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00123">Casting.h:123</a></div></div>
104
104
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
105
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type.html">SVF::SVFUtil::simplify_type</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00046">Casting.h:46</a></div></div>
106
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
107
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5c8cbc986cccb9d84f87aae162df3737"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVF::SVFUtil::isa</a></div><div class="ttdeci">LLVM_NODISCARD bool isa(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00184">Casting.h:184</a></div></div>
108
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">SVF::SVFUtil::isa_impl_cl</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00094">Casting.h:94</a></div></div>
109
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_html_afbe68352d888c0b15e9f46d4e378bacb"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html#afbe68352d888c0b15e9f46d4e378bacb">SVF::SVFUtil::isa_impl_cl::doit</a></div><div class="ttdeci">static bool doit(const From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00096">Casting.h:96</a></div></div>
110
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty.html">SVF::SVFUtil::cast_retty</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00194">Casting.h:194</a></div></div>
111
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4_html_aff368847551a69d07b06237908594852"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4.html#aff368847551a69d07b06237908594852">SVF::SVFUtil::isa_impl_cl&lt; To, const std::unique_ptr&lt; From &gt; &gt;::doit</a></div><div class="ttdeci">static bool doit(const std::unique_ptr&lt; From &gt; &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00113">Casting.h:113</a></div></div>
112
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__convert__val_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">SVF::SVFUtil::cast_convert_val</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00259">Casting.h:259</a></div></div>
113
- <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_html_a40c0d9a74681d3eaa7172ba137d489e4"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">SVF::SVFUtil::simplify_type::SimpleType</a></div><div class="ttdeci">From SimpleType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00048">Casting.h:48</a></div></div>
114
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0d100868bf63b968d387eb50e9603f7c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">SVF::SVFUtil::cast</a></div><div class="ttdeci">std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00297">Casting.h:297</a></div></div>
105
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type.html">SVF::SVFUtil::simplify_type</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00047">Casting.h:47</a></div></div>
106
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00344">Casting.h:344</a></div></div>
107
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5c8cbc986cccb9d84f87aae162df3737"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVF::SVFUtil::isa</a></div><div class="ttdeci">LLVM_NODISCARD bool isa(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00185">Casting.h:185</a></div></div>
108
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html">SVF::SVFUtil::isa_impl_cl</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00095">Casting.h:95</a></div></div>
109
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_html_afbe68352d888c0b15e9f46d4e378bacb"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl.html#afbe68352d888c0b15e9f46d4e378bacb">SVF::SVFUtil::isa_impl_cl::doit</a></div><div class="ttdeci">static bool doit(const From &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00097">Casting.h:97</a></div></div>
110
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty.html">SVF::SVFUtil::cast_retty</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00195">Casting.h:195</a></div></div>
111
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4_html_aff368847551a69d07b06237908594852"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1isa__impl__cl_3_01To_00_01const_01std_1_1unique__ptr_3_01From_01_4_01_4.html#aff368847551a69d07b06237908594852">SVF::SVFUtil::isa_impl_cl&lt; To, const std::unique_ptr&lt; From &gt; &gt;::doit</a></div><div class="ttdeci">static bool doit(const std::unique_ptr&lt; From &gt; &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00114">Casting.h:114</a></div></div>
112
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__convert__val_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__convert__val.html">SVF::SVFUtil::cast_convert_val</a></div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00260">Casting.h:260</a></div></div>
113
+ <div class="ttc" id="structSVF_1_1SVFUtil_1_1simplify__type_html_a40c0d9a74681d3eaa7172ba137d489e4"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1simplify__type.html#a40c0d9a74681d3eaa7172ba137d489e4">SVF::SVFUtil::simplify_type::SimpleType</a></div><div class="ttdeci">From SimpleType</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00049">Casting.h:49</a></div></div>
114
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0d100868bf63b968d387eb50e9603f7c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">SVF::SVFUtil::cast</a></div><div class="ttdeci">std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00298">Casting.h:298</a></div></div>
115
115
  </div><!-- fragment --></div><!-- contents -->
116
116
  <!-- start footer part -->
117
117
  <hr class="footer"/><address class="footer"><small>