svf-tools 1.0.409 → 1.0.412

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 (210) hide show
  1. package/CMakeLists.txt +1 -1
  2. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  6. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/html/Andersen_8h_source.html +3 -3
  10. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  11. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  12. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +7 -7
  15. package/SVF-doxygen/html/html/DDAStat_8h_source.html +5 -5
  16. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -2
  20. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +7 -6
  22. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -83
  27. package/SVF-doxygen/html/html/MHP_8cpp_source.html +42 -46
  28. package/SVF-doxygen/html/html/MHP_8h_source.html +26 -26
  29. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
  30. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  34. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +10 -10
  35. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +9 -9
  36. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +11 -11
  37. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +8 -8
  38. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +9 -9
  39. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +30 -31
  40. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  41. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +33 -34
  42. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +9 -9
  43. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +8 -7
  44. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -3
  45. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
  51. package/SVF-doxygen/html/html/TCT_8cpp_source.html +14 -14
  52. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  53. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
  54. package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
  55. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +6 -5
  56. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +214 -215
  57. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +15 -16
  58. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +180 -181
  59. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -4
  60. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +226 -227
  61. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +0 -3
  62. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +232 -233
  63. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +2 -5
  64. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +222 -223
  65. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -6
  66. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +222 -223
  67. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -4
  68. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +152 -154
  69. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +9 -12
  70. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
  71. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +221 -222
  72. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +0 -3
  73. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +132 -133
  74. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +28 -33
  75. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +2 -4
  76. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +10 -10
  77. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +1 -1
  78. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +3 -3
  79. package/SVF-doxygen/html/html/classSVF_1_1DDAStat-members.html +4 -4
  80. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +34 -25
  81. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +16 -16
  82. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +3 -3
  83. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +247 -248
  84. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -5
  85. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +208 -209
  86. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +8 -11
  87. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +238 -239
  88. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +21 -24
  89. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
  90. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +275 -276
  91. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +8 -10
  92. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +31 -31
  93. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +2 -2
  94. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +38 -38
  95. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +13 -14
  96. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +19 -43
  97. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +2 -2
  98. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +74 -74
  100. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +7 -7
  101. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
  102. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
  104. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +5 -5
  105. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
  106. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +1 -1
  107. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +8 -8
  108. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
  109. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat-members.html +2 -2
  110. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +15 -14
  111. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +33 -33
  112. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +3 -3
  113. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +94 -95
  114. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +73 -107
  115. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +4 -4
  117. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +11 -13
  118. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat-members.html +6 -6
  119. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +53 -52
  120. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +15 -30
  121. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +2 -2
  122. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
  123. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +193 -194
  124. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +0 -3
  125. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
  126. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +184 -185
  128. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -5
  129. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
  130. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +287 -288
  132. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +8 -10
  133. package/SVF-doxygen/html/html/functions_0x7e.html +1 -1
  134. package/SVF-doxygen/html/html/functions_c.html +18 -21
  135. package/SVF-doxygen/html/html/functions_func_0x7e.html +1 -1
  136. package/SVF-doxygen/html/html/functions_func_c.html +12 -13
  137. package/SVF-doxygen/html/html/functions_func_p.html +9 -9
  138. package/SVF-doxygen/html/html/functions_l.html +3 -3
  139. package/SVF-doxygen/html/html/functions_m.html +4 -4
  140. package/SVF-doxygen/html/html/functions_o.html +4 -4
  141. package/SVF-doxygen/html/html/functions_p.html +12 -12
  142. package/SVF-doxygen/html/html/functions_r.html +5 -4
  143. package/SVF-doxygen/html/html/functions_s.html +3 -3
  144. package/SVF-doxygen/html/html/functions_t.html +5 -7
  145. package/SVF-doxygen/html/html/functions_v.html +6 -6
  146. package/SVF-doxygen/html/html/functions_vars_m.html +4 -4
  147. package/SVF-doxygen/html/html/functions_vars_r.html +1 -2
  148. package/SVF-doxygen/html/html/globals_func_g.html +0 -6
  149. package/SVF-doxygen/html/html/globals_g.html +2 -8
  150. package/SVF-doxygen/html/html/globals_s.html +4 -2
  151. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -2
  152. package/SVF-doxygen/html/html/search/all_10.js +7 -7
  153. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  154. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  155. package/SVF-doxygen/html/html/search/all_14.js +4 -4
  156. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  157. package/SVF-doxygen/html/html/search/all_1b.js +1 -1
  158. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  159. package/SVF-doxygen/html/html/search/all_7.js +0 -2
  160. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  161. package/SVF-doxygen/html/html/search/all_d.js +4 -4
  162. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  163. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  164. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  165. package/SVF-doxygen/html/html/search/functions_16.js +1 -1
  166. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  167. package/SVF-doxygen/html/html/search/functions_6.js +0 -2
  168. package/SVF-doxygen/html/html/search/functions_e.js +6 -6
  169. package/SVF-doxygen/html/html/search/variables_12.js +1 -1
  170. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  171. package/SVF-doxygen/html/html/search/variables_d.js +4 -4
  172. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  173. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +14 -14
  174. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SVFGNodeLockSpan_01_4.html +3 -3
  175. package/SVF-doxygen/html/html/svf-ex_8cpp.html +4 -3
  176. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -1
  177. package/include/DDA/DDAStat.h +4 -4
  178. package/include/Graphs/SVFGNode.h +2 -4
  179. package/include/Graphs/SVFGStat.h +8 -8
  180. package/include/MTA/FSMPTA.h +1 -0
  181. package/include/MTA/MTAResultValidator.h +1 -1
  182. package/include/MemoryModel/AbstractPointsToDS.h +6 -0
  183. package/include/MemoryModel/PointerAnalysis.h +0 -5
  184. package/include/MemoryModel/SymbolTableInfo.h +2 -2
  185. package/include/Util/IRAnnotator.h +2 -2
  186. package/include/WPA/Andersen.h +1 -1
  187. package/include/WPA/AndersenSFR.h +1 -1
  188. package/lib/CUDD/CMakeLists.txt +1 -1
  189. package/lib/DDA/DDAStat.cpp +2 -2
  190. package/lib/Graphs/SVFGStat.cpp +4 -4
  191. package/lib/MSSA/SVFGBuilder.cpp +0 -1
  192. package/lib/MTA/FSMPTA.cpp +2 -3
  193. package/lib/MTA/LockResultValidator.cpp +1 -1
  194. package/lib/MTA/MHP.cpp +0 -36
  195. package/lib/MTA/MTAResultValidator.cpp +3 -3
  196. package/lib/MTA/TCT.cpp +0 -1
  197. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  198. package/lib/MemoryModel/PointerAnalysisImpl.cpp +0 -1
  199. package/lib/MemoryModel/SVFIR.cpp +15 -15
  200. package/lib/MemoryModel/SymbolTableInfo.cpp +1 -1
  201. package/lib/SVF-FE/LLVMUtil.cpp +1 -1
  202. package/lib/SVF-FE/SVFIRBuilder.cpp +5 -5
  203. package/lib/Util/CoreBitVector.cpp +1 -1
  204. package/lib/Util/ExtAPI.cpp +1 -0
  205. package/lib/Util/NodeIDAllocator.cpp +0 -1
  206. package/lib/WPA/AndersenSFR.cpp +2 -2
  207. package/lib/WPA/FlowSensitiveTBHC.cpp +1 -1
  208. package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
  209. package/package.json +1 -1
  210. package/tools/Example/svf-ex.cpp +4 -3
