svf-tools 1.0.613 → 1.0.615

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 (542) hide show
  1. package/CMakeLists.txt +13 -0
  2. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -6
  5. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +15 -15
  6. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +22 -22
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +16 -16
  9. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +6 -6
  10. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +7 -7
  11. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +6 -6
  12. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +11 -11
  16. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +1 -1
  17. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +5 -5
  19. package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
  20. package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +14 -14
  22. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  24. package/SVF-doxygen/html/html/ConsG_8h_source.html +9 -9
  25. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +18 -18
  26. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +9 -9
  27. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +4 -4
  28. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  29. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
  30. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +4 -6
  32. package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
  33. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +9 -9
  34. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  35. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +22 -22
  36. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +21 -21
  40. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
  41. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  42. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +10 -10
  43. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
  44. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +13 -13
  45. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -28
  46. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +65 -65
  47. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  48. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
  50. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  51. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
  52. package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +6 -6
  54. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +3 -3
  55. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +24 -29
  56. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +8 -8
  57. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  58. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
  59. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
  60. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +9 -9
  61. package/SVF-doxygen/html/html/LocationSet_8h_source.html +3 -3
  62. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +5 -5
  63. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
  64. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
  65. package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
  66. package/SVF-doxygen/html/html/MHP_8h_source.html +5 -5
  67. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +17 -17
  68. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +8 -8
  69. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
  70. package/SVF-doxygen/html/html/MTA_8cpp_source.html +12 -17
  71. package/SVF-doxygen/html/html/MTA_8h_source.html +3 -4
  72. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +10 -10
  73. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +34 -34
  75. package/SVF-doxygen/html/html/MemRegion_8h_source.html +7 -7
  76. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +16 -15
  77. package/SVF-doxygen/html/html/MemSSA_8h_source.html +53 -52
  78. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +7 -8
  79. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +7 -7
  80. package/SVF-doxygen/html/html/Options_8cpp_source.html +52 -53
  81. package/SVF-doxygen/html/html/Options_8h_source.html +53 -54
  82. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  83. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -3
  84. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -3
  86. package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +33 -33
  88. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +91 -95
  89. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +31 -39
  90. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +85 -92
  91. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +20 -20
  92. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +16 -16
  93. package/SVF-doxygen/html/html/PointsTo_8cpp.html +1 -0
  94. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +51 -51
  95. package/SVF-doxygen/html/html/PointsTo_8h_source.html +38 -38
  96. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +6 -6
  97. package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
  98. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +11 -22
  99. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +14 -17
  100. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  101. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  102. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -7
  103. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +21 -19
  104. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +5 -5
  105. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +18 -18
  106. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +49 -62
  107. package/SVF-doxygen/html/html/SVFG_8h_source.html +45 -45
  108. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +12 -12
  109. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -8
  110. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +3 -3
  111. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +10 -16
  112. package/SVF-doxygen/html/html/SVFIR_8h_source.html +83 -83
  113. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +19 -19
  114. package/SVF-doxygen/html/html/SVFType_8h.html +22 -22
  115. package/SVF-doxygen/html/html/SVFType_8h_source.html +76 -77
  116. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +5 -5
  117. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +11 -11
  118. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +5 -5
  119. package/SVF-doxygen/html/html/SVFValue_8h_source.html +6 -6
  120. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  121. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
  122. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +6 -6
  123. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +4 -4
  124. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +15 -15
  125. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -3
  126. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +69 -71
  127. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
  128. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +39 -39
  129. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  130. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
  131. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +49 -51
  132. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +13 -13
  133. package/SVF-doxygen/html/html/TCT_8cpp_source.html +4 -4
  134. package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
  135. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +8 -8
  136. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
  137. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  138. package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -17
  139. package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
  140. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +8 -8
  141. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +33 -33
  142. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
  143. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +11 -11
  144. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +12 -12
  145. package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
  146. package/SVF-doxygen/html/html/WPASolver_8h_source.html +25 -25
  147. package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
  148. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -5
  149. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -5
  150. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +187 -188
  155. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +104 -107
  156. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +163 -164
  157. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +47 -50
  158. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +194 -195
  159. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +45 -48
  160. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +204 -205
  161. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +35 -38
  162. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
  163. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +191 -192
  164. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +29 -32
  165. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +122 -123
  166. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +158 -219
  167. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  168. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +137 -138
  169. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +57 -49
  170. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +138 -139
  171. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +34 -34
  172. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +7 -7
  173. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +140 -141
  175. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +30 -30
  176. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +8 -8
  177. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1CallSite-members.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +10 -10
  180. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  181. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +114 -114
  182. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +6 -6
  183. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
  184. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +28 -28
  185. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
  186. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +6 -6
  187. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
  188. package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +17 -31
  190. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +10 -10
  191. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +40 -40
  192. package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +15 -15
  193. package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +4 -4
  194. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +11 -11
  195. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
  196. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
  197. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +2 -2
  198. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +228 -229
  200. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +62 -65
  201. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
  202. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +17 -17
  203. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +194 -195
  204. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +55 -55
  205. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +219 -220
  206. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +335 -342
  207. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +57 -57
  208. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +6 -6
  209. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
  210. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
  211. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
  212. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
  213. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +2 -2
  214. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
  215. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +6 -6
  216. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
  217. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +4 -4
  218. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +4 -4
  219. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  220. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +8 -8
  221. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis-members.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +20 -14
  223. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +4 -4
  224. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +108 -94
  225. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
  226. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +36 -36
  227. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
  228. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +12 -12
  229. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +25 -25
  230. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +3 -3
  231. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +26 -26
  232. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +87 -87
  233. package/SVF-doxygen/html/html/classSVF_1_1MTA-members.html +2 -2
  234. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +27 -33
  235. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +21 -21
  236. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +14 -14
  237. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder-members.html +41 -43
  238. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +57 -80
  239. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  240. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
  241. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +4 -4
  242. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +4 -3
  243. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +170 -143
  244. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +16 -16
  245. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +2 -2
  246. package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData-members.html +3 -3
  247. package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +13 -15
  248. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
  249. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +2 -2
  250. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
  251. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +17 -18
  253. package/SVF-doxygen/html/html/classSVF_1_1Options.html +53 -79
  254. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  255. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
  256. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  257. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +3 -3
  258. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +3 -3
  259. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +4 -4
  260. package/SVF-doxygen/html/html/classSVF_1_1PTData.html +11 -11
  261. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData-members.html +28 -28
  262. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +174 -177
  263. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData-members.html +17 -17
  264. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +99 -102
  265. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData-members.html +30 -30
  266. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +125 -127
  267. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData-members.html +13 -13
  268. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +83 -86
  269. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +122 -122
  271. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData-members.html +22 -22
  272. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +137 -140
  273. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +56 -56
  274. package/SVF-doxygen/html/html/classSVF_1_1PointsTo-members.html +16 -16
  275. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +183 -178
  276. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +7 -7
  277. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +87 -65
  278. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +6 -6
  279. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +3 -3
  280. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html +1 -1
  281. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +4 -4
  283. package/SVF-doxygen/html/html/classSVF_1_1SVFArrayType.html +6 -6
  284. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +3 -3
  285. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +13 -16
  286. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +1 -1
  287. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +2 -2
  288. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +1 -1
  289. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +2 -2
  290. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +1 -1
  291. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +3 -3
  292. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +1 -1
  293. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +2 -2
  294. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +1 -1
  295. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +2 -2
  296. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +1 -1
  297. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +2 -2
  298. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +1 -1
  299. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
  301. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +5 -7
  302. package/SVF-doxygen/html/html/classSVF_1_1SVFFunctionType.html +9 -9
  303. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
  304. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +211 -236
  305. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder-members.html +7 -9
  306. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +50 -138
  307. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +9 -9
  308. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +82 -82
  309. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +5 -5
  310. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +2 -2
  312. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
  313. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +203 -215
  314. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +13 -13
  315. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +79 -79
  316. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +4 -4
  318. package/SVF-doxygen/html/html/classSVF_1_1SVFIntergerType.html +5 -5
  319. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo-members.html +1 -1
  320. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +5 -5
  321. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +1 -1
  322. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +2 -2
  323. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +0 -4
  324. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +5 -5
  325. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +1 -1
  326. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +3 -3
  327. package/SVF-doxygen/html/html/classSVF_1_1SVFPointerType.html +9 -9
  328. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +19 -19
  329. package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +5 -5
  330. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +38 -38
  331. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
  332. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +4 -5
  333. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
  334. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +1 -1
  335. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +2 -2
  336. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +9 -9
  337. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +12 -14
  338. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +42 -68
  339. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +1 -1
  340. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +108 -109
  341. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator-members.html +1 -1
  342. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +50 -50
  343. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +6 -6
  344. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +146 -146
  345. package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +5 -5
  346. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +48 -61
  347. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +178 -179
  348. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +35 -38
  349. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  350. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +20 -20
  351. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +42 -46
  352. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +10 -10
  353. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
  354. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +169 -170
  355. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +31 -34
  356. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  357. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +28 -28
  358. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +263 -264
  359. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +112 -115
  360. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +41 -41
  361. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  362. package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +9 -9
  363. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +2 -2
  364. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +9 -9
  365. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver-members.html +2 -2
  366. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +15 -15
  367. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +25 -25
  368. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver-members.html +2 -2
  369. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +17 -17
  370. package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +2 -2
  371. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +76 -81
  372. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +2 -2
  373. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  374. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  375. package/SVF-doxygen/html/html/functions.html +1 -1
  376. package/SVF-doxygen/html/html/functions_0x7e.html +16 -16
  377. package/SVF-doxygen/html/html/functions_a.html +7 -7
  378. package/SVF-doxygen/html/html/functions_b.html +6 -6
  379. package/SVF-doxygen/html/html/functions_c.html +27 -27
  380. package/SVF-doxygen/html/html/functions_d.html +10 -11
  381. package/SVF-doxygen/html/html/functions_e.html +2 -2
  382. package/SVF-doxygen/html/html/functions_f.html +6 -6
  383. package/SVF-doxygen/html/html/functions_func.html +6 -6
  384. package/SVF-doxygen/html/html/functions_func_0x7e.html +16 -16
  385. package/SVF-doxygen/html/html/functions_func_b.html +6 -6
  386. package/SVF-doxygen/html/html/functions_func_c.html +27 -27
  387. package/SVF-doxygen/html/html/functions_func_d.html +10 -11
  388. package/SVF-doxygen/html/html/functions_func_e.html +2 -2
  389. package/SVF-doxygen/html/html/functions_func_f.html +5 -5
  390. package/SVF-doxygen/html/html/functions_func_g.html +22 -22
  391. package/SVF-doxygen/html/html/functions_func_h.html +3 -3
  392. package/SVF-doxygen/html/html/functions_func_i.html +3 -3
  393. package/SVF-doxygen/html/html/functions_func_o.html +3 -3
  394. package/SVF-doxygen/html/html/functions_func_p.html +5 -5
  395. package/SVF-doxygen/html/html/functions_func_r.html +5 -8
  396. package/SVF-doxygen/html/html/functions_func_s.html +6 -6
  397. package/SVF-doxygen/html/html/functions_func_t.html +1 -1
  398. package/SVF-doxygen/html/html/functions_func_u.html +23 -23
  399. package/SVF-doxygen/html/html/functions_g.html +25 -28
  400. package/SVF-doxygen/html/html/functions_h.html +3 -3
  401. package/SVF-doxygen/html/html/functions_i.html +6 -6
  402. package/SVF-doxygen/html/html/functions_m.html +1 -1
  403. package/SVF-doxygen/html/html/functions_o.html +13 -13
  404. package/SVF-doxygen/html/html/functions_p.html +19 -19
  405. package/SVF-doxygen/html/html/functions_r.html +11 -12
  406. package/SVF-doxygen/html/html/functions_s.html +33 -36
  407. package/SVF-doxygen/html/html/functions_t.html +12 -12
  408. package/SVF-doxygen/html/html/functions_type_t.html +1 -1
  409. package/SVF-doxygen/html/html/functions_u.html +26 -23
  410. package/SVF-doxygen/html/html/functions_v.html +6 -6
  411. package/SVF-doxygen/html/html/functions_vars.html +1 -1
  412. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  413. package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
  414. package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
  415. package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
  416. package/SVF-doxygen/html/html/functions_vars_p.html +2 -2
  417. package/SVF-doxygen/html/html/functions_vars_s.html +5 -8
  418. package/SVF-doxygen/html/html/functions_vars_t.html +1 -1
  419. package/SVF-doxygen/html/html/functions_vars_u.html +3 -0
  420. package/SVF-doxygen/html/html/functions_w.html +3 -7
  421. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  422. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  423. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  424. package/SVF-doxygen/html/html/namespaceSVF.html +35 -35
  425. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +2 -2
  426. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +4 -4
  427. package/SVF-doxygen/html/html/saber_8cpp.html +1 -5
  428. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -5
  429. package/SVF-doxygen/html/html/search/all_0.js +1 -1
  430. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  431. package/SVF-doxygen/html/html/search/all_10.js +15 -15
  432. package/SVF-doxygen/html/html/search/all_11.js +1 -2
  433. package/SVF-doxygen/html/html/search/all_12.js +20 -21
  434. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  435. package/SVF-doxygen/html/html/search/all_14.js +13 -12
  436. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  437. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  438. package/SVF-doxygen/html/html/search/all_19.js +16 -16
  439. package/SVF-doxygen/html/html/search/all_2.js +6 -6
  440. package/SVF-doxygen/html/html/search/all_3.js +14 -14
  441. package/SVF-doxygen/html/html/search/all_4.js +5 -5
  442. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  443. package/SVF-doxygen/html/html/search/all_6.js +5 -5
  444. package/SVF-doxygen/html/html/search/all_7.js +11 -12
  445. package/SVF-doxygen/html/html/search/all_8.js +3 -3
  446. package/SVF-doxygen/html/html/search/all_9.js +4 -4
  447. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  448. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  449. package/SVF-doxygen/html/html/search/all_d.js +3 -3
  450. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  451. package/SVF-doxygen/html/html/search/all_f.js +5 -5
  452. package/SVF-doxygen/html/html/search/functions_0.js +4 -4
  453. package/SVF-doxygen/html/html/search/functions_1.js +6 -6
  454. package/SVF-doxygen/html/html/search/functions_10.js +1 -2
  455. package/SVF-doxygen/html/html/search/functions_11.js +11 -11
  456. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  457. package/SVF-doxygen/html/html/search/functions_13.js +12 -12
  458. package/SVF-doxygen/html/html/search/functions_17.js +16 -16
  459. package/SVF-doxygen/html/html/search/functions_2.js +14 -14
  460. package/SVF-doxygen/html/html/search/functions_3.js +5 -5
  461. package/SVF-doxygen/html/html/search/functions_4.js +2 -2
  462. package/SVF-doxygen/html/html/search/functions_5.js +4 -4
  463. package/SVF-doxygen/html/html/search/functions_6.js +11 -11
  464. package/SVF-doxygen/html/html/search/functions_7.js +3 -3
  465. package/SVF-doxygen/html/html/search/functions_8.js +3 -3
  466. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  467. package/SVF-doxygen/html/html/search/functions_e.js +3 -3
  468. package/SVF-doxygen/html/html/search/functions_f.js +5 -5
  469. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  470. package/SVF-doxygen/html/html/search/variables_0.js +1 -1
  471. package/SVF-doxygen/html/html/search/variables_10.js +2 -2
  472. package/SVF-doxygen/html/html/search/variables_12.js +5 -6
  473. package/SVF-doxygen/html/html/search/variables_13.js +3 -3
  474. package/SVF-doxygen/html/html/search/variables_14.js +1 -0
  475. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  476. package/SVF-doxygen/html/html/search/variables_7.js +0 -1
  477. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  478. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  479. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  480. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +14 -14
  481. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
  482. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  483. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
  484. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  485. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  486. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +1 -1
  487. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +47 -57
  488. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  489. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +1 -1
  490. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +5 -5
  491. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  492. package/SVF-doxygen/html/html/svf-ex_8cpp.html +6 -7
  493. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  494. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  495. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  496. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  497. package/build.sh +2 -2
  498. package/include/DDA/DDAPass.h +1 -1
  499. package/include/DDA/FlowDDA.h +1 -1
  500. package/include/Graphs/ICFG.h +1 -1
  501. package/include/Graphs/SVFG.h +3 -4
  502. package/include/Graphs/SVFGOPT.h +7 -7
  503. package/include/MSSA/MemSSA.h +2 -0
  504. package/include/MSSA/SVFGBuilder.h +5 -14
  505. package/include/MTA/MTA.h +2 -2
  506. package/include/MemoryModel/MutablePointsToDS.h +3 -3
  507. package/include/MemoryModel/PersistentPointsToCache.h +7 -8
  508. package/include/MemoryModel/PersistentPointsToDS.h +93 -93
  509. package/include/MemoryModel/PointerAnalysisImpl.h +17 -28
  510. package/include/MemoryModel/PointsTo.h +24 -24
  511. package/include/SABER/SrcSnkDDA.h +10 -13
  512. package/include/SVF-LLVM/LLVMLoopAnalysis.h +2 -1
  513. package/include/SVF-LLVM/LLVMModule.h +6 -6
  514. package/include/SVFIR/SVFIR.h +3 -5
  515. package/include/SVFIR/SVFType.h +6 -8
  516. package/include/SVFIR/SVFValue.h +5 -5
  517. package/include/Util/Options.h +0 -1
  518. package/include/Util/SparseBitVector.h +6 -14
  519. package/include/WPA/FlowSensitive.h +13 -20
  520. package/include/WPA/WPASolver.h +5 -9
  521. package/lib/DDA/DDAPass.cpp +4 -4
  522. package/lib/Graphs/CFLGraph.cpp +3 -0
  523. package/lib/Graphs/SVFG.cpp +1 -1
  524. package/lib/MSSA/MemSSA.cpp +5 -3
  525. package/lib/MSSA/SVFGBuilder.cpp +9 -27
  526. package/lib/MTA/MTA.cpp +4 -4
  527. package/lib/MemoryModel/PointerAnalysisImpl.cpp +10 -10
  528. package/lib/MemoryModel/PointsTo.cpp +23 -19
  529. package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +3 -4
  530. package/lib/SVF-LLVM/LLVMModule.cpp +32 -21
  531. package/lib/SVFIR/SVFIR.cpp +1 -1
  532. package/lib/SVFIR/SymbolTableInfo.cpp +4 -15
  533. package/lib/Util/Options.cpp +0 -6
  534. package/lib/WPA/AndersenSFR.cpp +1 -1
  535. package/lib/WPA/FlowSensitive.cpp +1 -1
  536. package/package.json +1 -1
  537. package/tools/CFL/cfl.cpp +5 -4
  538. package/tools/DDA/dda.cpp +3 -2
  539. package/tools/Example/svf-ex.cpp +3 -2
  540. package/tools/MTA/mta.cpp +6 -4
  541. package/tools/SABER/saber.cpp +7 -5
  542. package/tools/WPA/wpa.cpp +3 -2