package/CMakeLists.txt CHANGED
@@ -17,7 +17,7 @@ if(NOT COMMAND add_llvm_library)
17
17
  # add -std=gnu++14
18
18
  set(CMAKE_CXX_EXTENSIONS ON)
19
19
 
20
- set(COMMON_FLAGS "-fPIC -Werror")
20
+ set(COMMON_FLAGS "-fPIC -Werror -Wall")
21
21
 
22
22
  if(CMAKE_BUILD_TYPE MATCHES "Debug")
23
23
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS} -O0 -fno-rtti")
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">AbstractPointsToDS.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="AbstractPointsToDS_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;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#ifndef ABSTRACT_POINTSTO_H_</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#define ABSTRACT_POINTSTO_H_</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFBasicTypes_8h.html">Util/SVFBasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html"> 40</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PTData.html">PTData</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848"> 44</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">PTDataTy</a></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a347b03b12df7d51774b617f4e7399568"> 46</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a347b03b12df7d51774b617f4e7399568">Base</a>,</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a47a2413878b6ed98b42b9ae10e839072"> 47</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a47a2413878b6ed98b42b9ae10e839072">MutBase</a>,</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a03a155517b9587d79c3f0b6dc3b72447"> 48</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a03a155517b9587d79c3f0b6dc3b72447">Diff</a>,</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848ac17ed6fa5de5a3f67108692b103a4c87"> 49</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848ac17ed6fa5de5a3f67108692b103a4c87">MutDiff</a>,</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848acb817cbf655c365c02af3675588f06cc"> 50</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848acb817cbf655c365c02af3675588f06cc">DataFlow</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a46777c0122829cc199bc911e585b4f62"> 51</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a46777c0122829cc199bc911e585b4f62">MutDataFlow</a>,</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c"> 52</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c">MutIncDataFlow</a>,</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a33bb78ff686c2cd774e127ce77f9cb67"> 53</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a33bb78ff686c2cd774e127ce77f9cb67">Versioned</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aac925590471ccb9c851698b232fdd3a5"> 54</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aac925590471ccb9c851698b232fdd3a5">MutVersioned</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a7873d1da786c9ec286266e58504f13b5"> 55</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a7873d1da786c9ec286266e58504f13b5">PersBase</a>,</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848ada752eff76493c0121473ac4c18c9b03"> 56</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848ada752eff76493c0121473ac4c18c9b03">PersDiff</a>,</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848af7d68d3c87acd1e3169c09fbf855fd1f"> 57</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848af7d68d3c87acd1e3169c09fbf855fd1f">PersDataFlow</a>,</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a"> 58</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a">PersIncDataFlow</a>,</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a15e53fc2443dac125c703ccd7eef1a03"> 59</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a15e53fc2443dac125c703ccd7eef1a03">PersVersioned</a>,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a142667d3a394fa6c3f337abba295ebb1"> 62</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a142667d3a394fa6c3f337abba295ebb1">PTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">PTDataTy</a> ty = PTDataTy::Base) : <a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>(reversePT), <a class="code" href="classSVF_1_1PTData.html#abe01b39afed97b540c9bb8a8634afa28">ptdTy</a>(ty) { }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a6599aa8acde9a6fe65bdba36f289f04f"> 64</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PTData.html#a6599aa8acde9a6fe65bdba36f289f04f">~PTData</a>() { }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf"> 67</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">PTDataTy</a> <a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTData.html#abe01b39afed97b540c9bb8a8634afa28">ptdTy</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#ad45879017d8fdeedc987ce35c4eba1a5">clear</a>() = 0;</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; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">getPts</a>(<span class="keyword">const</span> Key&amp; var) = 0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PTData.html#ab6146f5582946c08568f3a8d45e57b03">getRevPts</a>(<span class="keyword">const</span> Data&amp; datum) = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#ac1b9dc035fb0bdf468c7d14b9f9d437a">addPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data&amp; element) = 0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar) = 0;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> DataSet&amp; srcDataSet) = 0;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#a03c783b9a1faac0aee3e22361df594ce">clearPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data&amp; element) = 0;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#a877888f12d9f8048002cc0e6b83d45ac">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var) = 0;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#af2f176027169e18730848c7a583aed93">remapAllPts</a>(<span class="keywordtype">void</span>) = 0;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#a91b898e3547eecfbf1ab155d183734bf">dumpPTData</a>() = 0;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1PTData.html#adbe2b955f119871b54dc502de84b94c4">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219"> 107</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#abe01b39afed97b540c9bb8a8634afa28"> 108</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">PTDataTy</a> <a class="code" href="classSVF_1_1PTData.html#abe01b39afed97b540c9bb8a8634afa28">ptdTy</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;};</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html"> 115</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a>&lt;Key, KeySet, Data, DataSet&gt;</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"> 117</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html#ae61c0f266f26a22077c1e8409f6ba991"> 118</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1DiffPTData.html#ae61c0f266f26a22077c1e8409f6ba991">BasePTData</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html#a76b2abf95bf425044e8a6c4141bd470b"> 119</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1DiffPTData.html#a76b2abf95bf425044e8a6c4141bd470b">PTDataTy</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html#ac7e9661cfb4d5af3ef35d323ddc35558"> 121</a></span>&#160; <a class="code" href="classSVF_1_1DiffPTData.html#ac7e9661cfb4d5af3ef35d323ddc35558">DiffPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::Diff) : BasePTData(reversePT, ty) { }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html#ada95c47c18922bffaf56ef2e8040c201"> 123</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1DiffPTData.html#ada95c47c18922bffaf56ef2e8040c201">~DiffPTData</a>() { }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; getDiffPts(Key&amp; var) = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> computeDiffPts(Key&amp; var, <span class="keyword">const</span> DataSet&amp; all) = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> updatePropaPtsMap(Key&amp; src, Key&amp; dst) = 0;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> clearPropaPts(Key&amp; var) = 0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html#a09f6aa3d329f8adcd4928344720cff0f"> 142</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DiffPTData.html#a09f6aa3d329f8adcd4928344720cff0f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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"><a class="line" href="classSVF_1_1DiffPTData.html#af182fd3695fee155abac8c2f0c402a17"> 146</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DiffPTData.html#af182fd3695fee155abac8c2f0c402a17">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::Diff</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutDiff</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersDiff;</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"> 153</span>&#160;};</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html"> 160</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DFPTData.html">DFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;{</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#a6d5193ea9e77b3945cb0716978dc75be"> 163</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1DFPTData.html#a6d5193ea9e77b3945cb0716978dc75be">BasePTData</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#aabbe54f196e27d70a3b0348e87b9990f"> 164</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1DFPTData.html#aabbe54f196e27d70a3b0348e87b9990f">PTDataTy</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786"> 166</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">LocID</a>;</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"><a class="line" href="classSVF_1_1DFPTData.html#a40016a7e3dac46d9ba854d336c7aae83"> 169</a></span>&#160; <a class="code" href="classSVF_1_1DFPTData.html#a40016a7e3dac46d9ba854d336c7aae83">DFPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = BasePTData::DataFlow) : BasePTData(reversePT, ty) { }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#af6d40be5e2df2ad37b64b7a73b73518e"> 171</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1DFPTData.html#af6d40be5e2df2ad37b64b7a73b73518e">~DFPTData</a>() { }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hasDFInSet(LocID loc) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hasDFOutSet(LocID loc) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hasDFOutSet(LocID loc, <span class="keyword">const</span> Key&amp; var) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hasDFInSet(LocID loc, <span class="keyword">const</span> Key&amp; var) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; getDFInPtsSet(LocID loc, <span class="keyword">const</span> Key&amp; var) = 0;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; getDFOutPtsSet(LocID loc, <span class="keyword">const</span> Key&amp; var) = 0;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateDFInFromIn(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateAllDFInFromIn(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateDFInFromOut(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateAllDFInFromOut(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateDFOutFromIn(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateAllDFOutFromIn(LocID loc, <span class="keyword">const</span> Key&amp; singleton, <span class="keywordtype">bool</span> strongUpdates) = 0;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> clearAllDFOutUpdatedVar(LocID) = 0;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateTLVPts(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateATVPts(<span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#a1b09e85de5cc187958dd8fb1aa5edfcd"> 215</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DFPTData.html#a1b09e85de5cc187958dd8fb1aa5edfcd">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#abea003e1262f3e03967939e4028694a4"> 220</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DFPTData.html#abea003e1262f3e03967939e4028694a4">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BasePTData::DataFlow</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BasePTData::MutDataFlow</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BasePTData::MutIncDataFlow</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BasePTData::PersDataFlow</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BasePTData::PersIncDataFlow;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;};</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet, <span class="keyword">typename</span> VersionedKey, <span class="keyword">typename</span> VersionedKeySet&gt;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html"> 235</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#a9833b47df24ed821a55d5ce9a3917f1f"> 238</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1VersionedPTData.html#a9833b47df24ed821a55d5ce9a3917f1f">BasePTData</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#af22e10c7406708cd7e40018b0c935111"> 239</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1VersionedPTData.html#af22e10c7406708cd7e40018b0c935111">PTDataTy</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#a2cc5ee586042f19aa698fd8ec48e33b5"> 241</a></span>&#160; <a class="code" href="classSVF_1_1VersionedPTData.html#a2cc5ee586042f19aa698fd8ec48e33b5">VersionedPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::Versioned) : BasePTData(reversePT, ty) { }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#af97621df8039a6453597d03b7641ec81"> 243</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1VersionedPTData.html#af97621df8039a6453597d03b7641ec81">~VersionedPTData</a>() { }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">getPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk) = 0;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> VersionedKeySet&amp; getVersionedKeyRevPts(<span class="keyword">const</span> Data&amp; datum) = 0;</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; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#ac1b9dc035fb0bdf468c7d14b9f9d437a">addPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data&amp; element) = 0;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar) = 0;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar) = 0;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar) = 0;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> DataSet&amp; srcDataSet) = 0;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#a03c783b9a1faac0aee3e22361df594ce">clearPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data&amp; element) = 0;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#a877888f12d9f8048002cc0e6b83d45ac">clearFullPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk) = 0;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#a385133d44ac2b5fcef007040da8c2fd6"> 260</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedPTData.html#a385133d44ac2b5fcef007040da8c2fd6">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</a> *)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#a69ceac8acdf820486a45fc4444f78d04"> 265</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedPTData.html#a69ceac8acdf820486a45fc4444f78d04">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::Versioned</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutVersioned</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersVersioned;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</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"> 274</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#endif // ABSTRACT_POINTSTO_H_</span></div><div class="ttc" id="classSVF_1_1VersionedPTData_html"><div class="ttname"><a href="classSVF_1_1VersionedPTData.html">SVF::VersionedPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00235">AbstractPointsToDS.h:235</a></div></div>
69
+ <a href="AbstractPointsToDS_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;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#ifndef ABSTRACT_POINTSTO_H_</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#define ABSTRACT_POINTSTO_H_</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFBasicTypes_8h.html">Util/SVFBasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html"> 40</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PTData.html">PTData</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848"> 44</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">PTDataTy</a></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a347b03b12df7d51774b617f4e7399568"> 46</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a347b03b12df7d51774b617f4e7399568">Base</a>,</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a47a2413878b6ed98b42b9ae10e839072"> 47</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a47a2413878b6ed98b42b9ae10e839072">MutBase</a>,</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a03a155517b9587d79c3f0b6dc3b72447"> 48</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a03a155517b9587d79c3f0b6dc3b72447">Diff</a>,</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848ac17ed6fa5de5a3f67108692b103a4c87"> 49</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848ac17ed6fa5de5a3f67108692b103a4c87">MutDiff</a>,</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848acb817cbf655c365c02af3675588f06cc"> 50</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848acb817cbf655c365c02af3675588f06cc">DataFlow</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a46777c0122829cc199bc911e585b4f62"> 51</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a46777c0122829cc199bc911e585b4f62">MutDataFlow</a>,</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c"> 52</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c">MutIncDataFlow</a>,</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a33bb78ff686c2cd774e127ce77f9cb67"> 53</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a33bb78ff686c2cd774e127ce77f9cb67">Versioned</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aac925590471ccb9c851698b232fdd3a5"> 54</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aac925590471ccb9c851698b232fdd3a5">MutVersioned</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a7873d1da786c9ec286266e58504f13b5"> 55</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a7873d1da786c9ec286266e58504f13b5">PersBase</a>,</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848ada752eff76493c0121473ac4c18c9b03"> 56</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848ada752eff76493c0121473ac4c18c9b03">PersDiff</a>,</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848af7d68d3c87acd1e3169c09fbf855fd1f"> 57</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848af7d68d3c87acd1e3169c09fbf855fd1f">PersDataFlow</a>,</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a"> 58</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a">PersIncDataFlow</a>,</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a15e53fc2443dac125c703ccd7eef1a03"> 59</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a15e53fc2443dac125c703ccd7eef1a03">PersVersioned</a>,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a142667d3a394fa6c3f337abba295ebb1"> 62</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a142667d3a394fa6c3f337abba295ebb1">PTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">PTDataTy</a> ty = PTDataTy::Base) : <a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>(reversePT), <a class="code" href="classSVF_1_1PTData.html#abe01b39afed97b540c9bb8a8634afa28">ptdTy</a>(ty) { }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a6599aa8acde9a6fe65bdba36f289f04f"> 64</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PTData.html#a6599aa8acde9a6fe65bdba36f289f04f">~PTData</a>() { }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf"> 67</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">PTDataTy</a> <a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PTData.html#abe01b39afed97b540c9bb8a8634afa28">ptdTy</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#ad45879017d8fdeedc987ce35c4eba1a5">clear</a>() = 0;</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; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">getPts</a>(<span class="keyword">const</span> Key&amp; var) = 0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PTData.html#ab6146f5582946c08568f3a8d45e57b03">getRevPts</a>(<span class="keyword">const</span> Data&amp; datum) = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#ac1b9dc035fb0bdf468c7d14b9f9d437a">addPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data&amp; element) = 0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar) = 0;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> DataSet&amp; srcDataSet) = 0;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#a03c783b9a1faac0aee3e22361df594ce">clearPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data&amp; element) = 0;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#a877888f12d9f8048002cc0e6b83d45ac">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var) = 0;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#af2f176027169e18730848c7a583aed93">remapAllPts</a>(<span class="keywordtype">void</span>) = 0;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#a91b898e3547eecfbf1ab155d183734bf">dumpPTData</a>() = 0;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1PTData.html#adbe2b955f119871b54dc502de84b94c4">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219"> 107</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1PTData.html#abe01b39afed97b540c9bb8a8634afa28"> 108</a></span>&#160; <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">PTDataTy</a> <a class="code" href="classSVF_1_1PTData.html#abe01b39afed97b540c9bb8a8634afa28">ptdTy</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;};</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html"> 115</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a>&lt;Key, KeySet, Data, DataSet&gt;</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"> 117</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html#ae61c0f266f26a22077c1e8409f6ba991"> 118</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1DiffPTData.html#ae61c0f266f26a22077c1e8409f6ba991">BasePTData</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html#a76b2abf95bf425044e8a6c4141bd470b"> 119</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1DiffPTData.html#a76b2abf95bf425044e8a6c4141bd470b">PTDataTy</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html#ac7e9661cfb4d5af3ef35d323ddc35558"> 121</a></span>&#160; <a class="code" href="classSVF_1_1DiffPTData.html#ac7e9661cfb4d5af3ef35d323ddc35558">DiffPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::Diff) : BasePTData(reversePT, ty) { }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html#ada95c47c18922bffaf56ef2e8040c201"> 123</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1DiffPTData.html#ada95c47c18922bffaf56ef2e8040c201">~DiffPTData</a>() { }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; getDiffPts(Key&amp; var) = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> computeDiffPts(Key&amp; var, <span class="keyword">const</span> DataSet&amp; all) = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> updatePropaPtsMap(Key&amp; src, Key&amp; dst) = 0;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> clearPropaPts(Key&amp; var) = 0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1DiffPTData.html#a09f6aa3d329f8adcd4928344720cff0f"> 142</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DiffPTData.html#a09f6aa3d329f8adcd4928344720cff0f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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"><a class="line" href="classSVF_1_1DiffPTData.html#af182fd3695fee155abac8c2f0c402a17"> 146</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DiffPTData.html#af182fd3695fee155abac8c2f0c402a17">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::Diff</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutDiff</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersDiff;</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"> 153</span>&#160;};</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html"> 160</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1DFPTData.html">DFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;{</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#a6d5193ea9e77b3945cb0716978dc75be"> 163</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1DFPTData.html#a6d5193ea9e77b3945cb0716978dc75be">BasePTData</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#aabbe54f196e27d70a3b0348e87b9990f"> 164</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1DFPTData.html#aabbe54f196e27d70a3b0348e87b9990f">PTDataTy</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786"> 166</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">LocID</a>;</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"><a class="line" href="classSVF_1_1DFPTData.html#a40016a7e3dac46d9ba854d336c7aae83"> 169</a></span>&#160; <a class="code" href="classSVF_1_1DFPTData.html#a40016a7e3dac46d9ba854d336c7aae83">DFPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = BasePTData::DataFlow) : BasePTData(reversePT, ty) { }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#af6d40be5e2df2ad37b64b7a73b73518e"> 171</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1DFPTData.html#af6d40be5e2df2ad37b64b7a73b73518e">~DFPTData</a>() { }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hasDFInSet(LocID loc) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hasDFOutSet(LocID loc) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hasDFOutSet(LocID loc, <span class="keyword">const</span> Key&amp; var) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hasDFInSet(LocID loc, <span class="keyword">const</span> Key&amp; var) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; getDFInPtsSet(LocID loc, <span class="keyword">const</span> Key&amp; var) = 0;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; getDFOutPtsSet(LocID loc, <span class="keyword">const</span> Key&amp; var) = 0;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateDFInFromIn(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateAllDFInFromIn(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateDFInFromOut(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateAllDFInFromOut(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateDFOutFromIn(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateAllDFOutFromIn(LocID loc, <span class="keyword">const</span> Key&amp; singleton, <span class="keywordtype">bool</span> strongUpdates) = 0;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> clearAllDFOutUpdatedVar(LocID) = 0;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateTLVPts(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> updateATVPts(<span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar) = 0;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#a1b09e85de5cc187958dd8fb1aa5edfcd"> 215</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DFPTData.html#a1b09e85de5cc187958dd8fb1aa5edfcd">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1DFPTData.html#abea003e1262f3e03967939e4028694a4"> 220</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DFPTData.html#abea003e1262f3e03967939e4028694a4">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BasePTData::DataFlow</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BasePTData::MutDataFlow</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BasePTData::MutIncDataFlow</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BasePTData::PersDataFlow</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BasePTData::PersIncDataFlow;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;};</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet, <span class="keyword">typename</span> VersionedKey, <span class="keyword">typename</span> VersionedKeySet&gt;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html"> 235</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#a9833b47df24ed821a55d5ce9a3917f1f"> 238</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1VersionedPTData.html#a9833b47df24ed821a55d5ce9a3917f1f">BasePTData</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#af22e10c7406708cd7e40018b0c935111"> 239</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1VersionedPTData.html#af22e10c7406708cd7e40018b0c935111">PTDataTy</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#a2cc5ee586042f19aa698fd8ec48e33b5"> 241</a></span>&#160; <a class="code" href="classSVF_1_1VersionedPTData.html#a2cc5ee586042f19aa698fd8ec48e33b5">VersionedPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::Versioned) : BasePTData(reversePT, ty) { }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#af97621df8039a6453597d03b7641ec81"> 243</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1VersionedPTData.html#af97621df8039a6453597d03b7641ec81">~VersionedPTData</a>() { }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">getPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk) = 0;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> VersionedKeySet&amp; getVersionedKeyRevPts(<span class="keyword">const</span> Data&amp; datum) = 0;</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; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#ac1b9dc035fb0bdf468c7d14b9f9d437a">addPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data&amp; element) = 0;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar) = 0;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar) = 0;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar) = 0;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> DataSet&amp; srcDataSet) = 0;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#a03c783b9a1faac0aee3e22361df594ce">clearPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data&amp; element) = 0;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTData.html#a877888f12d9f8048002cc0e6b83d45ac">clearFullPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk) = 0;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#a385133d44ac2b5fcef007040da8c2fd6"> 260</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedPTData.html#a385133d44ac2b5fcef007040da8c2fd6">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</a> *)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1VersionedPTData.html#a69ceac8acdf820486a45fc4444f78d04"> 265</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1VersionedPTData.html#a69ceac8acdf820486a45fc4444f78d04">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::Versioned</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutVersioned</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersVersioned;</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="keyword">private</span>:</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keyword">using</span> BasePTData::getPts;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">using</span> BasePTData::addPts;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">using</span> BasePTData::unionPts;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">using</span> BasePTData::clearPts;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">using</span> BasePTData::clearFullPts;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;};</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="preprocessor">#endif // ABSTRACT_POINTSTO_H_</span></div><div class="ttc" id="classSVF_1_1VersionedPTData_html"><div class="ttname"><a href="classSVF_1_1VersionedPTData.html">SVF::VersionedPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00235">AbstractPointsToDS.h:235</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1PTData_html_a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a"><div class="ttname"><a href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a">SVF::PTData::PersIncDataFlow</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00058">AbstractPointsToDS.h:58</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1PTData_html_a74ce29609c51f2be34a0b5b7650a9848a7873d1da786c9ec286266e58504f13b5"><div class="ttname"><a href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a7873d1da786c9ec286266e58504f13b5">SVF::PTData::PersBase</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00055">AbstractPointsToDS.h:55</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1VersionedPTData_html_af22e10c7406708cd7e40018b0c935111"><div class="ttname"><a href="classSVF_1_1VersionedPTData.html#af22e10c7406708cd7e40018b0c935111">SVF::VersionedPTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00239">AbstractPointsToDS.h:239</a></div></div>
@@ -72,7 +72,7 @@ $(function() {
72
72
  <div class="ttc" id="classSVF_1_1AndersenHCD_html_a2bbd6a0af75b17a70b1451a69cc3d5d7"><div class="ttname"><a href="classSVF_1_1AndersenHCD.html#a2bbd6a0af75b17a70b1451a69cc3d5d7">SVF::AndersenHCD::mergeSCC</a></div><div class="ttdeci">virtual void mergeSCC(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="AndersenHCD_8cpp_source.html#l00078">AndersenHCD.cpp:78</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1AndersenHLCD_html"><div class="ttname"><a href="classSVF_1_1AndersenHLCD.html">SVF::AndersenHLCD</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00624">Andersen.h:624</a></div></div>
74
74
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
75
- <div class="ttc" id="classSVF_1_1AndersenLCD_html_a132fe3985f04b55b5e172649db7e44d7"><div class="ttname"><a href="classSVF_1_1AndersenLCD.html#a132fe3985f04b55b5e172649db7e44d7">SVF::AndersenLCD::mergeSCC</a></div><div class="ttdeci">virtual void mergeSCC()</div><div class="ttdef"><b>Definition:</b> <a href="AndersenLCD_8cpp_source.html#l00091">AndersenLCD.cpp:91</a></div></div>
75
+ <div class="ttc" id="classSVF_1_1AndersenLCD_html_a132fe3985f04b55b5e172649db7e44d7"><div class="ttname"><a href="classSVF_1_1AndersenLCD.html#a132fe3985f04b55b5e172649db7e44d7">SVF::AndersenLCD::mergeSCC</a></div><div class="ttdeci">void mergeSCC()</div><div class="ttdef"><b>Definition:</b> <a href="AndersenLCD_8cpp_source.html#l00091">AndersenLCD.cpp:91</a></div></div>
76
76
  </div><!-- fragment --></div><!-- contents -->
77
77
  <!-- start footer part -->
78
78
  <hr class="footer"/><address class="footer"><small>
@@ -87,7 +87,7 @@ $(function() {
87
87
  <div class="ttc" id="classSVF_1_1ConstraintEdge_html"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html">SVF::ConstraintEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00048">ConsGEdge.h:48</a></div></div>
88
88
  <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#l00027">PointsTo.h:27</a></div></div>
89
89
  <div class="ttc" id="classSVF_1_1AndersenLCD_html_a139d80e25fe713194f719581915d36d5"><div class="ttname"><a href="classSVF_1_1AndersenLCD.html#a139d80e25fe713194f719581915d36d5">SVF::AndersenLCD::handleCopyGep</a></div><div class="ttdeci">virtual void handleCopyGep(ConstraintNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="AndersenLCD_8cpp_source.html#l00057">AndersenLCD.cpp:57</a></div></div>
90
- <div class="ttc" id="classSVF_1_1AndersenLCD_html_a132fe3985f04b55b5e172649db7e44d7"><div class="ttname"><a href="classSVF_1_1AndersenLCD.html#a132fe3985f04b55b5e172649db7e44d7">SVF::AndersenLCD::mergeSCC</a></div><div class="ttdeci">virtual void mergeSCC()</div><div class="ttdef"><b>Definition:</b> <a href="AndersenLCD_8cpp_source.html#l00091">AndersenLCD.cpp:91</a></div></div>
90
+ <div class="ttc" id="classSVF_1_1AndersenLCD_html_a132fe3985f04b55b5e172649db7e44d7"><div class="ttname"><a href="classSVF_1_1AndersenLCD.html#a132fe3985f04b55b5e172649db7e44d7">SVF::AndersenLCD::mergeSCC</a></div><div class="ttdeci">void mergeSCC()</div><div class="ttdef"><b>Definition:</b> <a href="AndersenLCD_8cpp_source.html#l00091">AndersenLCD.cpp:91</a></div></div>
91
91
  </div><!-- fragment --></div><!-- contents -->
92
92
  <!-- start footer part -->
93
93
  <hr class="footer"/><address class="footer"><small>