@@ -66,12 +66,13 @@ $(function() {
66
66
  <div class="title">ConditionalPT.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="ConditionalPT_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">//===- ConditionalPT.h -- Conditional points-to data structure----------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * ConditionalPT.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: 22/03/2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef CONDVAR_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define CONDVAR_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Cond&gt;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html"> 46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondVar.html">CondVar</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"> 48</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a0999a4b34face00af83b3b840920fd3f"> 50</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a0999a4b34face00af83b3b840920fd3f">CondVar</a>(<span class="keyword">const</span> Cond&amp; cond, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>) : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(cond),<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(id)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#afd729e068419ed45bb9da8d5920f8674"> 54</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#afd729e068419ed45bb9da8d5920f8674">CondVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; conVar) : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(conVar.<a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>), <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(conVar.<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>)</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="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69"> 58</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>() : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(), <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(0) {}</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="classSVF_1_1CondVar.html#aad76f894d96617fb153cff0c875899a6"> 60</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#aad76f894d96617fb153cff0c875899a6">~CondVar</a>() {}</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a7faf827845c5e820f1b63ce6523bc2a9">operator == </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> == rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>() &amp;&amp; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> == rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</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"><a class="line" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0"> 71</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0">operator != </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</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="classSVF_1_1CondVar.html#a90d6c2204c92db5c78991e6dfdcc5c80"> 78</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; <a class="code" href="classSVF_1_1CondVar.html#a90d6c2204c92db5c78991e6dfdcc5c80">operator= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; rhs)</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">if</span>(*<span class="keyword">this</span>!=rhs)</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; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> = rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> = rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#add10a9d6f6a49cbd5dd0f5d47c423d27"> 92</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#add10a9d6f6a49cbd5dd0f5d47c423d27">operator &lt; </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> != rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>())</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> &lt; rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> &lt; rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe"> 100</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> Cond&amp; <a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>;</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="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a"> 104</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>;</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"><a class="line" href="classSVF_1_1CondVar.html#a4baf5fb20288491c96827177f9965cc4"> 109</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondVar.html#a4baf5fb20288491c96827177f9965cc4">toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&lt;&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>.toString() &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a01eb971ccd4ac623fa3cd9bb41cc696d"> 117</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>&amp; operator&lt;&lt; (OutStream &amp;o, const CondVar&lt;Cond&gt; &amp;cvar)</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; o &lt;&lt; cvar.toString();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df"> 123</a></span>&#160; Cond <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a"> 124</a></span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;};</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Element&gt;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html"> 131</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet</a></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3fcc7079d72b0b392731ae7bf1ef2939"> 133</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;</a> <a class="code" href="classSVF_1_1CondStdSet.html#a3fcc7079d72b0b392731ae7bf1ef2939">ElementSet</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a6d82b5ddafa28542ce65adb0cc56cdce"> 136</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;::iterator</a> <a class="code" href="classSVF_1_1CondStdSet.html#a6d82b5ddafa28542ce65adb0cc56cdce">iterator</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a55152b7749868cc25f1c3c33ea57a650"> 137</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;::const_iterator</a> <a class="code" href="classSVF_1_1CondStdSet.html#a55152b7749868cc25f1c3c33ea57a650">const_iterator</a>;</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="classSVF_1_1CondStdSet.html#a1f3e8aa09ca8e7f252525e35c4886c5b"> 139</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#a1f3e8aa09ca8e7f252525e35c4886c5b">CondStdSet</a>() {}</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#abc67e77de2d1363af92c3bca2ccccbf1"> 140</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#abc67e77de2d1363af92c3bca2ccccbf1">~CondStdSet</a>() {}</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3f1885562bb34c3ccbd15117788725e0"> 143</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#a3f1885562bb34c3ccbd15117788725e0">CondStdSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; cptsSet) : elements(cptsSet.getElementSet())</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="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3e72341580263f3a9b48ce0e8c7bbbec"> 148</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a3e72341580263f3a9b48ce0e8c7bbbec">test_and_set</a>(<span class="keyword">const</span> Element&amp; var)</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"> 150</span>&#160; <span class="keywordflow">return</span> elements.insert(var).second;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a6bf6fafc6f8391dbff08a6bd9d07f4d4"> 153</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a6bf6fafc6f8391dbff08a6bd9d07f4d4">test</a>(<span class="keyword">const</span> Element&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> (elements.find(var) != elements.end());</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#ae11deddad534be115d29daad08c90599"> 158</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keyword">const</span> Element&amp; var)</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; elements.insert(var);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a857396d9e820a9fab8a498d981855e2a"> 163</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a857396d9e820a9fab8a498d981855e2a">reset</a>(<span class="keyword">const</span> Element&amp; var)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; elements.erase(var);</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="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76"> 170</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">return</span> elements.empty();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b"> 174</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b">size</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> elements.size();</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"><a class="line" href="classSVF_1_1CondStdSet.html#aa19e82905537f3ae41f64fce070ee555"> 178</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondStdSet.html#aa19e82905537f3ae41f64fce070ee555">count</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> size();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a4c49e2964276825744ffce26fc43ec36"> 185</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a4c49e2964276825744ffce26fc43ec36">clear</a>()</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; elements.clear();</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="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038"> 192</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>()</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"> 194</span>&#160; <span class="keywordflow">return</span> elements.begin();</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"><a class="line" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3"> 196</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>()</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> elements.end();</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="classSVF_1_1CondStdSet.html#a76fb2382bf424638ed8e03cb48cdc90e"> 200</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#a76fb2382bf424638ed8e03cb48cdc90e">begin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> elements.begin();</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="classSVF_1_1CondStdSet.html#accc5305781696701c00245ed1e8a25a3"> 204</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#accc5305781696701c00245ed1e8a25a3">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> elements.end();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</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="classSVF_1_1CondStdSet.html#a90e4c4ead1cbdca01c0be801a68b005b"> 212</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a90e4c4ead1cbdca01c0be801a68b005b">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">const</span> ElementSet&amp; rhsElementSet = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span>(rhsElementSet.empty() || (*<span class="keyword">this</span>==rhs))</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oldSize = elements.size();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; elements.insert(rhsElementSet.begin(),rhsElementSet.end());</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> oldSize!=elements.size();</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"><a class="line" href="classSVF_1_1CondStdSet.html#abb97324d865818f0a51992ee86d1c5ad"> 221</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a9d6c986a34096a3552a6385ccbb724e4">operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)</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="keywordflow">if</span>(rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>() || (*<span class="keyword">this</span> == rhs))</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">for</span> (const_iterator i = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(); i != rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>(); ++i)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (elements.find(*i) == elements.end())</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; elements.erase(*i);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> changed;</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"><a class="line" href="classSVF_1_1CondStdSet.html#a060a01d33fcd5ed4dfcaecb3d24cda07"> 236</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a060a01d33fcd5ed4dfcaecb3d24cda07">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> elements!=rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a6697d9c3d1107db2be430b8e8b670cb5"> 240</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a6697d9c3d1107db2be430b8e8b670cb5">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span> ((*<span class="keyword">this</span> != rhs) == <span class="keyword">false</span>);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a9fa868a473993d0244431d640799ce98"> 244</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; <a class="code" href="classSVF_1_1CondStdSet.html#a9fa868a473993d0244431d640799ce98">operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)</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="keywordflow">if</span>(*<span class="keyword">this</span>!=rhs)</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; elements = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</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="keywordflow">return</span> *<span class="keyword">this</span>;</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"><a class="line" href="classSVF_1_1CondStdSet.html#ad3c38bb031419dd583a9cb0314e76afd"> 252</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&lt;(const CondStdSet&lt;Element&gt;&amp; rhs) <span class="keyword">const</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> elements &lt; rhs.getElementSet();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#ac422c3fb8bce1378d69c234e6b11fdb1"> 261</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#ac422c3fb8bce1378d69c234e6b11fdb1">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span> (empty() &amp;&amp; rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>())</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">for</span> (const_iterator i = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(); i != rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>(); ++i)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (elements.find(*i) != elements.end())</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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"> 271</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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;</div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a07267b0a4f7cfeaa6d1f7d722932c4d5"> 274</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondStdSet.html#a07267b0a4f7cfeaa6d1f7d722932c4d5">toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">for</span> (const_iterator i = elements.begin(); i != elements.end(); ++i)</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; rawstr &lt;&lt; (*i).toString() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</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"> 283</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;} &quot;</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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"><a class="line" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320"> 287</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> ElementSet&amp; <a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> elements;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a347097404761b16a077eac1ae9fbfd94"> 293</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a347097404761b16a077eac1ae9fbfd94">checkAndRemap</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a1caece9a66b6617b89037fd8211f2934"> 296</a></span>&#160; ElementSet <a class="code" href="classSVF_1_1CondStdSet.html#a1caece9a66b6617b89037fd8211f2934">elements</a>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;};</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Cond&gt;</div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html"> 304</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet</a></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aaddc3f78a624de59dda6f078ba63ba52"> 307</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Cond, PointsTo&gt;</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#aaddc3f78a624de59dda6f078ba63ba52">CondPts</a>;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077"> 308</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> CondPts::iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPtsIter</a>;</div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aa9d3a8c42b6df3fa9c2e7bcd7af75e16"> 309</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> CondPts::const_iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#aa9d3a8c42b6df3fa9c2e7bcd7af75e16">CondPtsConstIter</a>;</div><div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a0ef73bd2c1b42439ee6f265e07f17514"> 310</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar&lt;Cond&gt;</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#a0ef73bd2c1b42439ee6f265e07f17514">SingleCondVar</a>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a3670dc2bb046f2d3e0d27dc02b32e62f"> 314</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#a3670dc2bb046f2d3e0d27dc02b32e62f">CondPointsToSet</a>()</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; }</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a7217769c21c50c44f139006ec44d3a6f"> 317</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#a7217769c21c50c44f139006ec44d3a6f">CondPointsToSet</a>(<span class="keyword">const</span> Cond&amp; cond, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts)</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; _condPts[cond] |= pts;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aad144061d006968ff4d6d21488b84801"> 324</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#aad144061d006968ff4d6d21488b84801">CondPointsToSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cptsSet)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; _condPts = cptsSet.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>();</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac"> 332</a></span>&#160; <span class="keyword">inline</span> CondPts &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> _condPts;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ada240bc77570174a1d17ac097583fa78"> 336</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CondPts &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#ada240bc77570174a1d17ac097583fa78">pointsTo</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> _condPts;</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a03311162626acf16ad05b7b93248a92b"> 340</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a03311162626acf16ad05b7b93248a92b">pointsTo</a>(Cond cond)<span class="keyword"> const</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; CondPtsConstIter it = _condPts.find(cond);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; assert(it!=_condPts.end() &amp;&amp; <span class="stringliteral">&quot;do not have pts of such condition!&quot;</span>);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0"> 346</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(Cond cond)<span class="keyword"> const</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> (_condPts.find(cond) != _condPts.end());</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a8775ef2c073af6c8055c3f5b0035288f"> 350</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a8775ef2c073af6c8055c3f5b0035288f">pointsTo</a>(Cond cond)</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> _condPts[cond];</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3"> 358</a></span>&#160; <span class="keyword">inline</span> CondPtsIter <a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>()</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="keywordflow">return</span> _condPts.begin();</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea"> 362</a></span>&#160; <span class="keyword">inline</span> CondPtsIter <a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>()</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="keywordflow">return</span> _condPts.end();</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad26570b94c56d6d2ae1cd5093ac66670"> 366</a></span>&#160; <span class="keyword">inline</span> CondPtsConstIter <a class="code" href="classSVF_1_1CondPointsToSet.html#ad26570b94c56d6d2ae1cd5093ac66670">cptsBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> _condPts.begin();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aa4c47630b9a06d70375daf5e9237303d"> 370</a></span>&#160; <span class="keyword">inline</span> CondPtsConstIter <a class="code" href="classSVF_1_1CondPointsToSet.html#aa4c47630b9a06d70375daf5e9237303d">cptsEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> _condPts.end();</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad81774f0ad13fb21579180fc15affd7b"> 376</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad81774f0ad13fb21579180fc15affd7b">clear</a>()</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; _condPts.clear();</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a8d8f9e91b62b94d876f34066de7944d4"> 382</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a8d8f9e91b62b94d876f34066de7944d4">numElement</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (_condPts.empty())</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordtype">unsigned</span> num = 0;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">for</span> (CondPtsConstIter it = cptsBegin(); it != cptsEnd(); it++)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts = it-&gt;second;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; num += pts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> num;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff"> 398</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff">empty</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">return</span> numElement()==0;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a42056d7b29e50a3ed8a8db95674d24b2"> 406</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; <a class="code" href="classSVF_1_1CondPointsToSet.html#a42056d7b29e50a3ed8a8db95674d24b2">operator=</a>(</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; other)</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; _condPts = other.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>();</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#abe02e0bdcfddde7251b7d35e916c8f02"> 414</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#abe02e0bdcfddde7251b7d35e916c8f02">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="comment">// Always remember give the typename when define a template variable</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() != rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().size())</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), erit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">for</span> (; lit != elit &amp;&amp; rit != erit; ++lit, ++rit)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">const</span> Cond&amp; rc = rit-&gt;first;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span> (lc != rc || lit-&gt;second != rit-&gt;second)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#afcbb2cae75a5dd7947cb22c440b8fd0b"> 434</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#afcbb2cae75a5dd7947cb22c440b8fd0b">aliased</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span> (pointsTo().empty() || rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">for</span> (; lit != elit; ++lit)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = lit-&gt;second;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().find(lc);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span>(rit !=rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().end())</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">intersects</a>(rpts))</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#acefec4fbacde1099d3dc81ab45ab9b8c"> 458</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#acefec4fbacde1099d3dc81ab45ab9b8c">isSubset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() &gt; rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().size())</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">for</span> (; lit != elit; ++lit)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().find(lc);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (rit == rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().end())</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = lit-&gt;second;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (!rpts.<a class="code" href="classSVF_1_1PointsTo.html#ab31a53693fe070767b8de74e88091cd8">contains</a>(pts))</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a89d24257bd1436286dcbb025dd405b52"> 484</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a89d24257bd1436286dcbb025dd405b52">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>* rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (pointsTo().empty() &amp;&amp; rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; CondPtsConstIter it = rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), eit = rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(cond))</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rhs_pts= it-&gt;second;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts= pointsTo(cond);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">intersects</a>(rhs_pts))</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a57fdbfc5bc0bc7eb7a8efefdcc689852"> 507</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a57fdbfc5bc0bc7eb7a8efefdcc689852">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts2)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span> (cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; clear();</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; (*this) = cpts1;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; CondPtsConstIter it1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), eit1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">for</span> (; it1 != eit1; ++it1)</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it1-&gt;first;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts1 = it1-&gt;second;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(cond);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">if</span> (cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts2 = cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">intersectWithComplement</a>(pts1, pts2);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; pts = pts1;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div><div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a5a7ab3c22b3726541955b5be8a62aab6"> 540</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a5a7ab3c22b3726541955b5be8a62aab6">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts1)</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">if</span> (empty() || cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; CondPtsIter it = cptsBegin(), eit = cptsEnd();</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">if</span> (cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">intersectWithComplement</a>(pts1);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;</div><div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ab86fdf68183d05f66e1405c6346038c4"> 564</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a9d6c986a34096a3552a6385ccbb724e4">operator &amp;= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span> (empty())</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff">empty</a>())</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; clear();</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">for</span> (CondPtsIter it = cptsBegin(), eit = cptsEnd(); it != eit; ++it)</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">if</span> (pts &amp;= rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond))</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">if</span> (!pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#acb5af4139d42dcd19c6327520f074e91">clear</a>();</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; }</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#af06ca0ddfcdca69199fbc9ab42f98558"> 601</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#af06ca0ddfcdca69199fbc9ab42f98558">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;</div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a74c50cfaf788a828a4fc97eba703ec4e"> 610</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a97ff28f5dfd5c31e6ef351de3cdad85d">operator |= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; CondPtsConstIter rhsIt = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; CondPtsConstIter rhsEit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">for</span> (; rhsIt != rhsEit; ++rhsIt)</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keyword">const</span> Cond&amp; cond = rhsIt-&gt;first;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rhsPts = rhsIt-&gt;second;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(cond);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">if</span> ((pts |= rhsPts))</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="comment">// TODO: try to use an efficient method to compare two conditional points-to set.</span></div><div class="line"><a name="l00634"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a54d9d3f3a38bf4066cd930845f86a63c"> 634</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&lt; (const CondPointsToSet&lt;Cond&gt;&amp; rhs) <span class="keyword">const</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() &lt; rhs.pointsTo().size())</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pointsTo().size() == rhs.pointsTo().size())</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; CondPtsConstIter rit = rhs.cptsBegin(), erit = rhs.cptsEnd();</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">for</span> (; lit != elit &amp;&amp; rit != erit; ++lit, ++rit)</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keyword">const</span> Cond&amp; rc = rit-&gt;first;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">if</span> (lc &lt; rc)</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lc == rc)</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; lpts = lit-&gt;second;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">if</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() &lt; rpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>())</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() == rpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>())</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> bit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>();</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> eit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> rbit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>();</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> reit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">for</span> (; bit != eit &amp;&amp; rbit != reit; bit++, rbit++)</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">if</span> (*bit &lt; *rbit)</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*bit &gt; *rbit)</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ac29ac1adefca6b34cd8e83fe3f0b4450"> 680</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ac29ac1adefca6b34cd8e83fe3f0b4450">test_and_set</a>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">test_and_set</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div><div class="line"><a name="l00685"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a1613b690473a4fcbae7bc41c3c5347d7"> 685</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a1613b690473a4fcbae7bc41c3c5347d7">test</a>(<span class="keyword">const</span> SingleCondVar&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()))</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aadf2576b55bbdb82d7affc8466c09861"> 694</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.get_cond());</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(var.get_id());</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div><div class="line"><a name="l00699"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aced740c1aadf06b4a63630844fac2dd8"> 699</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#aced740c1aadf06b4a63630844fac2dd8">reset</a>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()))</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6">reset</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="comment">// Print all points-to targets</span></div><div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a52392deae4011c4353a259c873efc0d6"> 711</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a52392deae4011c4353a259c873efc0d6">dump</a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O)<span class="keyword"> const</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; CondPtsConstIter it = cptsBegin();</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; CondPtsConstIter eit = cptsEnd();</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">for</span> (; it != eit; it++)</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;pts{&quot;</span>;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVFUtil::dumpSet</a>(pts, O);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; }</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div><div class="line"><a name="l00723"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#abcd2c01ec21e30caa91dba06386912cb"> 723</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#abcd2c01ec21e30caa91dba06386912cb">dumpStr</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; CondPtsConstIter it = cptsBegin();</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; CondPtsConstIter eit = cptsEnd();</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">for</span> (; it != eit; it++)</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; {</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; str += <span class="stringliteral">&quot;pts{&quot;</span>;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> ii = pts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), ie = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordtype">char</span> int2str[16];</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; snprintf(int2str, <span class="keyword">sizeof</span>(int2str), <span class="stringliteral">&quot;%d&quot;</span>, *ii);</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; str += int2str;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; str += <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; str += <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; }</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; }</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div><div class="line"><a name="l00749"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html"> 749</a></span>&#160; <span class="keyword">class </span><a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00752"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a8a3d10d0aaf4708e7e44bedc6be077e0"> 752</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a8a3d10d0aaf4708e7e44bedc6be077e0">CondPtsSetIterator</a>(<a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a> &amp;<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <span class="keywordtype">bool</span> ae = <span class="keyword">false</span>)</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; : _curIter(n.cptsBegin()), _endIter(n.cptsEnd()),</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; _ptIter(_curIter-&gt;second.begin()), _ptEndIter(_curIter-&gt;second.end()), atEnd(ae) {}</div><div class="line"><a name="l00755"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a24ccc2dba1da8e241a595c84dde840ab"> 755</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a24ccc2dba1da8e241a595c84dde840ab">~CondPtsSetIterator</a>() {}</div><div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a4b1e8adca9e8d1b046930e9d2abeb08f"> 756</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0">operator != </a>(<span class="keywordtype">int</span> val)</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">return</span> _curIter != _endIter;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ab069959f9b4b2a0e1441281acb666a60"> 762</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ab069959f9b4b2a0e1441281acb666a60">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> &amp;RHS)<span class="keyword"> const</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="comment">// If they are both at the end, ignore the rest of the fields.</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">if</span> (atEnd &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a>)</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="comment">// Otherwise they are the same if they have the same condVar</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">return</span> atEnd == RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a> &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae">_curIter</a> == _curIter &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9">_ptIter</a> == _ptIter;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; }</div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a82068bca4dfc43402625638dcd1b9775"> 770</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a82068bca4dfc43402625638dcd1b9775">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> &amp;RHS)<span class="keyword"> const</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == RHS);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; }</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#abd22ed3c5dc9f35968c9a179d292b764"> 775</a></span>&#160; <span class="keywordtype">void</span> operator ++(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; {</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">if</span>(atEnd == <span class="keyword">true</span>)</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">if</span>(_ptIter==_ptEndIter)</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">if</span>(_curIter == _endIter)</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; atEnd = <span class="keyword">true</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; }</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; _curIter++;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; _ptIter = _curIter-&gt;second.begin();</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; _ptIter = _curIter-&gt;second.end();</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; _ptIter++;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div><div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#aaaed8caef122453b5ff543826e1757e0"> 794</a></span>&#160; SingleCondVar <a class="code" href="namespaceSVF.html#abf0dfb872989751b13069f859ef408e1">operator *</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; {</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; SingleCondVar temp_var(cond(), *_ptIter);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">return</span> temp_var;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; }</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;</div><div class="line"><a name="l00801"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a3ccbb22634968d2fca0f6aba7b57971e"> 801</a></span>&#160; Cond <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a3ccbb22634968d2fca0f6aba7b57971e">cond</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">return</span> _curIter-&gt;first;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; }</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00807"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae"> 807</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPointsToSet&lt;Cond&gt;::CondPtsIter</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae">_curIter</a>;</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a9ffed93e0d4ae4b1431689b7fa5d6082"> 808</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPointsToSet&lt;Cond&gt;::CondPtsIter</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a9ffed93e0d4ae4b1431689b7fa5d6082">_endIter</a>;</div><div class="line"><a name="l00809"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9"> 809</a></span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9">_ptIter</a>;</div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ae5fe9ff25c62386cbdd97d30b64b6972"> 810</a></span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ae5fe9ff25c62386cbdd97d30b64b6972">_ptEndIter</a>;</div><div class="line"><a name="l00811"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0"> 811</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a>;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; };</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00815"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a76d4c06b04161738351a813ae406aa83"> 815</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#a76d4c06b04161738351a813ae406aa83">iterator</a>;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;</div><div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a3521ec3be48cc03d9d3f562cb088a9ad"> 818</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a3521ec3be48cc03d9d3f562cb088a9ad">begin</a>()</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a5ead697952ada3fbb07da3459a2b1b86"> 823</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a5ead697952ada3fbb07da3459a2b1b86">end</a>()</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; {</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>,<span class="keyword">true</span>);</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#acec077e130e49ac66a5c3e464a73dec2"> 828</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#acec077e130e49ac66a5c3e464a73dec2">begin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;</div><div class="line"><a name="l00833"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a537890d918d23abeea39bc73198f7365"> 833</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a537890d918d23abeea39bc73198f7365">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>,<span class="keyword">true</span>);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; }</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00840"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad0e1a70889a7bf2cb1b201a129128c52"> 840</a></span>&#160; CondPts <a class="code" href="classSVF_1_1CondPointsToSet.html#ad0e1a70889a7bf2cb1b201a129128c52">_condPts</a>;</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;};</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Cond&gt;</div><div class="line"><a name="l00847"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html"> 847</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;const <a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>&lt;Cond&gt;&gt;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;{</div><div class="line"><a name="l00849"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ae66ac1a976e498f88e382988f17b4df5"> 849</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ae66ac1a976e498f88e382988f17b4df5">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">SVF::CondVar&lt;Cond&gt;</a> &amp;cv)<span class="keyword"> const</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; std::hash&lt;Cond&gt; h;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">return</span> h(cv.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;};</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Cond&gt;</div><div class="line"><a name="l00857"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html"> 857</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;<a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>&lt;Cond&gt;&gt;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;{</div><div class="line"><a name="l00859"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ac9b6dd9b7dd77c0303c1f4f5877d87db"> 859</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ac9b6dd9b7dd77c0303c1f4f5877d87db">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">SVF::CondVar&lt;Cond&gt;</a> &amp;cv)<span class="keyword"> const</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; std::hash&lt;Cond&gt; h;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">return</span> h(cv.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; }</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;};</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Element&gt;</div><div class="line"><a name="l00867"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html"> 867</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;<a class="code" href="namespaceSVF.html">SVF</a>::CondStdSet&lt;Element&gt;&gt;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;{</div><div class="line"><a name="l00869"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html#a0d50f7a011b2174e5c8064a8b03f8529"> 869</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html#a0d50f7a011b2174e5c8064a8b03f8529">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">SVF::CondStdSet&lt;Element&gt;</a> &amp;css)<span class="keyword"> const</span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="comment">// TODO: this is not a very good hash, but we probably won&#39;t be</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="comment">// using it for now. Needed for other templates to compile...</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;Element, unsigned&gt;</a>&gt; h;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(*css.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(), css.<a class="code" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b">size</a>()));</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; }</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;};</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CONDVAR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1PointsTo_html_a1161d97df5ffc8f11d1a34df9a4d5bdf"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">SVF::PointsTo::test_and_set</a></div><div class="ttdeci">bool test_and_set(u32_t n)</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00140">PointsTo.cpp:140</a></div></div>
69
+ <a href="ConditionalPT_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">//===- ConditionalPT.h -- Conditional points-to data structure----------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * ConditionalPT.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: 22/03/2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef CONDVAR_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define CONDVAR_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Cond&gt;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html"> 46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondVar.html">CondVar</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"> 48</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a0999a4b34face00af83b3b840920fd3f"> 50</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a0999a4b34face00af83b3b840920fd3f">CondVar</a>(<span class="keyword">const</span> Cond&amp; cond, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>) : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(cond),<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(id)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#afd729e068419ed45bb9da8d5920f8674"> 54</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#afd729e068419ed45bb9da8d5920f8674">CondVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; conVar) : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(conVar.<a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>), <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(conVar.<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>)</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="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69"> 58</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>() : <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>(), <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>(0) {}</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="classSVF_1_1CondVar.html#aad76f894d96617fb153cff0c875899a6"> 60</a></span>&#160; <a class="code" href="classSVF_1_1CondVar.html#aad76f894d96617fb153cff0c875899a6">~CondVar</a>() {}</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a7faf827845c5e820f1b63ce6523bc2a9">operator == </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> == rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>() &amp;&amp; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> == rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</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"><a class="line" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0"> 71</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0">operator != </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</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="classSVF_1_1CondVar.html#a90d6c2204c92db5c78991e6dfdcc5c80"> 78</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; <a class="code" href="classSVF_1_1CondVar.html#a90d6c2204c92db5c78991e6dfdcc5c80">operator= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a>&amp; rhs)</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">if</span>(*<span class="keyword">this</span>!=rhs)</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; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> = rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> = rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#add10a9d6f6a49cbd5dd0f5d47c423d27"> 92</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#add10a9d6f6a49cbd5dd0f5d47c423d27">operator &lt; </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar</a> &amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> != rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>())</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> &lt; rhs.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a> &lt; rhs.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe"> 100</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> Cond&amp; <a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>;</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="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a"> 104</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>;</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"><a class="line" href="classSVF_1_1CondVar.html#a4baf5fb20288491c96827177f9965cc4"> 109</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondVar.html#a4baf5fb20288491c96827177f9965cc4">toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;&lt;&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>.toString() &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a01eb971ccd4ac623fa3cd9bb41cc696d"> 117</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a>&amp; operator&lt;&lt; (OutStream &amp;o, const CondVar&lt;Cond&gt; &amp;cvar)</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; o &lt;&lt; cvar.toString();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df"> 123</a></span>&#160; Cond <a class="code" href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">m_cond</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a"> 124</a></span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1CondVar.html#a26fd04b3f2d45f0c230e1823f3eea49a">m_id</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;};</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Element&gt;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html"> 131</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet</a></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3fcc7079d72b0b392731ae7bf1ef2939"> 133</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;</a> <a class="code" href="classSVF_1_1CondStdSet.html#a3fcc7079d72b0b392731ae7bf1ef2939">ElementSet</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a6d82b5ddafa28542ce65adb0cc56cdce"> 136</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;::iterator</a> <a class="code" href="classSVF_1_1CondStdSet.html#a6d82b5ddafa28542ce65adb0cc56cdce">iterator</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a55152b7749868cc25f1c3c33ea57a650"> 137</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;Element&gt;::const_iterator</a> <a class="code" href="classSVF_1_1CondStdSet.html#a55152b7749868cc25f1c3c33ea57a650">const_iterator</a>;</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="classSVF_1_1CondStdSet.html#a1f3e8aa09ca8e7f252525e35c4886c5b"> 139</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#a1f3e8aa09ca8e7f252525e35c4886c5b">CondStdSet</a>() {}</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#abc67e77de2d1363af92c3bca2ccccbf1"> 140</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#abc67e77de2d1363af92c3bca2ccccbf1">~CondStdSet</a>() {}</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3f1885562bb34c3ccbd15117788725e0"> 143</a></span>&#160; <a class="code" href="classSVF_1_1CondStdSet.html#a3f1885562bb34c3ccbd15117788725e0">CondStdSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; cptsSet) : elements(cptsSet.getElementSet())</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="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a3e72341580263f3a9b48ce0e8c7bbbec"> 148</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a3e72341580263f3a9b48ce0e8c7bbbec">test_and_set</a>(<span class="keyword">const</span> Element&amp; var)</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"> 150</span>&#160; <span class="keywordflow">return</span> elements.insert(var).second;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a6bf6fafc6f8391dbff08a6bd9d07f4d4"> 153</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a6bf6fafc6f8391dbff08a6bd9d07f4d4">test</a>(<span class="keyword">const</span> Element&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> (elements.find(var) != elements.end());</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#ae11deddad534be115d29daad08c90599"> 158</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keyword">const</span> Element&amp; var)</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; elements.insert(var);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a857396d9e820a9fab8a498d981855e2a"> 163</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a857396d9e820a9fab8a498d981855e2a">reset</a>(<span class="keyword">const</span> Element&amp; var)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; elements.erase(var);</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="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76"> 170</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">return</span> elements.empty();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b"> 174</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b">size</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> elements.size();</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"><a class="line" href="classSVF_1_1CondStdSet.html#aa19e82905537f3ae41f64fce070ee555"> 178</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondStdSet.html#aa19e82905537f3ae41f64fce070ee555">count</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> size();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a4c49e2964276825744ffce26fc43ec36"> 185</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a4c49e2964276825744ffce26fc43ec36">clear</a>()</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; elements.clear();</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="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038"> 192</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>()</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"> 194</span>&#160; <span class="keywordflow">return</span> elements.begin();</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"><a class="line" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3"> 196</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>()</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> elements.end();</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="classSVF_1_1CondStdSet.html#a76fb2382bf424638ed8e03cb48cdc90e"> 200</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#a76fb2382bf424638ed8e03cb48cdc90e">begin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> elements.begin();</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="classSVF_1_1CondStdSet.html#accc5305781696701c00245ed1e8a25a3"> 204</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondStdSet.html#accc5305781696701c00245ed1e8a25a3">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> elements.end();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</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="classSVF_1_1CondStdSet.html#a90e4c4ead1cbdca01c0be801a68b005b"> 212</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a90e4c4ead1cbdca01c0be801a68b005b">operator|=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">const</span> ElementSet&amp; rhsElementSet = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span>(rhsElementSet.empty() || (*<span class="keyword">this</span>==rhs))</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> oldSize = elements.size();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; elements.insert(rhsElementSet.begin(),rhsElementSet.end());</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> oldSize!=elements.size();</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"><a class="line" href="classSVF_1_1CondStdSet.html#abb97324d865818f0a51992ee86d1c5ad"> 221</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a9d6c986a34096a3552a6385ccbb724e4">operator&amp;=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)</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="keywordflow">if</span>(rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>() || (*<span class="keyword">this</span> == rhs))</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">for</span> (const_iterator i = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(); i != rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>(); ++i)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (elements.find(*i) == elements.end())</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; elements.erase(*i);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> changed;</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"><a class="line" href="classSVF_1_1CondStdSet.html#a060a01d33fcd5ed4dfcaecb3d24cda07"> 236</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a060a01d33fcd5ed4dfcaecb3d24cda07">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> elements!=rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a6697d9c3d1107db2be430b8e8b670cb5"> 240</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#a6697d9c3d1107db2be430b8e8b670cb5">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span> ((*<span class="keyword">this</span> != rhs) == <span class="keyword">false</span>);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a9fa868a473993d0244431d640799ce98"> 244</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; <a class="code" href="classSVF_1_1CondStdSet.html#a9fa868a473993d0244431d640799ce98">operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)</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="keywordflow">if</span>(*<span class="keyword">this</span>!=rhs)</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; elements = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>();</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="keywordflow">return</span> *<span class="keyword">this</span>;</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"><a class="line" href="classSVF_1_1CondStdSet.html#ad3c38bb031419dd583a9cb0314e76afd"> 252</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&lt;(const CondStdSet&lt;Element&gt;&amp; rhs) <span class="keyword">const</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> elements &lt; rhs.getElementSet();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#ac422c3fb8bce1378d69c234e6b11fdb1"> 261</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondStdSet.html#ac422c3fb8bce1378d69c234e6b11fdb1">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">CondStdSet&lt;Element&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span> (empty() &amp;&amp; rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a0305cbf452b4e858e464023727417d76">empty</a>())</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">for</span> (const_iterator i = rhs.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(); i != rhs.<a class="code" href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">end</a>(); ++i)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (elements.find(*i) != elements.end())</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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"> 271</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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;</div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a07267b0a4f7cfeaa6d1f7d722932c4d5"> 274</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondStdSet.html#a07267b0a4f7cfeaa6d1f7d722932c4d5">toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">for</span> (const_iterator i = elements.begin(); i != elements.end(); ++i)</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; rawstr &lt;&lt; (*i).toString() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</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"> 283</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;} &quot;</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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"><a class="line" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320"> 287</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> ElementSet&amp; <a class="code" href="classSVF_1_1CondStdSet.html#a29892f43cc8420d4d2b4046140476320">getElementSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> elements;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a347097404761b16a077eac1ae9fbfd94"> 293</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondStdSet.html#a347097404761b16a077eac1ae9fbfd94">checkAndRemap</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1CondStdSet.html#a1caece9a66b6617b89037fd8211f2934"> 296</a></span>&#160; ElementSet <a class="code" href="classSVF_1_1CondStdSet.html#a1caece9a66b6617b89037fd8211f2934">elements</a>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;};</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Cond&gt;</div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html"> 304</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet</a></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aaddc3f78a624de59dda6f078ba63ba52"> 307</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Cond, PointsTo&gt;</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#aaddc3f78a624de59dda6f078ba63ba52">CondPts</a>;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077"> 308</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> CondPts::iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPtsIter</a>;</div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aa9d3a8c42b6df3fa9c2e7bcd7af75e16"> 309</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> CondPts::const_iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#aa9d3a8c42b6df3fa9c2e7bcd7af75e16">CondPtsConstIter</a>;</div><div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a0ef73bd2c1b42439ee6f265e07f17514"> 310</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CondVar.html">CondVar&lt;Cond&gt;</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#a0ef73bd2c1b42439ee6f265e07f17514">SingleCondVar</a>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a3670dc2bb046f2d3e0d27dc02b32e62f"> 314</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#a3670dc2bb046f2d3e0d27dc02b32e62f">CondPointsToSet</a>()</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; }</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a7217769c21c50c44f139006ec44d3a6f"> 317</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#a7217769c21c50c44f139006ec44d3a6f">CondPointsToSet</a>(<span class="keyword">const</span> Cond&amp; cond, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts)</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; _condPts[cond] |= pts;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aad144061d006968ff4d6d21488b84801"> 324</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet.html#aad144061d006968ff4d6d21488b84801">CondPointsToSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cptsSet)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; _condPts = cptsSet.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>();</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac"> 332</a></span>&#160; <span class="keyword">inline</span> CondPts &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> _condPts;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ada240bc77570174a1d17ac097583fa78"> 336</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CondPts &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#ada240bc77570174a1d17ac097583fa78">pointsTo</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> _condPts;</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a03311162626acf16ad05b7b93248a92b"> 340</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a03311162626acf16ad05b7b93248a92b">pointsTo</a>(Cond cond)<span class="keyword"> const</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; CondPtsConstIter it = _condPts.find(cond);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; assert(it!=_condPts.end() &amp;&amp; <span class="stringliteral">&quot;do not have pts of such condition!&quot;</span>);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0"> 346</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(Cond cond)<span class="keyword"> const</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> (_condPts.find(cond) != _condPts.end());</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a8775ef2c073af6c8055c3f5b0035288f"> 350</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;<a class="code" href="classSVF_1_1CondPointsToSet.html#a8775ef2c073af6c8055c3f5b0035288f">pointsTo</a>(Cond cond)</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> _condPts[cond];</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3"> 358</a></span>&#160; <span class="keyword">inline</span> CondPtsIter <a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>()</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="keywordflow">return</span> _condPts.begin();</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"><a class="line" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea"> 362</a></span>&#160; <span class="keyword">inline</span> CondPtsIter <a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>()</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="keywordflow">return</span> _condPts.end();</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad26570b94c56d6d2ae1cd5093ac66670"> 366</a></span>&#160; <span class="keyword">inline</span> CondPtsConstIter <a class="code" href="classSVF_1_1CondPointsToSet.html#ad26570b94c56d6d2ae1cd5093ac66670">cptsBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> _condPts.begin();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aa4c47630b9a06d70375daf5e9237303d"> 370</a></span>&#160; <span class="keyword">inline</span> CondPtsConstIter <a class="code" href="classSVF_1_1CondPointsToSet.html#aa4c47630b9a06d70375daf5e9237303d">cptsEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> _condPts.end();</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad81774f0ad13fb21579180fc15affd7b"> 376</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad81774f0ad13fb21579180fc15affd7b">clear</a>()</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; _condPts.clear();</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a8d8f9e91b62b94d876f34066de7944d4"> 382</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a8d8f9e91b62b94d876f34066de7944d4">numElement</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (_condPts.empty())</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordtype">unsigned</span> num = 0;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">for</span> (CondPtsConstIter it = cptsBegin(); it != cptsEnd(); it++)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts = it-&gt;second;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; num += pts.<a class="code" href="classSVF_1_1PointsTo.html#aa0d4ee196b91fce626f3f15bcc5599e4">count</a>();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> num;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff"> 398</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff">empty</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">return</span> numElement()==0;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a42056d7b29e50a3ed8a8db95674d24b2"> 406</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; <a class="code" href="classSVF_1_1CondPointsToSet.html#a42056d7b29e50a3ed8a8db95674d24b2">operator=</a>(</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; other)</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; _condPts = other.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>();</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#abe02e0bdcfddde7251b7d35e916c8f02"> 414</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#abe02e0bdcfddde7251b7d35e916c8f02">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="comment">// Always remember give the typename when define a template variable</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() != rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().size())</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), erit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">for</span> (; lit != elit &amp;&amp; rit != erit; ++lit, ++rit)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">const</span> Cond&amp; rc = rit-&gt;first;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span> (lc != rc || lit-&gt;second != rit-&gt;second)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#afcbb2cae75a5dd7947cb22c440b8fd0b"> 434</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#afcbb2cae75a5dd7947cb22c440b8fd0b">aliased</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span> (pointsTo().empty() || rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">for</span> (; lit != elit; ++lit)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = lit-&gt;second;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().find(lc);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span>(rit !=rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().end())</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">intersects</a>(rpts))</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#acefec4fbacde1099d3dc81ab45ab9b8c"> 458</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#acefec4fbacde1099d3dc81ab45ab9b8c">isSubset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() &gt; rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().size())</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">for</span> (; lit != elit; ++lit)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; CondPtsConstIter rit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().find(lc);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (rit == rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().end())</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = lit-&gt;second;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (!rpts.<a class="code" href="classSVF_1_1PointsTo.html#ab31a53693fe070767b8de74e88091cd8">contains</a>(pts))</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a89d24257bd1436286dcbb025dd405b52"> 484</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a89d24257bd1436286dcbb025dd405b52">intersects</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>* rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (pointsTo().empty() &amp;&amp; rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; CondPtsConstIter it = rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), eit = rhs-&gt;<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(cond))</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rhs_pts= it-&gt;second;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts= pointsTo(cond);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">intersects</a>(rhs_pts))</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a57fdbfc5bc0bc7eb7a8efefdcc689852"> 507</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a57fdbfc5bc0bc7eb7a8efefdcc689852">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts2)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span> (cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; clear();</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; (*this) = cpts1;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; CondPtsConstIter it1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>(), eit1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">for</span> (; it1 != eit1; ++it1)</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it1-&gt;first;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts1 = it1-&gt;second;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(cond);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">if</span> (cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts2 = cpts2.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">intersectWithComplement</a>(pts1, pts2);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; pts = pts1;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div><div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a5a7ab3c22b3726541955b5be8a62aab6"> 540</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a5a7ab3c22b3726541955b5be8a62aab6">intersectWithComplement</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; cpts1)</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">if</span> (empty() || cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>().empty())</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; CondPtsIter it = cptsBegin(), eit = cptsEnd();</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">if</span> (cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts1 = cpts1.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">intersectWithComplement</a>(pts1);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;</div><div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ab86fdf68183d05f66e1405c6346038c4"> 564</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a9d6c986a34096a3552a6385ccbb724e4">operator &amp;= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span> (empty())</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff">empty</a>())</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; clear();</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">for</span> (CondPtsIter it = cptsBegin(), eit = cptsEnd(); it != eit; ++it)</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">const</span> Cond&amp; cond = it-&gt;first;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#ab1d20dfe6f243f7a09a8e2face097cc0">hasPointsTo</a>(cond))</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">if</span> (pts &amp;= rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a63f09ca69e00b317de29af6a6a12daac">pointsTo</a>(cond))</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">if</span> (!pts.<a class="code" href="classSVF_1_1PointsTo.html#a13746982a11d0cab57e5919d53bfbec8">empty</a>())</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#a14ce3ef70959f10e777e1090fd697116">clear</a>();</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; }</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#af06ca0ddfcdca69199fbc9ab42f98558"> 601</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#af06ca0ddfcdca69199fbc9ab42f98558">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;</div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a74c50cfaf788a828a4fc97eba703ec4e"> 610</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#a97ff28f5dfd5c31e6ef351de3cdad85d">operator |= </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a>&amp; rhs)</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; CondPtsConstIter rhsIt = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">cptsBegin</a>();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; CondPtsConstIter rhsEit = rhs.<a class="code" href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">cptsEnd</a>();</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">for</span> (; rhsIt != rhsEit; ++rhsIt)</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keyword">const</span> Cond&amp; cond = rhsIt-&gt;first;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rhsPts = rhsIt-&gt;second;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(cond);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">if</span> ((pts |= rhsPts))</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="comment">// TODO: try to use an efficient method to compare two conditional points-to set.</span></div><div class="line"><a name="l00634"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a54d9d3f3a38bf4066cd930845f86a63c"> 634</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator&lt; (const CondPointsToSet&lt;Cond&gt;&amp; rhs) <span class="keyword">const</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (pointsTo().size() &lt; rhs.pointsTo().size())</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pointsTo().size() == rhs.pointsTo().size())</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; CondPtsConstIter lit = cptsBegin(), elit = cptsEnd();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; CondPtsConstIter rit = rhs.cptsBegin(), erit = rhs.cptsEnd();</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">for</span> (; lit != elit &amp;&amp; rit != erit; ++lit, ++rit)</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keyword">const</span> Cond&amp; lc = lit-&gt;first;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keyword">const</span> Cond&amp; rc = rit-&gt;first;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">if</span> (lc &lt; rc)</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lc == rc)</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; lpts = lit-&gt;second;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts = rit-&gt;second;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">if</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#aa0d4ee196b91fce626f3f15bcc5599e4">count</a>() &lt; rpts.<a class="code" href="classSVF_1_1PointsTo.html#aa0d4ee196b91fce626f3f15bcc5599e4">count</a>())</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#aa0d4ee196b91fce626f3f15bcc5599e4">count</a>() == rpts.<a class="code" href="classSVF_1_1PointsTo.html#aa0d4ee196b91fce626f3f15bcc5599e4">count</a>())</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> bit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">begin</a>();</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> eit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#a6e2ff63437d07a30cc6db35de032728a">end</a>();</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> rbit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">begin</a>();</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> reit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#a6e2ff63437d07a30cc6db35de032728a">end</a>();</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">for</span> (; bit != eit &amp;&amp; rbit != reit; bit++, rbit++)</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">if</span> (*bit &lt; *rbit)</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*bit &gt; *rbit)</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ac29ac1adefca6b34cd8e83fe3f0b4450"> 680</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ac29ac1adefca6b34cd8e83fe3f0b4450">test_and_set</a>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">test_and_set</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div><div class="line"><a name="l00685"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a1613b690473a4fcbae7bc41c3c5347d7"> 685</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a1613b690473a4fcbae7bc41c3c5347d7">test</a>(<span class="keyword">const</span> SingleCondVar&amp; var)<span class="keyword"> const</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()))</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aadf2576b55bbdb82d7affc8466c09861"> 694</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.get_cond());</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(var.get_id());</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div><div class="line"><a name="l00699"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#aced740c1aadf06b4a63630844fac2dd8"> 699</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#aced740c1aadf06b4a63630844fac2dd8">reset</a>(<span class="keyword">const</span> SingleCondVar&amp; var)</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">if</span> (hasPointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>()))</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = pointsTo(var.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; pts.<a class="code" href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6">reset</a>(var.<a class="code" href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">get_id</a>());</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="comment">// Print all points-to targets</span></div><div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a52392deae4011c4353a259c873efc0d6"> 711</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#a52392deae4011c4353a259c873efc0d6">dump</a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O)<span class="keyword"> const</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; CondPtsConstIter it = cptsBegin();</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; CondPtsConstIter eit = cptsEnd();</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">for</span> (; it != eit; it++)</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;pts{&quot;</span>;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVFUtil::dumpSet</a>(pts, O);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; }</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div><div class="line"><a name="l00723"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#abcd2c01ec21e30caa91dba06386912cb"> 723</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#abcd2c01ec21e30caa91dba06386912cb">dumpStr</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; CondPtsConstIter it = cptsBegin();</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; CondPtsConstIter eit = cptsEnd();</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">for</span> (; it != eit; it++)</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; {</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = it-&gt;second;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; str += <span class="stringliteral">&quot;pts{&quot;</span>;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> ii = pts.<a class="code" href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">begin</a>(), ie = pts.<a class="code" href="classSVF_1_1PointsTo.html#a6e2ff63437d07a30cc6db35de032728a">end</a>();</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordtype">char</span> int2str[16];</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; snprintf(int2str, <span class="keyword">sizeof</span>(int2str), <span class="stringliteral">&quot;%d&quot;</span>, *ii);</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; str += int2str;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; str += <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; str += <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; }</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; }</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div><div class="line"><a name="l00749"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html"> 749</a></span>&#160; <span class="keyword">class </span><a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00752"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a8a3d10d0aaf4708e7e44bedc6be077e0"> 752</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a8a3d10d0aaf4708e7e44bedc6be077e0">CondPtsSetIterator</a>(<a class="code" href="classSVF_1_1CondPointsToSet.html">CondPointsToSet&lt;Cond&gt;</a> &amp;<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <span class="keywordtype">bool</span> ae = <span class="keyword">false</span>)</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; : _curIter(n.cptsBegin()), _endIter(n.cptsEnd()),</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; _ptIter(_curIter-&gt;second.begin()), _ptEndIter(_curIter-&gt;second.end()), atEnd(ae) {}</div><div class="line"><a name="l00755"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a24ccc2dba1da8e241a595c84dde840ab"> 755</a></span>&#160; <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a24ccc2dba1da8e241a595c84dde840ab">~CondPtsSetIterator</a>() {}</div><div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a4b1e8adca9e8d1b046930e9d2abeb08f"> 756</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0">operator != </a>(<span class="keywordtype">int</span> val)</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">return</span> _curIter != _endIter;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ab069959f9b4b2a0e1441281acb666a60"> 762</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ab069959f9b4b2a0e1441281acb666a60">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> &amp;RHS)<span class="keyword"> const</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="comment">// If they are both at the end, ignore the rest of the fields.</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">if</span> (atEnd &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a>)</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="comment">// Otherwise they are the same if they have the same condVar</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">return</span> atEnd == RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a> &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae">_curIter</a> == _curIter &amp;&amp; RHS.<a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9">_ptIter</a> == _ptIter;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; }</div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a82068bca4dfc43402625638dcd1b9775"> 770</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a82068bca4dfc43402625638dcd1b9775">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> &amp;RHS)<span class="keyword"> const</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == RHS);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; }</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#abd22ed3c5dc9f35968c9a179d292b764"> 775</a></span>&#160; <span class="keywordtype">void</span> operator ++(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; {</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">if</span>(atEnd == <span class="keyword">true</span>)</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">if</span>(_ptIter==_ptEndIter)</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">if</span>(_curIter == _endIter)</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; atEnd = <span class="keyword">true</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; }</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; _curIter++;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; _ptIter = _curIter-&gt;second.begin();</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; _ptIter = _curIter-&gt;second.end();</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; _ptIter++;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div><div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#aaaed8caef122453b5ff543826e1757e0"> 794</a></span>&#160; SingleCondVar <a class="code" href="namespaceSVF.html#abf0dfb872989751b13069f859ef408e1">operator *</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; {</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; SingleCondVar temp_var(cond(), *_ptIter);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">return</span> temp_var;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; }</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;</div><div class="line"><a name="l00801"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a3ccbb22634968d2fca0f6aba7b57971e"> 801</a></span>&#160; Cond <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a3ccbb22634968d2fca0f6aba7b57971e">cond</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">return</span> _curIter-&gt;first;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; }</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00807"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae"> 807</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPointsToSet&lt;Cond&gt;::CondPtsIter</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a991ef07c78bd5a80cd62a398514f38ae">_curIter</a>;</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a9ffed93e0d4ae4b1431689b7fa5d6082"> 808</a></span>&#160; <span class="keyword">typename</span> <a class="code" href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">CondPointsToSet&lt;Cond&gt;::CondPtsIter</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a9ffed93e0d4ae4b1431689b7fa5d6082">_endIter</a>;</div><div class="line"><a name="l00809"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9"> 809</a></span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9">_ptIter</a>;</div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ae5fe9ff25c62386cbdd97d30b64b6972"> 810</a></span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ae5fe9ff25c62386cbdd97d30b64b6972">_ptEndIter</a>;</div><div class="line"><a name="l00811"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0"> 811</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ad22614f30570619802e23715d1d5eaf0">atEnd</a>;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; };</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00815"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a76d4c06b04161738351a813ae406aa83"> 815</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">CondPtsSetIterator</a> <a class="code" href="classSVF_1_1CondPointsToSet.html#a76d4c06b04161738351a813ae406aa83">iterator</a>;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;</div><div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a3521ec3be48cc03d9d3f562cb088a9ad"> 818</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a3521ec3be48cc03d9d3f562cb088a9ad">begin</a>()</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a5ead697952ada3fbb07da3459a2b1b86"> 823</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a5ead697952ada3fbb07da3459a2b1b86">end</a>()</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; {</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>,<span class="keyword">true</span>);</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#acec077e130e49ac66a5c3e464a73dec2"> 828</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#acec077e130e49ac66a5c3e464a73dec2">begin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;</div><div class="line"><a name="l00833"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#a537890d918d23abeea39bc73198f7365"> 833</a></span>&#160; <span class="keyword">inline</span> iterator <a class="code" href="classSVF_1_1CondPointsToSet.html#a537890d918d23abeea39bc73198f7365">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>,<span class="keyword">true</span>);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; }</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00840"></a><span class="lineno"><a class="line" href="classSVF_1_1CondPointsToSet.html#ad0e1a70889a7bf2cb1b201a129128c52"> 840</a></span>&#160; CondPts <a class="code" href="classSVF_1_1CondPointsToSet.html#ad0e1a70889a7bf2cb1b201a129128c52">_condPts</a>;</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;};</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Cond&gt;</div><div class="line"><a name="l00847"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html"> 847</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;const <a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>&lt;Cond&gt;&gt;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;{</div><div class="line"><a name="l00849"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ae66ac1a976e498f88e382988f17b4df5"> 849</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ae66ac1a976e498f88e382988f17b4df5">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">SVF::CondVar&lt;Cond&gt;</a> &amp;cv)<span class="keyword"> const</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; std::hash&lt;Cond&gt; h;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">return</span> h(cv.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;};</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Cond&gt;</div><div class="line"><a name="l00857"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html"> 857</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;<a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">CondVar</a>&lt;Cond&gt;&gt;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;{</div><div class="line"><a name="l00859"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ac9b6dd9b7dd77c0303c1f4f5877d87db"> 859</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ac9b6dd9b7dd77c0303c1f4f5877d87db">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondVar.html">SVF::CondVar&lt;Cond&gt;</a> &amp;cv)<span class="keyword"> const</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; std::hash&lt;Cond&gt; h;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">return</span> h(cv.<a class="code" href="classSVF_1_1CondVar.html#af84e7bfcff909009be5e109c600c63fe">get_cond</a>());</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; }</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;};</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Element&gt;</div><div class="line"><a name="l00867"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html"> 867</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;<a class="code" href="namespaceSVF.html">SVF</a>::CondStdSet&lt;Element&gt;&gt;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;{</div><div class="line"><a name="l00869"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html#a0d50f7a011b2174e5c8064a8b03f8529"> 869</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html#a0d50f7a011b2174e5c8064a8b03f8529">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondStdSet.html">SVF::CondStdSet&lt;Element&gt;</a> &amp;css)<span class="keyword"> const</span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="comment">// TODO: this is not a very good hash, but we probably won&#39;t be</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="comment">// using it for now. Needed for other templates to compile...</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;Element, unsigned&gt;</a>&gt; h;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(*css.<a class="code" href="classSVF_1_1CondStdSet.html#adf095111734d81b6ad1908a7f795b038">begin</a>(), css.<a class="code" href="classSVF_1_1CondStdSet.html#afa190562e8b85630845617c23fc5a16b">size</a>()));</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; }</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;};</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CONDVAR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1PointsTo_html_a1161d97df5ffc8f11d1a34df9a4d5bdf"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a1161d97df5ffc8f11d1a34df9a4d5bdf">SVF::PointsTo::test_and_set</a></div><div class="ttdeci">bool test_and_set(u32_t n)</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00144">PointsTo.cpp:144</a></div></div>
70
70
  <div class="ttc" id="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4_html_ae66ac1a976e498f88e382988f17b4df5"><div class="ttname"><a href="structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ae66ac1a976e498f88e382988f17b4df5">std::hash&lt; const SVF::CondVar&lt; Cond &gt; &gt;::operator()</a></div><div class="ttdeci">size_t operator()(const SVF::CondVar&lt; Cond &gt; &amp;cv) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00849">ConditionalPT.h:849</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_ada240bc77570174a1d17ac097583fa78"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#ada240bc77570174a1d17ac097583fa78">SVF::CondPointsToSet::pointsTo</a></div><div class="ttdeci">const CondPts &amp; pointsTo(void) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00336">ConditionalPT.h:336</a></div></div>
72
72
  <div class="ttc" id="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4_html_a0d50f7a011b2174e5c8064a8b03f8529"><div class="ttname"><a href="structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html#a0d50f7a011b2174e5c8064a8b03f8529">std::hash&lt; SVF::CondStdSet&lt; Element &gt; &gt;::operator()</a></div><div class="ttdeci">size_t operator()(const SVF::CondStdSet&lt; Element &gt; &amp;css) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00869">ConditionalPT.h:869</a></div></div>
73
73
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeb570e9267fd7b189bd1bc877896d7ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVF::SVFUtil::dumpSet</a></div><div class="ttdeci">void dumpSet(NodeBS To, OutStream &amp;O=SVFUtil::outs())</div><div class="ttdoc">Dump sparse bitvector set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00146">SVFUtil.cpp:146</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1CondVar_html_a5d64fa2be89051cd03301e3b07bffd6a"><div class="ttname"><a href="classSVF_1_1CondVar.html#a5d64fa2be89051cd03301e3b07bffd6a">SVF::CondVar::get_id</a></div><div class="ttdeci">NodeID get_id() const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00104">ConditionalPT.h:104</a></div></div>
75
+ <div class="ttc" id="classSVF_1_1PointsTo_html_a13746982a11d0cab57e5919d53bfbec8"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a13746982a11d0cab57e5919d53bfbec8">SVF::PointsTo::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdoc">Returns true if set is empty. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00098">PointsTo.cpp:98</a></div></div>
75
76
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a93c232ef7e5dea652622da7f994e1dc3"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a93c232ef7e5dea652622da7f994e1dc3">SVF::CondStdSet::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00196">ConditionalPT.h:196</a></div></div>
76
77
  <div class="ttc" id="namespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set&lt; Key, Compare, Allocator &gt; OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00102">SVFType.h:102</a></div></div>
77
78
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_ac29ac1adefca6b34cd8e83fe3f0b4450"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#ac29ac1adefca6b34cd8e83fe3f0b4450">SVF::CondPointsToSet::test_and_set</a></div><div class="ttdeci">bool test_and_set(const SingleCondVar &amp;var)</div><div class="ttdoc">Test and set. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00680">ConditionalPT.h:680</a></div></div>
@@ -79,7 +80,8 @@ $(function() {
79
80
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a07267b0a4f7cfeaa6d1f7d722932c4d5"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a07267b0a4f7cfeaa6d1f7d722932c4d5">SVF::CondStdSet::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00274">ConditionalPT.h:274</a></div></div>
80
81
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_acec077e130e49ac66a5c3e464a73dec2"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#acec077e130e49ac66a5c3e464a73dec2">SVF::CondPointsToSet::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00828">ConditionalPT.h:828</a></div></div>
81
82
  <div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
82
- <div class="ttc" id="classSVF_1_1PointsTo_html_af81f9e91eec4bf82ccfb867c2415f9bd"><div class="ttname"><a href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">SVF::PointsTo::intersectWithComplement</a></div><div class="ttdeci">bool intersectWithComplement(const PointsTo &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00282">PointsTo.cpp:282</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1PointsTo_html_a6e2ff63437d07a30cc6db35de032728a"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a6e2ff63437d07a30cc6db35de032728a">SVF::PointsTo::end</a></div><div class="ttdeci">const_iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00132">PointsTo.h:132</a></div></div>
84
+ <div class="ttc" id="classSVF_1_1PointsTo_html_af81f9e91eec4bf82ccfb867c2415f9bd"><div class="ttname"><a href="classSVF_1_1PointsTo.html#af81f9e91eec4bf82ccfb867c2415f9bd">SVF::PointsTo::intersectWithComplement</a></div><div class="ttdeci">bool intersectWithComplement(const PointsTo &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00286">PointsTo.cpp:286</a></div></div>
83
85
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_a5a7ab3c22b3726541955b5be8a62aab6"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#a5a7ab3c22b3726541955b5be8a62aab6">SVF::CondPointsToSet::intersectWithComplement</a></div><div class="ttdeci">void intersectWithComplement(const CondPointsToSet&lt; Cond &gt; &amp;cpts1)</div><div class="ttdoc">Result of cur &amp; ~cpts1 is stored into this bitmap. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00540">ConditionalPT.h:540</a></div></div>
84
86
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a3e72341580263f3a9b48ce0e8c7bbbec"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a3e72341580263f3a9b48ce0e8c7bbbec">SVF::CondStdSet::test_and_set</a></div><div class="ttdeci">bool test_and_set(const Element &amp;var)</div><div class="ttdoc">Return true if the element is added. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00148">ConditionalPT.h:148</a></div></div>
85
87
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_aa9d3a8c42b6df3fa9c2e7bcd7af75e16"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#aa9d3a8c42b6df3fa9c2e7bcd7af75e16">SVF::CondPointsToSet::CondPtsConstIter</a></div><div class="ttdeci">CondPts::const_iterator CondPtsConstIter</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00309">ConditionalPT.h:309</a></div></div>
@@ -96,7 +98,6 @@ $(function() {
96
98
  <div class="ttc" id="classSVF_1_1CondVar_html_a93101c4401ed4ced33d64b5726e9cd69"><div class="ttname"><a href="classSVF_1_1CondVar.html#a93101c4401ed4ced33d64b5726e9cd69">SVF::CondVar::CondVar</a></div><div class="ttdeci">CondVar()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00058">ConditionalPT.h:58</a></div></div>
97
99
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a4c49e2964276825744ffce26fc43ec36"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a4c49e2964276825744ffce26fc43ec36">SVF::CondStdSet::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clear set. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00185">ConditionalPT.h:185</a></div></div>
98
100
  <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
99
- <div class="ttc" id="classSVF_1_1PointsTo_html_acb5af4139d42dcd19c6327520f074e91"><div class="ttname"><a href="classSVF_1_1PointsTo.html#acb5af4139d42dcd19c6327520f074e91">SVF::PointsTo::clear</a></div><div class="ttdeci">void clear(void)</div><div class="ttdoc">Empty the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00119">PointsTo.cpp:119</a></div></div>
100
101
  <div class="ttc" id="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4_html_ac9b6dd9b7dd77c0303c1f4f5877d87db"><div class="ttname"><a href="structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html#ac9b6dd9b7dd77c0303c1f4f5877d87db">std::hash&lt; SVF::CondVar&lt; Cond &gt; &gt;::operator()</a></div><div class="ttdeci">size_t operator()(const SVF::CondVar&lt; Cond &gt; &amp;cv) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00859">ConditionalPT.h:859</a></div></div>
101
102
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_abcd2c01ec21e30caa91dba06386912cb"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#abcd2c01ec21e30caa91dba06386912cb">SVF::CondPointsToSet::dumpStr</a></div><div class="ttdeci">std::string dumpStr() const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00723">ConditionalPT.h:723</a></div></div>
102
103
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_a3521ec3be48cc03d9d3f562cb088a9ad"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#a3521ec3be48cc03d9d3f562cb088a9ad">SVF::CondPointsToSet::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00818">ConditionalPT.h:818</a></div></div>
@@ -104,10 +105,10 @@ $(function() {
104
105
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a9fa868a473993d0244431d640799ce98"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a9fa868a473993d0244431d640799ce98">SVF::CondStdSet::operator=</a></div><div class="ttdeci">CondStdSet&lt; Element &gt; &amp; operator=(const CondStdSet&lt; Element &gt; &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00244">ConditionalPT.h:244</a></div></div>
105
106
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_a7217769c21c50c44f139006ec44d3a6f"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#a7217769c21c50c44f139006ec44d3a6f">SVF::CondPointsToSet::CondPointsToSet</a></div><div class="ttdeci">CondPointsToSet(const Cond &amp;cond, const PointsTo &amp;pts)</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00317">ConditionalPT.h:317</a></div></div>
106
107
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_ad0e1a70889a7bf2cb1b201a129128c52"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#ad0e1a70889a7bf2cb1b201a129128c52">SVF::CondPointsToSet::_condPts</a></div><div class="ttdeci">CondPts _condPts</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00840">ConditionalPT.h:840</a></div></div>
107
- <div class="ttc" id="namespaceSVF_html_a9d6c986a34096a3552a6385ccbb724e4"><div class="ttname"><a href="namespaceSVF.html#a9d6c986a34096a3552a6385ccbb724e4">SVF::operator&amp;=</a></div><div class="ttdeci">bool operator&amp;=(SparseBitVector&lt; ElementSize &gt; *LHS, const SparseBitVector&lt; ElementSize &gt; &amp;RHS)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01144">SparseBitVector.h:1144</a></div></div>
108
+ <div class="ttc" id="namespaceSVF_html_a9d6c986a34096a3552a6385ccbb724e4"><div class="ttname"><a href="namespaceSVF.html#a9d6c986a34096a3552a6385ccbb724e4">SVF::operator&amp;=</a></div><div class="ttdeci">bool operator&amp;=(SparseBitVector&lt; ElementSize &gt; *LHS, const SparseBitVector&lt; ElementSize &gt; &amp;RHS)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01136">SparseBitVector.h:1136</a></div></div>
108
109
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_a0ef73bd2c1b42439ee6f265e07f17514"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#a0ef73bd2c1b42439ee6f265e07f17514">SVF::CondPointsToSet::SingleCondVar</a></div><div class="ttdeci">CondVar&lt; Cond &gt; SingleCondVar</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00310">ConditionalPT.h:310</a></div></div>
109
110
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
110
- <div class="ttc" id="classSVF_1_1PointsTo_html_af61271fefa574c39f405fdfee59a8b3f"><div class="ttname"><a href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">SVF::PointsTo::test</a></div><div class="ttdeci">bool test(u32_t n) const</div><div class="ttdoc">Returns true if n is in this set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00127">PointsTo.cpp:127</a></div></div>
111
+ <div class="ttc" id="classSVF_1_1PointsTo_html_af61271fefa574c39f405fdfee59a8b3f"><div class="ttname"><a href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">SVF::PointsTo::test</a></div><div class="ttdeci">bool test(u32_t n) const</div><div class="ttdoc">Returns true if n is in this set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00131">PointsTo.cpp:131</a></div></div>
111
112
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_ad9e4dea4b65d5f4a903a3cf89a421077"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#ad9e4dea4b65d5f4a903a3cf89a421077">SVF::CondPointsToSet::CondPtsIter</a></div><div class="ttdeci">CondPts::iterator CondPtsIter</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00308">ConditionalPT.h:308</a></div></div>
112
113
  <div class="ttc" id="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator_html_a24ccc2dba1da8e241a595c84dde840ab"><div class="ttname"><a href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a24ccc2dba1da8e241a595c84dde840ab">SVF::CondPointsToSet::CondPtsSetIterator::~CondPtsSetIterator</a></div><div class="ttdeci">~CondPtsSetIterator()</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00755">ConditionalPT.h:755</a></div></div>
113
114
  <div class="ttc" id="cJSON_8cpp_html_ab6e2ea6dc7bd57d1483413449998230a"><div class="ttname"><a href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a></div><div class="ttdeci">cJSON * n</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02558">cJSON.cpp:2558</a></div></div>
@@ -118,25 +119,23 @@ $(function() {
118
119
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_a5ead697952ada3fbb07da3459a2b1b86"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#a5ead697952ada3fbb07da3459a2b1b86">SVF::CondPointsToSet::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00823">ConditionalPT.h:823</a></div></div>
119
120
  <div class="ttc" id="classSVF_1_1CondVar_html"><div class="ttname"><a href="classSVF_1_1CondVar.html">SVF::CondVar</a></div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00046">ConditionalPT.h:46</a></div></div>
120
121
  <div class="ttc" id="classSVF_1_1CondVar_html_a90b13685d2126f8c10dde4a504bb28df"><div class="ttname"><a href="classSVF_1_1CondVar.html#a90b13685d2126f8c10dde4a504bb28df">SVF::CondVar::m_cond</a></div><div class="ttdeci">Cond m_cond</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00123">ConditionalPT.h:123</a></div></div>
121
- <div class="ttc" id="classSVF_1_1PointsTo_html_aa53962e561399bf493d1f2b9137356f6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00128">PointsTo.h:128</a></div></div>
122
122
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a6d82b5ddafa28542ce65adb0cc56cdce"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a6d82b5ddafa28542ce65adb0cc56cdce">SVF::CondStdSet::iterator</a></div><div class="ttdeci">OrderedSet&lt; Element &gt;::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00136">ConditionalPT.h:136</a></div></div>
123
123
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_aad144061d006968ff4d6d21488b84801"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#aad144061d006968ff4d6d21488b84801">SVF::CondPointsToSet::CondPointsToSet</a></div><div class="ttdeci">CondPointsToSet(const CondPointsToSet&lt; Cond &gt; &amp;cptsSet)</div><div class="ttdoc">Copy constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00324">ConditionalPT.h:324</a></div></div>
124
124
  <div class="ttc" id="namespaceSVF_html_abf0dfb872989751b13069f859ef408e1"><div class="ttname"><a href="namespaceSVF.html#abf0dfb872989751b13069f859ef408e1">SVF::operator*</a></div><div class="ttdeci">IntervalValue operator*(const IntervalValue &amp;lhs, const IntervalValue &amp;rhs)</div><div class="ttdoc">Multiply IntervalValues. </div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00476">IntervalValue.h:476</a></div></div>
125
125
  <div class="ttc" id="classSVF_1_1CondStdSet_html_abc67e77de2d1363af92c3bca2ccccbf1"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#abc67e77de2d1363af92c3bca2ccccbf1">SVF::CondStdSet::~CondStdSet</a></div><div class="ttdeci">~CondStdSet()</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00140">ConditionalPT.h:140</a></div></div>
126
126
  <div class="ttc" id="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator_html"><div class="ttname"><a href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html">SVF::CondPointsToSet::CondPtsSetIterator</a></div><div class="ttdoc">Conditional Points-to Set Iterator. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00749">ConditionalPT.h:749</a></div></div>
127
- <div class="ttc" id="classSVF_1_1PointsTo_html_a879783ba6629e500af9aa7dfcda2563d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">SVF::PointsTo::count</a></div><div class="ttdeci">u32_t count(void) const</div><div class="ttdoc">Returns number of elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00107">PointsTo.cpp:107</a></div></div>
128
127
  <div class="ttc" id="classSVF_1_1CondVar_html_a50321e5ead24c8a9d6c58998072634f0"><div class="ttname"><a href="classSVF_1_1CondVar.html#a50321e5ead24c8a9d6c58998072634f0">SVF::CondVar::operator!=</a></div><div class="ttdeci">bool operator!=(const CondVar &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00071">ConditionalPT.h:71</a></div></div>
129
- <div class="ttc" id="classSVF_1_1PointsTo_html_ac4688413177b49b37dbbfd3ed188d59b"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">SVF::PointsTo::empty</a></div><div class="ttdeci">bool empty(void) const</div><div class="ttdoc">Returns true if set is empty. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00094">PointsTo.cpp:94</a></div></div>
130
128
  <div class="ttc" id="classSVF_1_1CondStdSet_html_accc5305781696701c00245ed1e8a25a3"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#accc5305781696701c00245ed1e8a25a3">SVF::CondStdSet::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00204">ConditionalPT.h:204</a></div></div>
131
129
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_a537890d918d23abeea39bc73198f7365"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#a537890d918d23abeea39bc73198f7365">SVF::CondPointsToSet::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00833">ConditionalPT.h:833</a></div></div>
132
130
  <div class="ttc" id="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator_html_ae5fe9ff25c62386cbdd97d30b64b6972"><div class="ttname"><a href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#ae5fe9ff25c62386cbdd97d30b64b6972">SVF::CondPointsToSet::CondPtsSetIterator::_ptEndIter</a></div><div class="ttdeci">PointsTo::iterator _ptEndIter</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00810">ConditionalPT.h:810</a></div></div>
133
131
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_a89d24257bd1436286dcbb025dd405b52"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#a89d24257bd1436286dcbb025dd405b52">SVF::CondPointsToSet::intersects</a></div><div class="ttdeci">bool intersects(const CondPointsToSet&lt; Cond &gt; *rhs) const</div><div class="ttdoc">Return TRUE if this and RHS share any common element. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00484">ConditionalPT.h:484</a></div></div>
134
132
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_abe02e0bdcfddde7251b7d35e916c8f02"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#abe02e0bdcfddde7251b7d35e916c8f02">SVF::CondPointsToSet::operator==</a></div><div class="ttdeci">bool operator==(const CondPointsToSet&lt; Cond &gt; &amp;rhs) const</div><div class="ttdoc">Overloading operator ==. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00414">ConditionalPT.h:414</a></div></div>
135
133
  <div class="ttc" id="classSVF_1_1CondVar_html_afd729e068419ed45bb9da8d5920f8674"><div class="ttname"><a href="classSVF_1_1CondVar.html#afd729e068419ed45bb9da8d5920f8674">SVF::CondVar::CondVar</a></div><div class="ttdeci">CondVar(const CondVar &amp;conVar)</div><div class="ttdoc">Copy constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00054">ConditionalPT.h:54</a></div></div>
134
+ <div class="ttc" id="classSVF_1_1PointsTo_html_a14ce3ef70959f10e777e1090fd697116"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a14ce3ef70959f10e777e1090fd697116">SVF::PointsTo::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Empty the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00123">PointsTo.cpp:123</a></div></div>
136
135
  <div class="ttc" id="classSVF_1_1CondVar_html_a0999a4b34face00af83b3b840920fd3f"><div class="ttname"><a href="classSVF_1_1CondVar.html#a0999a4b34face00af83b3b840920fd3f">SVF::CondVar::CondVar</a></div><div class="ttdeci">CondVar(const Cond &amp;cond, NodeID id)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00050">ConditionalPT.h:50</a></div></div>
137
136
  <div class="ttc" id="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator_html_a2b34cb72c2ecc8e4fc7071b6ed814df9"><div class="ttname"><a href="classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html#a2b34cb72c2ecc8e4fc7071b6ed814df9">SVF::CondPointsToSet::CondPtsSetIterator::_ptIter</a></div><div class="ttdeci">PointsTo::iterator _ptIter</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00809">ConditionalPT.h:809</a></div></div>
138
- <div class="ttc" id="classSVF_1_1PointsTo_html_ad78e4109c839914c4f7e37ca78046f1d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">SVF::PointsTo::intersects</a></div><div class="ttdeci">bool intersects(const PointsTo &amp;rhs) const</div><div class="ttdoc">Returns true if this set and rhs share any elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00185">PointsTo.cpp:185</a></div></div>
139
- <div class="ttc" id="classSVF_1_1PointsTo_html_a1ef805e714cfc29f0f3fa56c5ee964f6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6">SVF::PointsTo::reset</a></div><div class="ttdeci">void reset(u32_t n)</div><div class="ttdoc">Removes n from the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00162">PointsTo.cpp:162</a></div></div>
137
+ <div class="ttc" id="classSVF_1_1PointsTo_html_ad78e4109c839914c4f7e37ca78046f1d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">SVF::PointsTo::intersects</a></div><div class="ttdeci">bool intersects(const PointsTo &amp;rhs) const</div><div class="ttdoc">Returns true if this set and rhs share any elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00189">PointsTo.cpp:189</a></div></div>
138
+ <div class="ttc" id="classSVF_1_1PointsTo_html_a1ef805e714cfc29f0f3fa56c5ee964f6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a1ef805e714cfc29f0f3fa56c5ee964f6">SVF::PointsTo::reset</a></div><div class="ttdeci">void reset(u32_t n)</div><div class="ttdoc">Removes n from the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00166">PointsTo.cpp:166</a></div></div>
140
139
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_aa4c47630b9a06d70375daf5e9237303d"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#aa4c47630b9a06d70375daf5e9237303d">SVF::CondPointsToSet::cptsEnd</a></div><div class="ttdeci">CondPtsConstIter cptsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00370">ConditionalPT.h:370</a></div></div>
141
140
  <div class="ttc" id="PointsTo_8h_html"><div class="ttname"><a href="PointsTo_8h.html">PointsTo.h</a></div></div>
142
141
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_a1613b690473a4fcbae7bc41c3c5347d7"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#a1613b690473a4fcbae7bc41c3c5347d7">SVF::CondPointsToSet::test</a></div><div class="ttdeci">bool test(const SingleCondVar &amp;var) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00685">ConditionalPT.h:685</a></div></div>
@@ -144,15 +143,15 @@ $(function() {
144
143
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a1f3e8aa09ca8e7f252525e35c4886c5b"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a1f3e8aa09ca8e7f252525e35c4886c5b">SVF::CondStdSet::CondStdSet</a></div><div class="ttdeci">CondStdSet()</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00139">ConditionalPT.h:139</a></div></div>
145
144
  <div class="ttc" id="classSVF_1_1CondStdSet_html_ac422c3fb8bce1378d69c234e6b11fdb1"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#ac422c3fb8bce1378d69c234e6b11fdb1">SVF::CondStdSet::intersects</a></div><div class="ttdeci">bool intersects(const CondStdSet&lt; Element &gt; &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00261">ConditionalPT.h:261</a></div></div>
146
145
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a3fcc7079d72b0b392731ae7bf1ef2939"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a3fcc7079d72b0b392731ae7bf1ef2939">SVF::CondStdSet::ElementSet</a></div><div class="ttdeci">OrderedSet&lt; Element &gt; ElementSet</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00133">ConditionalPT.h:133</a></div></div>
147
- <div class="ttc" id="namespaceSVF_html_a97ff28f5dfd5c31e6ef351de3cdad85d"><div class="ttname"><a href="namespaceSVF.html#a97ff28f5dfd5c31e6ef351de3cdad85d">SVF::operator|=</a></div><div class="ttdeci">bool operator|=(SparseBitVector&lt; ElementSize &gt; &amp;LHS, const SparseBitVector&lt; ElementSize &gt; *RHS)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01130">SparseBitVector.h:1130</a></div></div>
146
+ <div class="ttc" id="namespaceSVF_html_a97ff28f5dfd5c31e6ef351de3cdad85d"><div class="ttname"><a href="namespaceSVF.html#a97ff28f5dfd5c31e6ef351de3cdad85d">SVF::operator|=</a></div><div class="ttdeci">bool operator|=(SparseBitVector&lt; ElementSize &gt; &amp;LHS, const SparseBitVector&lt; ElementSize &gt; *RHS)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01122">SparseBitVector.h:1122</a></div></div>
148
147
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_aca84f0f9e09686d9f30f309d36267aff"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#aca84f0f9e09686d9f30f309d36267aff">SVF::CondPointsToSet::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdoc">Return true if no element in the set. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00398">ConditionalPT.h:398</a></div></div>
149
148
  <div class="ttc" id="classSVF_1_1CondVar_html_aad76f894d96617fb153cff0c875899a6"><div class="ttname"><a href="classSVF_1_1CondVar.html#aad76f894d96617fb153cff0c875899a6">SVF::CondVar::~CondVar</a></div><div class="ttdeci">~CondVar()</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00060">ConditionalPT.h:60</a></div></div>
150
- <div class="ttc" id="classSVF_1_1PointsTo_html_ab196d86cfb48d1c5d27a0c03c7497afa"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">SVF::PointsTo::set</a></div><div class="ttdeci">void set(u32_t n)</div><div class="ttdoc">Inserts n in the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00153">PointsTo.cpp:153</a></div></div>
149
+ <div class="ttc" id="classSVF_1_1PointsTo_html_ab196d86cfb48d1c5d27a0c03c7497afa"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">SVF::PointsTo::set</a></div><div class="ttdeci">void set(u32_t n)</div><div class="ttdoc">Inserts n in the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00157">PointsTo.cpp:157</a></div></div>
151
150
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_ad26570b94c56d6d2ae1cd5093ac66670"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#ad26570b94c56d6d2ae1cd5093ac66670">SVF::CondPointsToSet::cptsBegin</a></div><div class="ttdeci">CondPtsConstIter cptsBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00366">ConditionalPT.h:366</a></div></div>
152
151
  <div class="ttc" id="classSVF_1_1CondVar_html_add10a9d6f6a49cbd5dd0f5d47c423d27"><div class="ttname"><a href="classSVF_1_1CondVar.html#add10a9d6f6a49cbd5dd0f5d47c423d27">SVF::CondVar::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const CondVar &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00092">ConditionalPT.h:92</a></div></div>
153
152
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a3f1885562bb34c3ccbd15117788725e0"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a3f1885562bb34c3ccbd15117788725e0">SVF::CondStdSet::CondStdSet</a></div><div class="ttdeci">CondStdSet(const CondStdSet&lt; Element &gt; &amp;cptsSet)</div><div class="ttdoc">Copy constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00143">ConditionalPT.h:143</a></div></div>
154
153
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_af06ca0ddfcdca69199fbc9ab42f98558"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#af06ca0ddfcdca69199fbc9ab42f98558">SVF::CondPointsToSet::operator!=</a></div><div class="ttdeci">bool operator!=(const CondPointsToSet&lt; Cond &gt; &amp;rhs)</div><div class="ttdoc">Overloading operator !=. </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00601">ConditionalPT.h:601</a></div></div>
155
- <div class="ttc" id="classSVF_1_1PointsTo_html_ab31a53693fe070767b8de74e88091cd8"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab31a53693fe070767b8de74e88091cd8">SVF::PointsTo::contains</a></div><div class="ttdeci">bool contains(const PointsTo &amp;rhs) const</div><div class="ttdoc">Returns true if this set is a superset of rhs. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00171">PointsTo.cpp:171</a></div></div>
154
+ <div class="ttc" id="classSVF_1_1PointsTo_html_ab31a53693fe070767b8de74e88091cd8"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab31a53693fe070767b8de74e88091cd8">SVF::PointsTo::contains</a></div><div class="ttdeci">bool contains(const PointsTo &amp;rhs) const</div><div class="ttdoc">Returns true if this set is a superset of rhs. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00175">PointsTo.cpp:175</a></div></div>
156
155
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a6697d9c3d1107db2be430b8e8b670cb5"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a6697d9c3d1107db2be430b8e8b670cb5">SVF::CondStdSet::operator==</a></div><div class="ttdeci">bool operator==(const CondStdSet&lt; Element &gt; &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00240">ConditionalPT.h:240</a></div></div>
157
156
  <div class="ttc" id="classSVF_1_1CondVar_html_a4baf5fb20288491c96827177f9965cc4"><div class="ttname"><a href="classSVF_1_1CondVar.html#a4baf5fb20288491c96827177f9965cc4">SVF::CondVar::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00109">ConditionalPT.h:109</a></div></div>
158
157
  <div class="ttc" id="classSVF_1_1CondStdSet_html_a060a01d33fcd5ed4dfcaecb3d24cda07"><div class="ttname"><a href="classSVF_1_1CondStdSet.html#a060a01d33fcd5ed4dfcaecb3d24cda07">SVF::CondStdSet::operator!=</a></div><div class="ttdeci">bool operator!=(const CondStdSet&lt; Element &gt; &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00236">ConditionalPT.h:236</a></div></div>
@@ -175,13 +174,14 @@ $(function() {
175
174
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_aaddc3f78a624de59dda6f078ba63ba52"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#aaddc3f78a624de59dda6f078ba63ba52">SVF::CondPointsToSet::CondPts</a></div><div class="ttdeci">Map&lt; Cond, PointsTo &gt; CondPts</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00307">ConditionalPT.h:307</a></div></div>
176
175
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_acc5c77fbd1a6133d5e80c3f587d49fb3"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#acc5c77fbd1a6133d5e80c3f587d49fb3">SVF::CondPointsToSet::cptsBegin</a></div><div class="ttdeci">CondPtsIter cptsBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00358">ConditionalPT.h:358</a></div></div>
177
176
  <div class="ttc" id="classSVF_1_1CondVar_html_a90d6c2204c92db5c78991e6dfdcc5c80"><div class="ttname"><a href="classSVF_1_1CondVar.html#a90d6c2204c92db5c78991e6dfdcc5c80">SVF::CondVar::operator=</a></div><div class="ttdeci">CondVar &amp; operator=(const CondVar &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00078">ConditionalPT.h:78</a></div></div>
177
+ <div class="ttc" id="classSVF_1_1PointsTo_html_aa0d4ee196b91fce626f3f15bcc5599e4"><div class="ttname"><a href="classSVF_1_1PointsTo.html#aa0d4ee196b91fce626f3f15bcc5599e4">SVF::PointsTo::count</a></div><div class="ttdeci">u32_t count() const</div><div class="ttdoc">Returns number of elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00111">PointsTo.cpp:111</a></div></div>
178
+ <div class="ttc" id="classSVF_1_1PointsTo_html_ad5b582d2672617806c61e6170d0b5a7e"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00128">PointsTo.h:128</a></div></div>
178
179
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_a20026db57cfef6bf6a978140b2372cea"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#a20026db57cfef6bf6a978140b2372cea">SVF::CondPointsToSet::cptsEnd</a></div><div class="ttdeci">CondPtsIter cptsEnd()</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00362">ConditionalPT.h:362</a></div></div>
179
180
  <div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00028">PointsTo.h:28</a></div></div>
180
181
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_a76d4c06b04161738351a813ae406aa83"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#a76d4c06b04161738351a813ae406aa83">SVF::CondPointsToSet::iterator</a></div><div class="ttdeci">CondPtsSetIterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00815">ConditionalPT.h:815</a></div></div>
181
182
  <div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00049">SVFType.h:49</a></div></div>
182
183
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
183
184
  <div class="ttc" id="classSVF_1_1CondVar_html_a7faf827845c5e820f1b63ce6523bc2a9"><div class="ttname"><a href="classSVF_1_1CondVar.html#a7faf827845c5e820f1b63ce6523bc2a9">SVF::CondVar::operator==</a></div><div class="ttdeci">bool operator==(const CondVar &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00066">ConditionalPT.h:66</a></div></div>
184
- <div class="ttc" id="classSVF_1_1PointsTo_html_a8f741cdffbf3c5fe0f602cdca677dee6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">SVF::PointsTo::end</a></div><div class="ttdeci">const_iterator end(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00132">PointsTo.h:132</a></div></div>
185
185
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_a8775ef2c073af6c8055c3f5b0035288f"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#a8775ef2c073af6c8055c3f5b0035288f">SVF::CondPointsToSet::pointsTo</a></div><div class="ttdeci">PointsTo &amp; pointsTo(Cond cond)</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00350">ConditionalPT.h:350</a></div></div>
186
186
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_ad81774f0ad13fb21579180fc15affd7b"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#ad81774f0ad13fb21579180fc15affd7b">SVF::CondPointsToSet::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00376">ConditionalPT.h:376</a></div></div>
187
187
  <div class="ttc" id="classSVF_1_1CondPointsToSet_html_aced740c1aadf06b4a63630844fac2dd8"><div class="ttname"><a href="classSVF_1_1CondPointsToSet.html#aced740c1aadf06b4a63630844fac2dd8">SVF::CondPointsToSet::reset</a></div><div class="ttdeci">void reset(const SingleCondVar &amp;var)</div><div class="ttdef"><b>Definition:</b> <a href="ConditionalPT_8h_source.html#l00699">ConditionalPT.h:699</a></div></div>