svf-tools 1.0.613 → 1.0.614
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.
- package/CMakeLists.txt +13 -0
- package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -6
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/Andersen_8h_source.html +16 -16
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +7 -7
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +14 -14
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ConsG_8h_source.html +9 -9
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +9 -9
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +4 -6
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +22 -22
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -28
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +65 -65
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +23 -28
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +8 -8
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MHP_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +12 -17
- package/SVF-doxygen/html/html/MTA_8h_source.html +3 -4
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +34 -34
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +16 -15
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +53 -52
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +7 -8
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/Options_8cpp_source.html +52 -53
- package/SVF-doxygen/html/html/Options_8h_source.html +53 -54
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +33 -33
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +91 -95
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +31 -39
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +85 -92
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +16 -16
- package/SVF-doxygen/html/html/PointsTo_8cpp.html +1 -0
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +51 -51
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +38 -38
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +11 -22
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +14 -17
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +21 -19
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +49 -62
- package/SVF-doxygen/html/html/SVFG_8h_source.html +45 -45
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +10 -16
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +83 -83
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/SVFType_8h.html +22 -22
- package/SVF-doxygen/html/html/SVFType_8h_source.html +76 -77
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -3
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +69 -71
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +39 -39
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +49 -51
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +13 -13
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +33 -33
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +11 -11
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +25 -25
- package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -5
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -5
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +187 -188
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +104 -107
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +163 -164
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +47 -50
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +194 -195
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +45 -48
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +204 -205
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +35 -38
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +191 -192
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +29 -32
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +122 -123
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +158 -219
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +137 -138
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +57 -49
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +138 -139
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +140 -141
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +114 -114
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +17 -31
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +40 -40
- package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +228 -229
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +62 -65
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +194 -195
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +219 -220
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +335 -342
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +57 -57
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +20 -14
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +106 -92
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +87 -87
- package/SVF-doxygen/html/html/classSVF_1_1MTA-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +27 -33
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder-members.html +41 -43
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +57 -80
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +4 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +170 -143
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +13 -15
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +17 -18
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +53 -79
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTData.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData-members.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +174 -177
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData-members.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +99 -102
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData-members.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +125 -127
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData-members.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +83 -86
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +122 -122
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData-members.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +137 -140
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +56 -56
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo-members.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +183 -178
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +87 -65
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFArrayType.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +13 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +5 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunctionType.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +211 -236
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder-members.html +7 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +50 -138
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +82 -82
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +203 -215
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +79 -79
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIntergerType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +0 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFPointerType.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +4 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +12 -14
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +42 -68
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +108 -109
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +146 -146
- package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +48 -61
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +178 -179
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +35 -38
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +42 -46
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +169 -170
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +29 -32
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +263 -264
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +112 -115
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +76 -81
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +2 -2
- package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/functions.html +1 -1
- package/SVF-doxygen/html/html/functions_0x7e.html +16 -16
- package/SVF-doxygen/html/html/functions_a.html +7 -7
- package/SVF-doxygen/html/html/functions_b.html +6 -6
- package/SVF-doxygen/html/html/functions_c.html +27 -27
- package/SVF-doxygen/html/html/functions_d.html +10 -11
- package/SVF-doxygen/html/html/functions_e.html +2 -2
- package/SVF-doxygen/html/html/functions_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func.html +6 -6
- package/SVF-doxygen/html/html/functions_func_0x7e.html +16 -16
- package/SVF-doxygen/html/html/functions_func_b.html +6 -6
- package/SVF-doxygen/html/html/functions_func_c.html +27 -27
- package/SVF-doxygen/html/html/functions_func_d.html +10 -11
- package/SVF-doxygen/html/html/functions_func_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func_f.html +5 -5
- package/SVF-doxygen/html/html/functions_func_g.html +22 -22
- package/SVF-doxygen/html/html/functions_func_h.html +3 -3
- package/SVF-doxygen/html/html/functions_func_i.html +2 -2
- package/SVF-doxygen/html/html/functions_func_o.html +3 -3
- package/SVF-doxygen/html/html/functions_func_p.html +5 -5
- package/SVF-doxygen/html/html/functions_func_r.html +5 -8
- package/SVF-doxygen/html/html/functions_func_s.html +5 -5
- package/SVF-doxygen/html/html/functions_func_t.html +1 -1
- package/SVF-doxygen/html/html/functions_func_u.html +23 -23
- package/SVF-doxygen/html/html/functions_g.html +25 -28
- package/SVF-doxygen/html/html/functions_h.html +3 -3
- package/SVF-doxygen/html/html/functions_i.html +5 -5
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_o.html +13 -13
- package/SVF-doxygen/html/html/functions_p.html +19 -19
- package/SVF-doxygen/html/html/functions_r.html +11 -12
- package/SVF-doxygen/html/html/functions_s.html +32 -35
- package/SVF-doxygen/html/html/functions_t.html +12 -12
- package/SVF-doxygen/html/html/functions_type_t.html +1 -1
- package/SVF-doxygen/html/html/functions_u.html +26 -23
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_p.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_s.html +5 -8
- package/SVF-doxygen/html/html/functions_vars_t.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_u.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +3 -7
- package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +35 -35
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +4 -4
- package/SVF-doxygen/html/html/saber_8cpp.html +1 -5
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -5
- package/SVF-doxygen/html/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +4 -4
- package/SVF-doxygen/html/html/search/all_10.js +15 -15
- package/SVF-doxygen/html/html/search/all_11.js +1 -2
- package/SVF-doxygen/html/html/search/all_12.js +19 -20
- package/SVF-doxygen/html/html/search/all_13.js +8 -8
- package/SVF-doxygen/html/html/search/all_14.js +13 -12
- package/SVF-doxygen/html/html/search/all_15.js +4 -4
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_19.js +16 -16
- package/SVF-doxygen/html/html/search/all_2.js +6 -6
- package/SVF-doxygen/html/html/search/all_3.js +14 -14
- package/SVF-doxygen/html/html/search/all_4.js +5 -5
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +5 -5
- package/SVF-doxygen/html/html/search/all_7.js +11 -12
- package/SVF-doxygen/html/html/search/all_8.js +3 -3
- package/SVF-doxygen/html/html/search/all_9.js +3 -3
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +5 -5
- package/SVF-doxygen/html/html/search/functions_0.js +4 -4
- package/SVF-doxygen/html/html/search/functions_1.js +6 -6
- package/SVF-doxygen/html/html/search/functions_10.js +1 -2
- package/SVF-doxygen/html/html/search/functions_11.js +10 -10
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +12 -12
- package/SVF-doxygen/html/html/search/functions_17.js +16 -16
- package/SVF-doxygen/html/html/search/functions_2.js +14 -14
- package/SVF-doxygen/html/html/search/functions_3.js +5 -5
- package/SVF-doxygen/html/html/search/functions_4.js +2 -2
- package/SVF-doxygen/html/html/search/functions_5.js +4 -4
- package/SVF-doxygen/html/html/search/functions_6.js +11 -11
- package/SVF-doxygen/html/html/search/functions_7.js +3 -3
- package/SVF-doxygen/html/html/search/functions_8.js +2 -2
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +3 -3
- package/SVF-doxygen/html/html/search/functions_f.js +5 -5
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/variables_0.js +1 -1
- package/SVF-doxygen/html/html/search/variables_10.js +2 -2
- package/SVF-doxygen/html/html/search/variables_12.js +5 -6
- package/SVF-doxygen/html/html/search/variables_13.js +3 -3
- package/SVF-doxygen/html/html/search/variables_14.js +1 -0
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +0 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +14 -14
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +47 -57
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +5 -5
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +6 -7
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/build.sh +2 -2
- package/include/DDA/DDAPass.h +1 -1
- package/include/DDA/FlowDDA.h +1 -1
- package/include/Graphs/ICFG.h +1 -1
- package/include/Graphs/SVFG.h +3 -4
- package/include/Graphs/SVFGOPT.h +7 -7
- package/include/MSSA/MemSSA.h +2 -0
- package/include/MSSA/SVFGBuilder.h +5 -14
- package/include/MTA/MTA.h +2 -2
- package/include/MemoryModel/MutablePointsToDS.h +3 -3
- package/include/MemoryModel/PersistentPointsToCache.h +7 -8
- package/include/MemoryModel/PersistentPointsToDS.h +93 -93
- package/include/MemoryModel/PointerAnalysisImpl.h +17 -28
- package/include/MemoryModel/PointsTo.h +24 -24
- package/include/SABER/SrcSnkDDA.h +10 -13
- package/include/SVF-LLVM/LLVMLoopAnalysis.h +2 -1
- package/include/SVF-LLVM/LLVMModule.h +6 -6
- package/include/SVFIR/SVFIR.h +3 -5
- package/include/SVFIR/SVFType.h +6 -8
- package/include/SVFIR/SVFValue.h +3 -3
- package/include/Util/Options.h +0 -1
- package/include/Util/SparseBitVector.h +6 -14
- package/include/WPA/FlowSensitive.h +13 -20
- package/include/WPA/WPASolver.h +5 -9
- package/lib/DDA/DDAPass.cpp +4 -4
- package/lib/Graphs/CFLGraph.cpp +3 -0
- package/lib/Graphs/SVFG.cpp +1 -1
- package/lib/MSSA/MemSSA.cpp +5 -3
- package/lib/MSSA/SVFGBuilder.cpp +9 -27
- package/lib/MTA/MTA.cpp +4 -4
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +10 -10
- package/lib/MemoryModel/PointsTo.cpp +23 -19
- package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +3 -4
- package/lib/SVF-LLVM/LLVMModule.cpp +32 -21
- package/lib/SVFIR/SVFIR.cpp +1 -1
- package/lib/SVFIR/SymbolTableInfo.cpp +4 -15
- package/lib/Util/Options.cpp +0 -6
- package/lib/WPA/AndersenSFR.cpp +1 -1
- package/lib/WPA/FlowSensitive.cpp +1 -1
- package/package.json +1 -1
- package/tools/CFL/cfl.cpp +5 -4
- package/tools/DDA/dda.cpp +3 -2
- package/tools/Example/svf-ex.cpp +3 -2
- package/tools/MTA/mta.cpp +6 -4
- package/tools/SABER/saber.cpp +7 -5
- package/tools/WPA/wpa.cpp +3 -2
|
@@ -66,9 +66,9 @@ $(function() {
|
|
|
66
66
|
<div class="title">MutablePointsToDS.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="MutablePointsToDS_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> <span class="comment">//===- MutablePointsToDS.h -- Mutable points-to data structure-------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">/*</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * MutablePointsToDS.h</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * Authors: Mohamad Barbar and Yulei Sui</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * The implementation is based on</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> * Mohamad Barbar and Yulei Sui. Hash Consed Points-To Sets.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * 28th Static Analysis Symposium (SAS'21)</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef MUTABLE_POINTSTO_H_</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define MUTABLE_POINTSTO_H_</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include<fstream></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="AbstractPointsToDS_8h.html">MemoryModel/AbstractPointsToDS.h</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "<a class="code" href="SVFType_8h.html">SVFIR/SVFType.h</a>"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet></div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html"> 49</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet></div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html"> 53</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a><Key, KeySet, Data, DataSet></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad92cfe345043b1bc8d6c7a03df43310f"> 55</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a><Key, KeySet, Data, DataSet>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ab88ea00589ec9353bccf3629a1c4e5d3"> 57</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutablePTData.html#ab88ea00589ec9353bccf3629a1c4e5d3">BasePTData</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a9e69cb846a8d2da102981d1f48cb16dd"> 58</a></span>  <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_1MutablePTData.html#a9e69cb846a8d2da102981d1f48cb16dd">PTDataTy</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e"> 60</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<Key, DataSet></a> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">PtsMap</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a6d491581d17876625d0265cd26acd8e1"> 61</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<Data, KeySet></a> <a class="code" href="classSVF_1_1MutablePTData.html#a6d491581d17876625d0265cd26acd8e1">RevPtsMap</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad08dbfa28cd0d622322091d6600748ed"> 62</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> PtsMap::iterator <a class="code" href="classSVF_1_1MutablePTData.html#ad08dbfa28cd0d622322091d6600748ed">PtsMapIter</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03"> 63</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> PtsMap::const_iterator <a class="code" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03">PtsMapConstIter</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ae856f07441da3988d6a31eea1e30a7d9"> 64</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> DataSet::iterator <a class="code" href="classSVF_1_1MutablePTData.html#ae856f07441da3988d6a31eea1e30a7d9">iterator</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5086e718e98482a7a0330ed05993feaa"> 67</a></span>  <a class="code" href="classSVF_1_1MutablePTData.html#a5086e718e98482a7a0330ed05993feaa">MutablePTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::MutBase) : BasePTData(reversePT, ty) { }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a90ca0be479d5c30ba96db2f8513be7be"> 69</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutablePTData.html#a90ca0be479d5c30ba96db2f8513be7be">~MutablePTData</a>() { }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b"> 72</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ac8da1a3357c3bc529f6ca85615486951"> 77</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#ac8da1a3357c3bc529f6ca85615486951">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>.clear();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>.clear();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62"> 83</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var];</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a36aa05b8f5c308035315d6df7036c096"> 88</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet& <a class="code" href="classSVF_1_1MutablePTData.html#a36aa05b8f5c308035315d6df7036c096">getRevPts</a>(<span class="keyword">const</span> Data& datum)<span class="keyword"> override</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  assert(this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> && <span class="stringliteral">"MutablePTData::getRevPts: constructed without reverse PT support!"</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[datum];</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1"> 94</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(<span class="keyword">const</span> Key &dstKey, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[element], dstKey);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], element);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f"> 100</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> Key& srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[srcKey], dstKey);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcKey));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a124e8cc8d2dbbd70682a4b7845e5d600"> 106</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a124e8cc8d2dbbd70682a4b7845e5d600">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> DataSet& srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(srcDataSet,dstKey);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], srcDataSet);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3206473b309c231d7d4b991a36a35279"> 112</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3206473b309c231d7d4b991a36a35279">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="classSVF_1_1MutablePTData.html#af08060bb4d450ecc4160cb79ab3dcc77">dumpPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5ca2c5a8908d003b7ec2c17f949ae6aa"> 117</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ca2c5a8908d003b7ec2c17f949ae6aa">clearPts</a>(<span class="keyword">const</span> Key& var, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[element], var);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var].reset(element);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3bf34d8040779b4d251bb08a58604d77"> 123</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3bf34d8040779b4d251bb08a58604d77">clearFullPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  DataSet &pts = <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var];</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da">clearRevPts</a>(pts, var);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  pts.clear();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3b4cd5b4f8704a5b0049923d22ce7665"> 130</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3b4cd5b4f8704a5b0049923d22ce7665">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &ppt : <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>) ppt.second.checkAndRemap();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad20254ace6d9976da2099413f5790458"> 135</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> <a class="code" href="classSVF_1_1MutablePTData.html#ad20254ace6d9976da2099413f5790458">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> allPts;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type ppt : <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">const</span> DataSet &pt = ppt.second;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  ++allPts[pt];</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a589d71ff881e53133e5c688f1c616ab3"> 149</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a589d71ff881e53133e5c688f1c616ab3">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> *)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a577a7fce1affd462afeb9fefa4bdb4a8"> 154</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a577a7fce1affd462afeb9fefa4bdb4a8">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a>* ptd)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutBase;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#af08060bb4d450ecc4160cb79ab3dcc77"> 161</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#af08060bb4d450ecc4160cb79ab3dcc77">dumpPts</a>(<span class="keyword">const</span> PtsMap & ptsSet,<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> & O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>())<span class="keyword"> const</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">for</span> (PtsMapConstIter nodeIt = ptsSet.begin(); nodeIt != ptsSet.end(); nodeIt++)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">const</span> Key& var = nodeIt->first;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">const</span> DataSet & pts = nodeIt->second;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span> (pts.empty())</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  O << var << <span class="stringliteral">" ==> { "</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">for</span>(<span class="keyword">typename</span> DataSet::iterator cit = pts.begin(), ecit=pts.end(); cit!=ecit; ++cit)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  O << *cit << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  O << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#abaf96c47ab029c6bc91ff23a4c061505"> 181</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#abaf96c47ab029c6bc91ff23a4c061505">unionPts</a>(DataSet& dstDataSet, <span class="keyword">const</span> DataSet& srcDataSet)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> dstDataSet |= srcDataSet;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a8cdeda0ef0e976102d05de3004bd8c8a"> 185</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a8cdeda0ef0e976102d05de3004bd8c8a">addPts</a>(DataSet &d, <span class="keyword">const</span> Data& e)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">return</span> d.test_and_set(e);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662"> 189</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(KeySet &revData, <span class="keyword">const</span> Key& tgr)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVFUtil::insertKey</a>(tgr, revData);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb"> 196</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(<span class="keyword">const</span> DataSet &ptsData, <span class="keyword">const</span> Key& tgr)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">for</span>(iterator it = ptsData.begin(), eit = ptsData.end(); it!=eit; ++it)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[*it], tgr);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7"> 204</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(KeySet &revSet, <span class="keyword">const</span> Key &k)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">SVFUtil::removeKey</a>(k, revSet);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da"> 211</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da">clearRevPts</a>(<span class="keyword">const</span> DataSet &pts, <span class="keyword">const</span> Key &k)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> Data &d : pts) <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[d], k);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942"> 221</a></span>  PtsMap <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64"> 222</a></span>  RevPtsMap <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> };</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet></div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html"> 227</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDiffPTData.html">MutableDiffPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData</a><Key, KeySet, Data, DataSet></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a562f0f584cd4f3b2d18f3973fde9c068"> 230</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a562f0f584cd4f3b2d18f3973fde9c068">BasePTData</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ab50b8026258c7c9103d2315ea3091340"> 231</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#ab50b8026258c7c9103d2315ea3091340">BaseDiffPTData</a>;</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a9d829f0eab7f5ecf1a1d7eaf5f47daf6"> 232</a></span>  <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_1MutableDiffPTData.html#a9d829f0eab7f5ecf1a1d7eaf5f47daf6">PTDataTy</a>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a5d64ef2d4b9ab65cc7a9e33bb6fe47cf"> 234</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">MutablePTData<Key, KeySet, Data, DataSet>::PtsMap</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a5d64ef2d4b9ab65cc7a9e33bb6fe47cf">PtsMap</a>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ae087d0307844312710c2d4c05535ea86"> 237</a></span>  <a class="code" href="classSVF_1_1MutableDiffPTData.html#ae087d0307844312710c2d4c05535ea86">MutableDiffPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::Diff) : BaseDiffPTData(reversePT, ty), mutPTData(reversePT) { }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8d69bae0bcbeecc98b51a23d50c064b6"> 239</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8d69bae0bcbeecc98b51a23d50c064b6">~MutableDiffPTData</a>() { }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8261a24cfb34056f3720cd6fbc0a4870"> 241</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8261a24cfb34056f3720cd6fbc0a4870">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> mutPTData.getPtsMap();</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8ae9624ac7fb1502eaa43173dacbe7b7"> 246</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8ae9624ac7fb1502eaa43173dacbe7b7">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  mutPTData.clear();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9"> 251</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9">getPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">return</span> mutPTData.getPts(var);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ad9bd6762fc6525afaed4a6c6da63688d"> 256</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet& <a class="code" href="classSVF_1_1MutableDiffPTData.html#ad9bd6762fc6525afaed4a6c6da63688d">getRevPts</a>(<span class="keyword">const</span> Data& datum)<span class="keyword"> override</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  assert(this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> && <span class="stringliteral">"MutableDiffPTData::getRevPts: constructed without reverse PT support!"</span>);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">return</span> mutPTData.getRevPts(datum);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a717c166c5efdf2e1d71be1772fc0898d"> 262</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a717c166c5efdf2e1d71be1772fc0898d">addPts</a>(<span class="keyword">const</span> Key &dstKey, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> mutPTData.addPts(dstKey, element);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a1596ef828786325ca06a3f5bada31757"> 267</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a1596ef828786325ca06a3f5bada31757">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> Key& srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">return</span> mutPTData.unionPts(dstKey, srcKey);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a746c384cf4633c3b07b4362e7b6c087a"> 272</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a746c384cf4633c3b07b4362e7b6c087a">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> DataSet& srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">return</span> mutPTData.unionPts(dstKey, srcDataSet);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a65028f1634a18f6adbd4cfdb526d1d20"> 277</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a65028f1634a18f6adbd4cfdb526d1d20">clearPts</a>(<span class="keyword">const</span> Key& var, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  mutPTData.clearPts(var, element);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8b6e2e5e016a5ae00ae440e3f383bb16"> 282</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8b6e2e5e016a5ae00ae440e3f383bb16">clearFullPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  mutPTData.clearFullPts(var);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a80142c1961d5e71c8f0dbadbb3c82184"> 287</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a80142c1961d5e71c8f0dbadbb3c82184">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  mutPTData.remapAllPts();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &ppt : diffPtsMap) ppt.second.checkAndRemap();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &ppt : propaPtsMap) ppt.second.checkAndRemap();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#adf10cc451517f8d3ee7aec8baa61772f"> 294</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#adf10cc451517f8d3ee7aec8baa61772f">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  mutPTData.dumpPTData();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a83dd3047c72cd1cd6ceb044cd1a924e4"> 299</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet &<a class="code" href="classSVF_1_1MutableDiffPTData.html#a83dd3047c72cd1cd6ceb044cd1a924e4">getDiffPts</a>(Key &var)<span class="keyword"> override</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> diffPtsMap[var];</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ac97bd53101f306c46ab4349a808f67c9"> 304</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#ac97bd53101f306c46ab4349a808f67c9">computeDiffPts</a>(Key &var, <span class="keyword">const</span> DataSet &all)<span class="keyword"> override</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  DataSet& diff = diffPtsMap[var];</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  diff.clear();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  DataSet& propa = getPropaPts(var);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  diff.intersectWithComplement(all, propa);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  propa = all;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> !diff.empty();</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a2feb36e64e27e6f0bcc0e108da433278"> 316</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a2feb36e64e27e6f0bcc0e108da433278">updatePropaPtsMap</a>(Key &src, Key &dst)<span class="keyword"> override</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  DataSet& srcPropa = getPropaPts(src);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  DataSet& dstPropa = getPropaPts(dst);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  dstPropa &= srcPropa;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a3946e3b737d95539cb57b10e53d356fc"> 323</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a3946e3b737d95539cb57b10e53d356fc">clearPropaPts</a>(Key &var)<span class="keyword"> override</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  getPropaPts(var).clear();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#adb89579b46a478f6d0e30e790838dca9"> 328</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#adb89579b46a478f6d0e30e790838dca9">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">return</span> mutPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a1b2d520d24a8d19de00e26237e5cd098"> 335</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a1b2d520d24a8d19de00e26237e5cd098">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html">MutableDiffPTData<Key, KeySet, Data, DataSet></a> *)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#af27d457e1905876631bcf74e434257ae"> 340</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#af27d457e1905876631bcf74e434257ae">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a>* ptd)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutDiff;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a450ed4470b1d83d44218904dd391fd75"> 348</a></span>  <span class="keyword">inline</span> DataSet &<a class="code" href="classSVF_1_1MutableDiffPTData.html#a450ed4470b1d83d44218904dd391fd75">getPropaPts</a>(Key &var)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">return</span> propaPtsMap[var];</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a3603cb4baf60b1aa83b7807ac5591484"> 355</a></span>  <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a3603cb4baf60b1aa83b7807ac5591484">mutPTData</a>;</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a9ee7874e987e93eb4cb9d75ed08effd5"> 357</a></span>  PtsMap <a class="code" href="classSVF_1_1MutableDiffPTData.html#a9ee7874e987e93eb4cb9d75ed08effd5">diffPtsMap</a>;</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#acd3c327ee7c8fd077d51751cc7069dee"> 359</a></span>  PtsMap <a class="code" href="classSVF_1_1MutableDiffPTData.html#acd3c327ee7c8fd077d51751cc7069dee">propaPtsMap</a>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> };</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData</a><Key, KeySet, Data, DataSet></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a25274e3029dfa655c47b72f291b906de"> 366</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a25274e3029dfa655c47b72f291b906de">BasePTData</a>;</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad02e5645ef7a73ba4c20c557a6f11789"> 367</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad02e5645ef7a73ba4c20c557a6f11789">BaseMutPTData</a>;</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a17a5aa4a749a5ffc75c663d057454e4a"> 368</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a17a5aa4a749a5ffc75c663d057454e4a">BaseDFPTData</a>;</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#af3074a07345844ecd97e420218b39255"> 369</a></span>  <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_1MutableDFPTData.html#af3074a07345844ecd97e420218b39255">PTDataTy</a>;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae847b982baec8115ede5d7d28cd91d34"> 371</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae847b982baec8115ede5d7d28cd91d34">LocID</a>;</div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae7456fccd4c95227cdd7163176703205"> 372</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">BaseMutPTData::PtsMap</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae7456fccd4c95227cdd7163176703205">PtsMap</a>;</div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a3f234abc0def4815a03de164fa258f24"> 373</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03">BaseMutPTData::PtsMapConstIter</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a3f234abc0def4815a03de164fa258f24">PtsMapConstIter</a>;</div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a0c73427f957d310bc85955bec6654352"> 374</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<LocID, PtsMap></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a0c73427f957d310bc85955bec6654352">DFPtsMap</a>; </div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a31ad5da37a88d2b97633d590393b0e64"> 375</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> DFPtsMap::iterator <a class="code" href="classSVF_1_1MutableDFPTData.html#a31ad5da37a88d2b97633d590393b0e64">DFPtsMapIter</a>;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#adb30678f5bbdea0f196d3b0ab67d2bad"> 376</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> DFPtsMap::const_iterator <a class="code" href="classSVF_1_1MutableDFPTData.html#adb30678f5bbdea0f196d3b0ab67d2bad">DFPtsMapconstIter</a>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#aed141fb836cb22e02032ea46e3e5f51b"> 379</a></span>  <a class="code" href="classSVF_1_1MutableDFPTData.html#aed141fb836cb22e02032ea46e3e5f51b">MutableDFPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = BaseDFPTData::MutDataFlow) : BaseDFPTData(reversePT, ty), mutPTData(reversePT) { }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a96331853265be5129964a9751f64bd8d"> 381</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a96331853265be5129964a9751f64bd8d">~MutableDFPTData</a>() { }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a8b1814326e71f6c6fd31d5aef0592a1d"> 383</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutableDFPTData.html#a8b1814326e71f6c6fd31d5aef0592a1d">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">return</span> mutPTData.getPtsMap();</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a446112803c54ca937f8b85e42a4a1381"> 388</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a446112803c54ca937f8b85e42a4a1381">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  mutPTData.clear();</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b"> 393</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b">getPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">return</span> mutPTData.getPts(var);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a2f98940bd8266ad37a975c6d30d948b4"> 398</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet& <a class="code" href="classSVF_1_1MutableDFPTData.html#a2f98940bd8266ad37a975c6d30d948b4">getRevPts</a>(<span class="keyword">const</span> Data& datum)<span class="keyword"> override</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  assert(this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> && <span class="stringliteral">"MutableDFPTData::getRevPts: constructed without reverse PT support!"</span>);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">return</span> mutPTData.getRevPts(datum);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9"> 404</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9">hasDFInSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">return</span> (dfInPtsMap.find(loc) != dfInPtsMap.end());</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac6d487a4af529ecb30366be54b29260a"> 409</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac6d487a4af529ecb30366be54b29260a">hasDFOutSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">return</span> (dfOutPtsMap.find(loc) != dfOutPtsMap.end());</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#aa8b85dee2b70031a2f97e1a36c9b25de"> 414</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#aa8b85dee2b70031a2f97e1a36c9b25de">hasDFInSet</a>(LocID loc,<span class="keyword">const</span> Key& var)<span class="keyword"> const override</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  DFPtsMapconstIter it = dfInPtsMap.find(loc);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span> ( it == dfInPtsMap.end())</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = it->second;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> (ptsMap.find(var) != ptsMap.end());</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#af6d234ae2b0aa91b510f3a2fba877340"> 423</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#af6d234ae2b0aa91b510f3a2fba877340">hasDFOutSet</a>(LocID loc, <span class="keyword">const</span> Key& var)<span class="keyword"> const override</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  DFPtsMapconstIter it = dfOutPtsMap.find(loc);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span> ( it == dfOutPtsMap.end())</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = it->second;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">return</span> (ptsMap.find(var) != ptsMap.end());</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> </div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a44aad57ac0de594e404a6c4ceff0bd53"> 432</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> DataSet& <a class="code" href="classSVF_1_1MutableDFPTData.html#a44aad57ac0de594e404a6c4ceff0bd53">getDFInPtsSet</a>(LocID loc, <span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  PtsMap& inSet = dfInPtsMap[loc];</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">return</span> inSet[var];</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab6b0496d0c34642ddd2707142334f4a2"> 438</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> DataSet& <a class="code" href="classSVF_1_1MutableDFPTData.html#ab6b0496d0c34642ddd2707142334f4a2">getDFOutPtsSet</a>(LocID loc, <span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  PtsMap& outSet = dfOutPtsMap[loc];</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> outSet[var];</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a7559810e1ad40588f5fd82123ea1f150"> 446</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutableDFPTData.html#a7559810e1ad40588f5fd82123ea1f150">getDFInPtsMap</a>(LocID loc)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">return</span> dfInPtsMap[loc];</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  }</div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a034c1bf20ab8a73a97863073e08dcd4e"> 450</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutableDFPTData.html#a034c1bf20ab8a73a97863073e08dcd4e">getDFOutPtsMap</a>(LocID loc)</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">return</span> dfOutPtsMap[loc];</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  }</div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae999df6f94a097f1fcb36979327790de"> 454</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DFPtsMap& <a class="code" href="classSVF_1_1MutableDFPTData.html#ae999df6f94a097f1fcb36979327790de">getDFIn</a>()</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">return</span> dfInPtsMap;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a6d02392602cf7956ff41e345518d683c"> 458</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DFPtsMap& <a class="code" href="classSVF_1_1MutableDFPTData.html#a6d02392602cf7956ff41e345518d683c">getDFOut</a>()</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">return</span> dfOutPtsMap;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac3ebc5afa531118b2b4446d23e3b8c7a"> 464</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac3ebc5afa531118b2b4446d23e3b8c7a">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">return</span> this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFInPtsSet(dstLoc,dstVar), getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a85c0d93ee01d2c93c255e5a369248d1b"> 469</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a85c0d93ee01d2c93c255e5a369248d1b">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">return</span> this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFInPtsSet(dstLoc,dstVar), getDFOutPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab3c517be91b4711ace581df075d4647a"> 474</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab3c517be91b4711ace581df075d4647a">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">return</span> this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFOutPtsSet(dstLoc,dstVar), getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a7c7eff549ea0d153e7a72ed5bf79c30e"> 479</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a7c7eff549ea0d153e7a72ed5bf79c30e">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">return</span> this->updateDFInFromOut(srcLoc,srcVar,dstLoc,dstVar);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a23fca889a29399a91dfc916f5fab46ee"> 484</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a23fca889a29399a91dfc916f5fab46ee">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">return</span> this->updateDFInFromIn(srcLoc,srcVar,dstLoc,dstVar);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a51365299a34e3386798e78a076d6e1f5"> 489</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a51365299a34e3386798e78a076d6e1f5">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key& singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">if</span> (this->hasDFInSet(loc))</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keyword">const</span> PtsMap & <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = getDFInPtsMap(loc);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::const_iterator ptsIt = ptsMap.begin(), ptsEit = ptsMap.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keyword">const</span> Key var = ptsIt->first;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">if</span> (strongUpdates && var == singleton)</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var))</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> </div><div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a21b29c2d3e429017d910025e4ec73fc6"> 509</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a21b29c2d3e429017d910025e4ec73fc6">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">return</span> this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(dstVar, this->getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a0ce585790bba942291bb7c7ffcaa3914"> 514</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a0ce585790bba942291bb7c7ffcaa3914">updateATVPts</a>(<span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">return</span> (this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFOutPtsSet(dstLoc, dstVar), this-><a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcVar)));</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a43a45997f6147245fe8a552b42f3f632"> 519</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a43a45997f6147245fe8a552b42f3f632">clearAllDFOutUpdatedVar</a>(LocID)<span class="keyword"> override</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab75373d16f57dbbf1e9472e9a27d6b4b"> 526</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab75373d16f57dbbf1e9472e9a27d6b4b">addPts</a>(<span class="keyword">const</span> Key &dstKey, <span class="keyword">const</span> Key& srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(mutPTData.ptsMap[dstKey], srcKey);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad64eed26e054eb4e91ec1139867cd196"> 530</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad64eed26e054eb4e91ec1139867cd196">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> Key& srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(mutPTData.ptsMap[dstKey], <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcKey));</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  }</div><div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab675653138960b16f23c801298e80f48"> 534</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab675653138960b16f23c801298e80f48">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> DataSet& srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(mutPTData.ptsMap[dstKey], srcDataSet);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  }</div><div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae0495fcba25d4baffda9f85254591ae1"> 538</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae0495fcba25d4baffda9f85254591ae1">clearPts</a>(<span class="keyword">const</span> Key& var, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  mutPTData.clearPts(var, element);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  }</div><div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab345e148997b9e1c6e4c2c76267880b7"> 542</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab345e148997b9e1c6e4c2c76267880b7">clearFullPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  mutPTData.clearFullPts(var);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  }</div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad34e442581dfe57ce7f1add25c8414b2"> 546</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad34e442581dfe57ce7f1add25c8414b2">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  mutPTData.remapAllPts();</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type &lopt : dfInPtsMap)</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &opt : lopt.second) opt.second.checkAndRemap();</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type &lopt : dfOutPtsMap)</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &opt : lopt.second) opt.second.checkAndRemap();</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> </div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac9120fbb056e23cdf84646a37d809a8d"> 561</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac9120fbb056e23cdf84646a37d809a8d">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> allPts = mutPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type lptsmap : dfInPtsMap)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type vpt : lptsmap.second)</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  ++allPts[vpt.second];</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type lptm : dfOutPtsMap)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type vpt : lptm.second)</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  ++allPts[vpt.second];</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> </div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> </div><div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a5baa6fffedfd0ac356590f9a0b222ee0"> 585</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a5baa6fffedfd0ac356590f9a0b222ee0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData<Key, KeySet, Data, DataSet></a> *)</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#acb338bbe5773001a15b81e596a764222"> 589</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#acb338bbe5773001a15b81e596a764222">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a>* ptd)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">return</span> ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BaseDFPTData::MutDataFlow</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  || ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BaseDFPTData::MutIncDataFlow;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a8b30798ad9485a88238cc340e5da3db7"> 599</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a8b30798ad9485a88238cc340e5da3db7">unionPts</a>(DataSet& dstDataSet, <span class="keyword">const</span> DataSet& srcDataSet)</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">return</span> dstDataSet |= srcDataSet;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  }</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab7d1a3464e561029573f6f3c13c9bff4"> 603</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab7d1a3464e561029573f6f3c13c9bff4">addPts</a>(DataSet &d, <span class="keyword">const</span> Data& e)</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">return</span> d.test_and_set(e);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  }</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> </div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a95f4644a82f84674164651db66b084b8"> 612</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a95f4644a82f84674164651db66b084b8">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  mutPTData.dumpPTData();</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  std::error_code ErrInfo;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  std::fstream f(<span class="stringliteral">"svfg_pts.data"</span>, std::ios_base::out);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">if</span> (f.good())</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> locs;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">for</span>(DFPtsMapconstIter it = dfInPtsMap.begin(), eit = dfInPtsMap.end(); it!=eit; ++it)</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  locs.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(it->first);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> </div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">for</span>(DFPtsMapconstIter it = dfOutPtsMap.begin(), eit = dfOutPtsMap.end(); it!=eit; ++it)</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  locs.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(it->first);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> </div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = locs.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = locs.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it != eit; it++)</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  LocID loc = *it;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">if</span> (this->hasDFInSet(loc))</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  f << <span class="stringliteral">"Loc:"</span> << loc << <span class="stringliteral">" IN:{"</span>;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  this-><a class="code" href="classSVF_1_1MutablePTData.html#af08060bb4d450ecc4160cb79ab3dcc77">dumpPts</a>(this->getDFInPtsMap(loc), f);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  f << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> </div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">if</span> (this->hasDFOutSet(loc))</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  f << <span class="stringliteral">"Loc:"</span> << loc << <span class="stringliteral">" OUT:{"</span>;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  this-><a class="code" href="classSVF_1_1MutablePTData.html#af08060bb4d450ecc4160cb79ab3dcc77">dumpPts</a>(this->getDFOutPtsMap(loc), f);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  f << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  }</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  }</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  f.close();</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">if</span> (f.good())</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">" error opening file for writing!\n"</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae88094abad311dd633f66db2cd78c322"> 655</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae88094abad311dd633f66db2cd78c322">dumpPts</a>(<span class="keyword">const</span> PtsMap & ptsSet,<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> & O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>())<span class="keyword"> const</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">for</span> (PtsMapConstIter nodeIt = ptsSet.begin(); nodeIt != ptsSet.end(); nodeIt++)</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keyword">const</span> Key& var = nodeIt->first;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keyword">const</span> DataSet & pts = nodeIt->second;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">if</span> (pts.empty())</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  O << <span class="stringliteral">"<"</span> << var << <span class="stringliteral">",{"</span>;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVFUtil::dumpSet</a>(pts,O);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  O << <span class="stringliteral">"}> "</span>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  }</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  }</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> </div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00672"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#abb59ef7367e353e65b82b54dac509f36"> 672</a></span>  DFPtsMap <a class="code" href="classSVF_1_1MutableDFPTData.html#abb59ef7367e353e65b82b54dac509f36">dfInPtsMap</a>;</div><div class="line"><a name="l00674"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad3c53ef1c8e221299f3afe078946fbe0"> 674</a></span>  DFPtsMap <a class="code" href="classSVF_1_1MutableDFPTData.html#ad3c53ef1c8e221299f3afe078946fbe0">dfOutPtsMap</a>;</div><div class="line"><a name="l00677"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#acf40f716470f73095d44a1b9e3bb939e"> 677</a></span>  <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#acf40f716470f73095d44a1b9e3bb939e">mutPTData</a>;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> };</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> </div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet></div><div class="line"><a name="l00682"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html"> 682</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableIncDFPTData.html">MutableIncDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a><Key, KeySet, Data, DataSet></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00685"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a14651359d0efe886c1313fd843e4d1db"> 685</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a14651359d0efe886c1313fd843e4d1db">BasePTData</a>;</div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a92f00e91a338113383bcf7bc8ce0026a"> 686</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a92f00e91a338113383bcf7bc8ce0026a">BaseMutPTData</a>;</div><div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a4b944ec759d0e78a7a2238db587752a9"> 687</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a4b944ec759d0e78a7a2238db587752a9">BaseDFPTData</a>;</div><div class="line"><a name="l00688"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a58f9b6357a5cf0243cf3b4ece30e8cf6"> 688</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a58f9b6357a5cf0243cf3b4ece30e8cf6">BaseMutDFPTData</a>;</div><div class="line"><a name="l00689"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a5f1715813082c1f02d6888b9ec32a75e"> 689</a></span>  <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_1MutableIncDFPTData.html#a5f1715813082c1f02d6888b9ec32a75e">PTDataTy</a>;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> </div><div class="line"><a name="l00691"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a74d9f271ea0fa69e56ddbe16f10f3241"> 691</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a74d9f271ea0fa69e56ddbe16f10f3241">LocID</a>;</div><div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a67c24cebffdcea9c8059f6769c7f9798"> 692</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<LocID, DataSet></a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a67c24cebffdcea9c8059f6769c7f9798">UpdatedVarMap</a>; </div><div class="line"><a name="l00693"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a8b30326d3fa3f4054e67268f512aec9e"> 693</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> UpdatedVarMap::iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a8b30326d3fa3f4054e67268f512aec9e">UpdatedVarMapIter</a>;</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#af815dd2108c16e1dfddbcd5bdbcceeb6"> 694</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> UpdatedVarMap::const_iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#af815dd2108c16e1dfddbcd5bdbcceeb6">UpdatedVarconstIter</a>;</div><div class="line"><a name="l00695"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a1fc4dff28f9044234fdfeede6f4b1cb0"> 695</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> DataSet::iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a1fc4dff28f9044234fdfeede6f4b1cb0">DataIter</a>;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> </div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#af5f7db6c55037a0e117a36982736039e"> 698</a></span>  UpdatedVarMap <a class="code" href="classSVF_1_1MutableIncDFPTData.html#af5f7db6c55037a0e117a36982736039e">outUpdatedVarMap</a>;</div><div class="line"><a name="l00699"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ab5e9ebf9e71652b5fa63d59c97d016e4"> 699</a></span>  UpdatedVarMap <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ab5e9ebf9e71652b5fa63d59c97d016e4">inUpdatedVarMap</a>;</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00703"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a9b06421a9043dc61485acf51cfc26a91"> 703</a></span>  <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a9b06421a9043dc61485acf51cfc26a91">MutableIncDFPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c">BasePTData::MutIncDataFlow</a>) : BaseMutDFPTData(reversePT, ty) { }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> </div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#adf4e5c57d7b7ae7da37bb1a4eabfe8a6"> 705</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#adf4e5c57d7b7ae7da37bb1a4eabfe8a6">~MutableIncDFPTData</a>() { }</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> </div><div class="line"><a name="l00707"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a775ef6458314a1febef3f7372f6a2bbc"> 707</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a775ef6458314a1febef3f7372f6a2bbc">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc, srcVar) &&</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFInPtsSet(dstLoc,dstVar), this->getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  }</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> </div><div class="line"><a name="l00718"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad199b4b84f7aab48ff1510b118e2982f"> 718</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad199b4b84f7aab48ff1510b118e2982f">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">if</span>(varHasNewDFOutPts(srcLoc, srcVar) &&</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFInPtsSet(dstLoc,dstVar), this->getDFOutPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  }</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> </div><div class="line"><a name="l00729"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa326ac77577a8a4a0ce3e29cc03a3989"> 729</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa326ac77577a8a4a0ce3e29cc03a3989">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc,srcVar))</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  removeVarFromDFInUpdatedSet(srcLoc,srcVar);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFOutPtsSet(dstLoc,dstVar), this->getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  {</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  setVarDFOutSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  }</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  }</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> </div><div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a2dd9dad547c389d5cd488b165dd145eb"> 743</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a2dd9dad547c389d5cd488b165dd145eb">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keywordflow">if</span>(this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFInPtsSet(dstLoc,dstVar), this->getDFOutPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  }</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  }</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> </div><div class="line"><a name="l00753"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad68b23ed56b2c18bf75c23a658523404"> 753</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad68b23ed56b2c18bf75c23a658523404">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">if</span>(this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFInPtsSet(dstLoc,dstVar), this->getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  }</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div><div class="line"><a name="l00763"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a3f397aaf4f3d6d04ec005c2577652e04"> 763</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a3f397aaf4f3d6d04ec005c2577652e04">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key& singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">if</span> (this->hasDFInSet(loc))</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  DataSet pts = getDFInUpdatedVar(loc);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordflow">for</span> (DataIter ptsIt = pts.begin(), ptsEit = pts.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keyword">const</span> Key var = *ptsIt;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">if</span> (strongUpdates && var == singleton)</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var))</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  }</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  }</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  }</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> </div><div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a7778be60515fa3ff247b6d2cec138cfc"> 783</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a7778be60515fa3ff247b6d2cec138cfc">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc,srcVar))</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  removeVarFromDFInUpdatedSet(srcLoc,srcVar);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">return</span> this->mutPTData.unionPts(dstVar, this->getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> </div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa8fdf0f82d3d94af34d5bc1386ed21f9"> 793</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa8fdf0f82d3d94af34d5bc1386ed21f9">updateATVPts</a>(<span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFOutPtsSet(dstLoc, dstVar), this->mutPTData.getPts(srcVar)))</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  setVarDFOutSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  }</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> </div><div class="line"><a name="l00803"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ac9ff175dbdf75232a104e2aa34f87d43"> 803</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ac9ff175dbdf75232a104e2aa34f87d43">clearAllDFOutUpdatedVar</a>(LocID loc)<span class="keyword"> override</span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">if</span> (this->hasDFOutSet(loc))</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  DataSet pts = getDFOutUpdatedVar(loc);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="keywordflow">for</span> (DataIter ptsIt = pts.begin(), ptsEit = pts.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keyword">const</span> Key var = *ptsIt;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  removeVarFromDFOutUpdatedSet(loc, var);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  }</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  }</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a89f65d37096c82fcdddb1c324ec206d2"> 818</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a89f65d37096c82fcdddb1c324ec206d2">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html">MutableIncDFPTData<Key, KeySet, Data, DataSet></a> *)</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  }</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div><div class="line"><a name="l00823"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa4c262f0d62e902912d4cd7999731d3d"> 823</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa4c262f0d62e902912d4cd7999731d3d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a>* ptd)</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  {</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">return</span> ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c">BasePTData::MutIncDataFlow</a>;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  }</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> </div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> setVarDFInSetUpdated(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  inUpdatedVarMap[loc].set(var);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  }</div><div class="line"><a name="l00837"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a913c1a2c48526160eeecd028bd22cfc4"> 837</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a913c1a2c48526160eeecd028bd22cfc4">removeVarFromDFInUpdatedSet</a>(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  UpdatedVarMapIter it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">if</span> (it != inUpdatedVarMap.end())</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  it->second.reset(var);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  }</div><div class="line"><a name="l00844"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ae7ed810cf4de695072ba5c4d0c882353"> 844</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ae7ed810cf4de695072ba5c4d0c882353">varHasNewDFInPts</a>(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  {</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  UpdatedVarMapIter it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">if</span> (it != inUpdatedVarMap.end())</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keywordflow">return</span> it->second.test(var);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  }</div><div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ae4d0989cb98814f943bd4dfd09a37017"> 852</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ae4d0989cb98814f943bd4dfd09a37017">getDFInUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="keywordflow">return</span> inUpdatedVarMap[loc];</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  }</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> </div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> </div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> setVarDFOutSetUpdated(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  {</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  outUpdatedVarMap[loc].set(var);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  }</div><div class="line"><a name="l00866"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ac055ad77582b36083ca1950c39207f5e"> 866</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ac055ad77582b36083ca1950c39207f5e">removeVarFromDFOutUpdatedSet</a>(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  {</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  UpdatedVarMapIter it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordflow">if</span> (it != outUpdatedVarMap.end())</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  it->second.reset(var);</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  }</div><div class="line"><a name="l00873"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a55b19f617d11dfc6632b690694f264ab"> 873</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a55b19f617d11dfc6632b690694f264ab">varHasNewDFOutPts</a>(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  UpdatedVarMapIter it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordflow">if</span> (it != outUpdatedVarMap.end())</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keywordflow">return</span> it->second.test(var);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  }</div><div class="line"><a name="l00881"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad1ae7faf04ba10ac4ac6a6f1cc498547"> 881</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad1ae7faf04ba10ac4ac6a6f1cc498547">getDFOutUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  {</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">return</span> outUpdatedVarMap[loc];</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  }</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> };</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> </div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> <span class="keyword">template</span> <<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></div><div class="line"><a name="l00892"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html"> 892</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableVersionedPTData.html">MutableVersionedPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData</a><Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet></div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> {</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00895"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a31fd15a8147e3146b15b4d24fe34cf46"> 895</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a31fd15a8147e3146b15b4d24fe34cf46">BasePTData</a>;</div><div class="line"><a name="l00896"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa80044e3b4c3ed58117573dfa54d803b"> 896</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData<Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet></a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa80044e3b4c3ed58117573dfa54d803b">BaseVersionedPTData</a>;</div><div class="line"><a name="l00897"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#af7bf99aeb752c4216a60d1fa5187b49e"> 897</a></span>  <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_1MutableVersionedPTData.html#af7bf99aeb752c4216a60d1fa5187b49e">PTDataTy</a>;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> </div><div class="line"><a name="l00899"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ad2f9950ad71a39c400a4835e6e84fcd9"> 899</a></span>  <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ad2f9950ad71a39c400a4835e6e84fcd9">MutableVersionedPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::MutVersioned)</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  : BaseVersionedPTData(reversePT, ty), tlPTData(reversePT), atPTData(reversePT) { }</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> </div><div class="line"><a name="l00902"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#adf809b61632067b0a987d2975e6377dc"> 902</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#adf809b61632067b0a987d2975e6377dc">~MutableVersionedPTData</a>() { }</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> </div><div class="line"><a name="l00904"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ab476e1b59aead37b440fd5735df3814b"> 904</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ab476e1b59aead37b440fd5735df3814b">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  tlPTData.clear();</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  atPTData.clear();</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  }</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> </div><div class="line"><a name="l00910"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aaf519166d2e0ca3c81088b52a1cf3066"> 910</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aaf519166d2e0ca3c81088b52a1cf3066">getPts</a>(<span class="keyword">const</span> Key& vk)<span class="keyword"> override</span></div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">return</span> tlPTData.getPts(vk);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  }</div><div class="line"><a name="l00914"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#afcc34f6cedca6a8f151b1a7251832818"> 914</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableVersionedPTData.html#afcc34f6cedca6a8f151b1a7251832818">getPts</a>(<span class="keyword">const</span> VersionedKey& vk)<span class="keyword"> override</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordflow">return</span> atPTData.getPts(vk);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  }</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> </div><div class="line"><a name="l00919"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a7de508c0d83895aee785524d28eac8b9"> 919</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> KeySet& <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a7de508c0d83895aee785524d28eac8b9">getRevPts</a>(<span class="keyword">const</span> Data& datum)<span class="keyword"> override</span></div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  assert(this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> && <span class="stringliteral">"MutableVersionedPTData::getRevPts: constructed without reverse PT support!"</span>);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordflow">return</span> tlPTData.getRevPts(datum);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  }</div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#afaef5c61bee74cbd649c787cfdef2a03"> 924</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> VersionedKeySet& <a class="code" href="classSVF_1_1MutableVersionedPTData.html#afaef5c61bee74cbd649c787cfdef2a03">getVersionedKeyRevPts</a>(<span class="keyword">const</span> Data& datum)<span class="keyword"> override</span></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  assert(this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> && <span class="stringliteral">"MutableVersionedPTData::getVersionedKeyRevPts: constructed without reverse PT support!"</span>);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordflow">return</span> atPTData.getRevPts(datum);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  }</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span> </div><div class="line"><a name="l00930"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a00a88cc3e802921c6a0951801ec712a6"> 930</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a00a88cc3e802921c6a0951801ec712a6">addPts</a>(<span class="keyword">const</span> Key& k, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">return</span> tlPTData.addPts(k, element);</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  }</div><div class="line"><a name="l00934"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#af39232f64ff0ede20161c7f265da6cf5"> 934</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#af39232f64ff0ede20161c7f265da6cf5">addPts</a>(<span class="keyword">const</span> VersionedKey& vk, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">return</span> atPTData.addPts(vk, element);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  }</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> </div><div class="line"><a name="l00939"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ae79628fc101567ba84215b624dd00c01"> 939</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ae79628fc101567ba84215b624dd00c01">unionPts</a>(<span class="keyword">const</span> Key& dstVar, <span class="keyword">const</span> Key& srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  }</div><div class="line"><a name="l00943"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a56e752a83620f482a4b1e2f8d395dd75"> 943</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a56e752a83620f482a4b1e2f8d395dd75">unionPts</a>(<span class="keyword">const</span> VersionedKey& dstVar, <span class="keyword">const</span> VersionedKey& srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  }</div><div class="line"><a name="l00947"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a5647b7fad5c14f7ec57d3de3480758eb"> 947</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a5647b7fad5c14f7ec57d3de3480758eb">unionPts</a>(<span class="keyword">const</span> VersionedKey& dstVar, <span class="keyword">const</span> Key& srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">return</span> atPTData.unionPts(dstVar, tlPTData.getPts(srcVar));</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  }</div><div class="line"><a name="l00951"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a9967c530d3955a0a726b7a00653ef0ba"> 951</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a9967c530d3955a0a726b7a00653ef0ba">unionPts</a>(<span class="keyword">const</span> Key& dstVar, <span class="keyword">const</span> VersionedKey& srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, atPTData.getPts(srcVar));</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  }</div><div class="line"><a name="l00955"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa9ab46b7afc7f47df20e74bda300dc42"> 955</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa9ab46b7afc7f47df20e74bda300dc42">unionPts</a>(<span class="keyword">const</span> Key& dstVar, <span class="keyword">const</span> DataSet& srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  }</div><div class="line"><a name="l00959"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa9d24a4defb025c075e4ec5bc7f3b618"> 959</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa9d24a4defb025c075e4ec5bc7f3b618">unionPts</a>(<span class="keyword">const</span> VersionedKey& dstVar, <span class="keyword">const</span> DataSet& srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> </div><div class="line"><a name="l00964"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ab20b71c9e2f31439c95071c375bf89e0"> 964</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ab20b71c9e2f31439c95071c375bf89e0">clearPts</a>(<span class="keyword">const</span> Key& k, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  tlPTData.clearPts(k, element);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  }</div><div class="line"><a name="l00968"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a21e823484199946541b8b79d736b2601"> 968</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a21e823484199946541b8b79d736b2601">clearPts</a>(<span class="keyword">const</span> VersionedKey& vk, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  atPTData.clearPts(vk, element);</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  }</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> </div><div class="line"><a name="l00973"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a9f985ff2daee53fb661e4b2bcfd17f05"> 973</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a9f985ff2daee53fb661e4b2bcfd17f05">clearFullPts</a>(<span class="keyword">const</span> Key& k)<span class="keyword"> override</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  tlPTData.clearFullPts(k);</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  }</div><div class="line"><a name="l00977"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aaf3df7501f84233f6a687ef9f2f0ae90"> 977</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aaf3df7501f84233f6a687ef9f2f0ae90">clearFullPts</a>(<span class="keyword">const</span> VersionedKey& vk)<span class="keyword"> override</span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  atPTData.clearFullPts(vk);</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  }</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> </div><div class="line"><a name="l00982"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a72cbf33b77f5a19221ad265691065695"> 982</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a72cbf33b77f5a19221ad265691065695">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  tlPTData.remapAllPts();</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  atPTData.remapAllPts();</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  }</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> </div><div class="line"><a name="l00988"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a6cac338e74f869d0e708c7e2b356b5d7"> 988</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a6cac338e74f869d0e708c7e2b356b5d7">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> allPts = tlPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  SVFUtil::mergePtsOccMaps<DataSet>(allPts, atPTData.getAllPts(liveOnly));</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> </div><div class="line"><a name="l00995"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a796c1676dd5180a27dbebae5a99b57b7"> 995</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a796c1676dd5180a27dbebae5a99b57b7">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"== Top-level points-to information\n"</span>;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  tlPTData.dumpPTData();</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"== Address-taken points-to information\n"</span>;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  atPTData.dumpPTData();</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  }</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div><div class="line"><a name="l01005"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a6be54447671288a666af5d48972e2ccf"> 1005</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a6be54447671288a666af5d48972e2ccf">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html">MutableVersionedPTData<Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet></a> *)</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  {</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  }</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div><div class="line"><a name="l01010"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a646111552a7112b8e48c00e766ce8d9b"> 1010</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a646111552a7112b8e48c00e766ce8d9b">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a>* ptd)</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">return</span> ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutVersioned;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  }</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> </div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <span class="keyword">private</span>:</div><div class="line"><a name="l01018"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a01974968b7cf60a4231cc83c93b26d7f"> 1018</a></span>  <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a01974968b7cf60a4231cc83c93b26d7f">tlPTData</a>;</div><div class="line"><a name="l01020"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a3e5337d4189e98f11305491a9ef3c439"> 1020</a></span>  <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<VersionedKey, VersionedKeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a3e5337d4189e98f11305491a9ef3c439">atPTData</a>;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> };</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="preprocessor">#endif // MUTABLE_POINTSTO_H_</span></div><div class="ttc" id="classSVF_1_1MutableDFPTData_html_a9a9641305c9d670e09f02b71a3e384a9"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9">SVF::MutableDFPTData::hasDFInSet</a></div><div class="ttdeci">virtual bool hasDFInSet(LocID loc) const override</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00404">MutablePointsToDS.h:404</a></div></div>
|
|
69
|
+
<a href="MutablePointsToDS_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> <span class="comment">//===- MutablePointsToDS.h -- Mutable points-to data structure-------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">/*</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * MutablePointsToDS.h</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * Authors: Mohamad Barbar and Yulei Sui</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * The implementation is based on</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> * Mohamad Barbar and Yulei Sui. Hash Consed Points-To Sets.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * 28th Static Analysis Symposium (SAS'21)</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef MUTABLE_POINTSTO_H_</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define MUTABLE_POINTSTO_H_</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include<fstream></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="AbstractPointsToDS_8h.html">MemoryModel/AbstractPointsToDS.h</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "<a class="code" href="SVFType_8h.html">SVFIR/SVFType.h</a>"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet></div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html"> 49</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet></div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html"> 53</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a><Key, KeySet, Data, DataSet></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad92cfe345043b1bc8d6c7a03df43310f"> 55</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a><Key, KeySet, Data, DataSet>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ab88ea00589ec9353bccf3629a1c4e5d3"> 57</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutablePTData.html#ab88ea00589ec9353bccf3629a1c4e5d3">BasePTData</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a9e69cb846a8d2da102981d1f48cb16dd"> 58</a></span>  <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_1MutablePTData.html#a9e69cb846a8d2da102981d1f48cb16dd">PTDataTy</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e"> 60</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<Key, DataSet></a> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">PtsMap</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a6d491581d17876625d0265cd26acd8e1"> 61</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<Data, KeySet></a> <a class="code" href="classSVF_1_1MutablePTData.html#a6d491581d17876625d0265cd26acd8e1">RevPtsMap</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad08dbfa28cd0d622322091d6600748ed"> 62</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> PtsMap::iterator <a class="code" href="classSVF_1_1MutablePTData.html#ad08dbfa28cd0d622322091d6600748ed">PtsMapIter</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03"> 63</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> PtsMap::const_iterator <a class="code" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03">PtsMapConstIter</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ae856f07441da3988d6a31eea1e30a7d9"> 64</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> DataSet::iterator <a class="code" href="classSVF_1_1MutablePTData.html#ae856f07441da3988d6a31eea1e30a7d9">iterator</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5086e718e98482a7a0330ed05993feaa"> 67</a></span>  <a class="code" href="classSVF_1_1MutablePTData.html#a5086e718e98482a7a0330ed05993feaa">MutablePTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::MutBase) : BasePTData(reversePT, ty) { }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a90ca0be479d5c30ba96db2f8513be7be"> 69</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutablePTData.html#a90ca0be479d5c30ba96db2f8513be7be">~MutablePTData</a>() { }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b"> 72</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ac8da1a3357c3bc529f6ca85615486951"> 77</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#ac8da1a3357c3bc529f6ca85615486951">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>.clear();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>.clear();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62"> 83</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var];</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a36aa05b8f5c308035315d6df7036c096"> 88</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet& <a class="code" href="classSVF_1_1MutablePTData.html#a36aa05b8f5c308035315d6df7036c096">getRevPts</a>(<span class="keyword">const</span> Data& datum)<span class="keyword"> override</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  assert(this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> && <span class="stringliteral">"MutablePTData::getRevPts: constructed without reverse PT support!"</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[datum];</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1"> 94</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(<span class="keyword">const</span> Key &dstKey, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[element], dstKey);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], element);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f"> 100</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> Key& srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[srcKey], dstKey);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcKey));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a124e8cc8d2dbbd70682a4b7845e5d600"> 106</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a124e8cc8d2dbbd70682a4b7845e5d600">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> DataSet& srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(srcDataSet,dstKey);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[dstKey], srcDataSet);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3206473b309c231d7d4b991a36a35279"> 112</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3206473b309c231d7d4b991a36a35279">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="classSVF_1_1MutablePTData.html#af08060bb4d450ecc4160cb79ab3dcc77">dumpPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5ca2c5a8908d003b7ec2c17f949ae6aa"> 117</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5ca2c5a8908d003b7ec2c17f949ae6aa">clearPts</a>(<span class="keyword">const</span> Key& var, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[element], var);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var].reset(element);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3bf34d8040779b4d251bb08a58604d77"> 123</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3bf34d8040779b4d251bb08a58604d77">clearFullPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  DataSet &pts = <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>[var];</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da">clearRevPts</a>(pts, var);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  pts.clear();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a3b4cd5b4f8704a5b0049923d22ce7665"> 130</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a3b4cd5b4f8704a5b0049923d22ce7665">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &ppt : <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>) ppt.second.checkAndRemap();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad20254ace6d9976da2099413f5790458"> 135</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> <a class="code" href="classSVF_1_1MutablePTData.html#ad20254ace6d9976da2099413f5790458">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> allPts;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type ppt : <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">const</span> DataSet &pt = ppt.second;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  ++allPts[pt];</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a589d71ff881e53133e5c688f1c616ab3"> 149</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a589d71ff881e53133e5c688f1c616ab3">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> *)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a577a7fce1affd462afeb9fefa4bdb4a8"> 154</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a577a7fce1affd462afeb9fefa4bdb4a8">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a>* ptd)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutBase;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#af08060bb4d450ecc4160cb79ab3dcc77"> 161</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#af08060bb4d450ecc4160cb79ab3dcc77">dumpPts</a>(<span class="keyword">const</span> PtsMap & ptsSet,<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> & O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>())<span class="keyword"> const</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">for</span> (PtsMapConstIter nodeIt = ptsSet.begin(); nodeIt != ptsSet.end(); nodeIt++)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">const</span> Key& var = nodeIt->first;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">const</span> DataSet & pts = nodeIt->second;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span> (pts.empty())</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  O << var << <span class="stringliteral">" ==> { "</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">for</span>(<span class="keyword">typename</span> DataSet::iterator cit = pts.begin(), ecit=pts.end(); cit!=ecit; ++cit)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  O << *cit << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  O << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#abaf96c47ab029c6bc91ff23a4c061505"> 181</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#abaf96c47ab029c6bc91ff23a4c061505">unionPts</a>(DataSet& dstDataSet, <span class="keyword">const</span> DataSet& srcDataSet)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> dstDataSet |= srcDataSet;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a8cdeda0ef0e976102d05de3004bd8c8a"> 185</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutablePTData.html#a8cdeda0ef0e976102d05de3004bd8c8a">addPts</a>(DataSet &d, <span class="keyword">const</span> Data& e)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">return</span> d.test_and_set(e);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662"> 189</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(KeySet &revData, <span class="keyword">const</span> Key& tgr)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVFUtil::insertKey</a>(tgr, revData);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb"> 196</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad3175d9c02d8a9f6ad1752ccf3e468cb">addRevPts</a>(<span class="keyword">const</span> DataSet &ptsData, <span class="keyword">const</span> Key& tgr)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">for</span>(iterator it = ptsData.begin(), eit = ptsData.end(); it!=eit; ++it)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="classSVF_1_1MutablePTData.html#a4c5d5d5d73db6dc6b721a076bcae3662">addSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[*it], tgr);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7"> 204</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(KeySet &revSet, <span class="keyword">const</span> Key &k)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">SVFUtil::removeKey</a>(k, revSet);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da"> 211</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da">clearRevPts</a>(<span class="keyword">const</span> DataSet &pts, <span class="keyword">const</span> Key &k)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> Data &d : pts) <a class="code" href="classSVF_1_1MutablePTData.html#a5756fb30b7bd405c04defb49a7d688f7">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>[d], k);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942"> 221</a></span>  PtsMap <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64"> 222</a></span>  RevPtsMap <a class="code" href="classSVF_1_1MutablePTData.html#ad8c9fc1b290372ed9c68e54687724b64">revPtsMap</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> };</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet></div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html"> 227</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDiffPTData.html">MutableDiffPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData</a><Key, KeySet, Data, DataSet></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a562f0f584cd4f3b2d18f3973fde9c068"> 230</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a562f0f584cd4f3b2d18f3973fde9c068">BasePTData</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ab50b8026258c7c9103d2315ea3091340"> 231</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#ab50b8026258c7c9103d2315ea3091340">BaseDiffPTData</a>;</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a9d829f0eab7f5ecf1a1d7eaf5f47daf6"> 232</a></span>  <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_1MutableDiffPTData.html#a9d829f0eab7f5ecf1a1d7eaf5f47daf6">PTDataTy</a>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a5d64ef2d4b9ab65cc7a9e33bb6fe47cf"> 234</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">MutablePTData<Key, KeySet, Data, DataSet>::PtsMap</a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a5d64ef2d4b9ab65cc7a9e33bb6fe47cf">PtsMap</a>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ae087d0307844312710c2d4c05535ea86"> 237</a></span>  <span class="keyword">explicit</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#ae087d0307844312710c2d4c05535ea86">MutableDiffPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::Diff) : BaseDiffPTData(reversePT, ty), mutPTData(reversePT) { }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  ~<a class="code" href="classSVF_1_1MutableDiffPTData.html">MutableDiffPTData</a>() <span class="keyword">override</span> = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8261a24cfb34056f3720cd6fbc0a4870"> 241</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8261a24cfb34056f3720cd6fbc0a4870">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> mutPTData.getPtsMap();</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a712da72277711b9aa1b33a197f6ff23f"> 246</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a712da72277711b9aa1b33a197f6ff23f">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  mutPTData.clear();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9"> 251</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9">getPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">return</span> mutPTData.getPts(var);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ad9bd6762fc6525afaed4a6c6da63688d"> 256</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet& <a class="code" href="classSVF_1_1MutableDiffPTData.html#ad9bd6762fc6525afaed4a6c6da63688d">getRevPts</a>(<span class="keyword">const</span> Data& datum)<span class="keyword"> override</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  assert(this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> && <span class="stringliteral">"MutableDiffPTData::getRevPts: constructed without reverse PT support!"</span>);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">return</span> mutPTData.getRevPts(datum);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a717c166c5efdf2e1d71be1772fc0898d"> 262</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a717c166c5efdf2e1d71be1772fc0898d">addPts</a>(<span class="keyword">const</span> Key &dstKey, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> mutPTData.addPts(dstKey, element);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a1596ef828786325ca06a3f5bada31757"> 267</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a1596ef828786325ca06a3f5bada31757">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> Key& srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">return</span> mutPTData.unionPts(dstKey, srcKey);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a746c384cf4633c3b07b4362e7b6c087a"> 272</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a746c384cf4633c3b07b4362e7b6c087a">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> DataSet& srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">return</span> mutPTData.unionPts(dstKey, srcDataSet);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a65028f1634a18f6adbd4cfdb526d1d20"> 277</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a65028f1634a18f6adbd4cfdb526d1d20">clearPts</a>(<span class="keyword">const</span> Key& var, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  mutPTData.clearPts(var, element);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a8b6e2e5e016a5ae00ae440e3f383bb16"> 282</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a8b6e2e5e016a5ae00ae440e3f383bb16">clearFullPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  mutPTData.clearFullPts(var);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a80142c1961d5e71c8f0dbadbb3c82184"> 287</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a80142c1961d5e71c8f0dbadbb3c82184">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  mutPTData.remapAllPts();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &ppt : diffPtsMap) ppt.second.checkAndRemap();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &ppt : propaPtsMap) ppt.second.checkAndRemap();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#adf10cc451517f8d3ee7aec8baa61772f"> 294</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#adf10cc451517f8d3ee7aec8baa61772f">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  mutPTData.dumpPTData();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a83dd3047c72cd1cd6ceb044cd1a924e4"> 299</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet &<a class="code" href="classSVF_1_1MutableDiffPTData.html#a83dd3047c72cd1cd6ceb044cd1a924e4">getDiffPts</a>(Key &var)<span class="keyword"> override</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> diffPtsMap[var];</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#ac97bd53101f306c46ab4349a808f67c9"> 304</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#ac97bd53101f306c46ab4349a808f67c9">computeDiffPts</a>(Key &var, <span class="keyword">const</span> DataSet &all)<span class="keyword"> override</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  DataSet& diff = diffPtsMap[var];</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  diff.clear();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  DataSet& propa = getPropaPts(var);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  diff.intersectWithComplement(all, propa);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  propa = all;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> !diff.empty();</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a2feb36e64e27e6f0bcc0e108da433278"> 316</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a2feb36e64e27e6f0bcc0e108da433278">updatePropaPtsMap</a>(Key &src, Key &dst)<span class="keyword"> override</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  DataSet& srcPropa = getPropaPts(src);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  DataSet& dstPropa = getPropaPts(dst);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  dstPropa &= srcPropa;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a3946e3b737d95539cb57b10e53d356fc"> 323</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a3946e3b737d95539cb57b10e53d356fc">clearPropaPts</a>(Key &var)<span class="keyword"> override</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  getPropaPts(var).clear();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#adb89579b46a478f6d0e30e790838dca9"> 328</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#adb89579b46a478f6d0e30e790838dca9">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">return</span> mutPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a1b2d520d24a8d19de00e26237e5cd098"> 335</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a1b2d520d24a8d19de00e26237e5cd098">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html">MutableDiffPTData<Key, KeySet, Data, DataSet></a> *)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#af27d457e1905876631bcf74e434257ae"> 340</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDiffPTData.html#af27d457e1905876631bcf74e434257ae">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a>* ptd)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutDiff;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a450ed4470b1d83d44218904dd391fd75"> 348</a></span>  <span class="keyword">inline</span> DataSet &<a class="code" href="classSVF_1_1MutableDiffPTData.html#a450ed4470b1d83d44218904dd391fd75">getPropaPts</a>(Key &var)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">return</span> propaPtsMap[var];</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a3603cb4baf60b1aa83b7807ac5591484"> 355</a></span>  <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDiffPTData.html#a3603cb4baf60b1aa83b7807ac5591484">mutPTData</a>;</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#a9ee7874e987e93eb4cb9d75ed08effd5"> 357</a></span>  PtsMap <a class="code" href="classSVF_1_1MutableDiffPTData.html#a9ee7874e987e93eb4cb9d75ed08effd5">diffPtsMap</a>;</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDiffPTData.html#acd3c327ee7c8fd077d51751cc7069dee"> 359</a></span>  PtsMap <a class="code" href="classSVF_1_1MutableDiffPTData.html#acd3c327ee7c8fd077d51751cc7069dee">propaPtsMap</a>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> };</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData</a><Key, KeySet, Data, DataSet></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a25274e3029dfa655c47b72f291b906de"> 366</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a25274e3029dfa655c47b72f291b906de">BasePTData</a>;</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad02e5645ef7a73ba4c20c557a6f11789"> 367</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad02e5645ef7a73ba4c20c557a6f11789">BaseMutPTData</a>;</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a17a5aa4a749a5ffc75c663d057454e4a"> 368</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a17a5aa4a749a5ffc75c663d057454e4a">BaseDFPTData</a>;</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#af3074a07345844ecd97e420218b39255"> 369</a></span>  <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_1MutableDFPTData.html#af3074a07345844ecd97e420218b39255">PTDataTy</a>;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae847b982baec8115ede5d7d28cd91d34"> 371</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae847b982baec8115ede5d7d28cd91d34">LocID</a>;</div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae7456fccd4c95227cdd7163176703205"> 372</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ad74cc6c81c4a95f6ba4e89352bccee3e">BaseMutPTData::PtsMap</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae7456fccd4c95227cdd7163176703205">PtsMap</a>;</div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a3f234abc0def4815a03de164fa258f24"> 373</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1MutablePTData.html#ae9c96f369fbe955a841badcf3fcfcc03">BaseMutPTData::PtsMapConstIter</a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a3f234abc0def4815a03de164fa258f24">PtsMapConstIter</a>;</div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a0c73427f957d310bc85955bec6654352"> 374</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<LocID, PtsMap></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#a0c73427f957d310bc85955bec6654352">DFPtsMap</a>; </div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a31ad5da37a88d2b97633d590393b0e64"> 375</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> DFPtsMap::iterator <a class="code" href="classSVF_1_1MutableDFPTData.html#a31ad5da37a88d2b97633d590393b0e64">DFPtsMapIter</a>;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#adb30678f5bbdea0f196d3b0ab67d2bad"> 376</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> DFPtsMap::const_iterator <a class="code" href="classSVF_1_1MutableDFPTData.html#adb30678f5bbdea0f196d3b0ab67d2bad">DFPtsMapconstIter</a>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#aed141fb836cb22e02032ea46e3e5f51b"> 379</a></span>  <a class="code" href="classSVF_1_1MutableDFPTData.html#aed141fb836cb22e02032ea46e3e5f51b">MutableDFPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = BaseDFPTData::MutDataFlow) : BaseDFPTData(reversePT, ty), mutPTData(reversePT) { }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a96331853265be5129964a9751f64bd8d"> 381</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a96331853265be5129964a9751f64bd8d">~MutableDFPTData</a>() { }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a8b1814326e71f6c6fd31d5aef0592a1d"> 383</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutableDFPTData.html#a8b1814326e71f6c6fd31d5aef0592a1d">getPtsMap</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">return</span> mutPTData.getPtsMap();</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a446112803c54ca937f8b85e42a4a1381"> 388</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a446112803c54ca937f8b85e42a4a1381">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  mutPTData.clear();</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b"> 393</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b">getPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">return</span> mutPTData.getPts(var);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a2f98940bd8266ad37a975c6d30d948b4"> 398</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet& <a class="code" href="classSVF_1_1MutableDFPTData.html#a2f98940bd8266ad37a975c6d30d948b4">getRevPts</a>(<span class="keyword">const</span> Data& datum)<span class="keyword"> override</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  assert(this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> && <span class="stringliteral">"MutableDFPTData::getRevPts: constructed without reverse PT support!"</span>);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">return</span> mutPTData.getRevPts(datum);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9"> 404</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9">hasDFInSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">return</span> (dfInPtsMap.find(loc) != dfInPtsMap.end());</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac6d487a4af529ecb30366be54b29260a"> 409</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac6d487a4af529ecb30366be54b29260a">hasDFOutSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">return</span> (dfOutPtsMap.find(loc) != dfOutPtsMap.end());</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#aa8b85dee2b70031a2f97e1a36c9b25de"> 414</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#aa8b85dee2b70031a2f97e1a36c9b25de">hasDFInSet</a>(LocID loc,<span class="keyword">const</span> Key& var)<span class="keyword"> const override</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  DFPtsMapconstIter it = dfInPtsMap.find(loc);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span> ( it == dfInPtsMap.end())</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = it->second;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> (ptsMap.find(var) != ptsMap.end());</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#af6d234ae2b0aa91b510f3a2fba877340"> 423</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#af6d234ae2b0aa91b510f3a2fba877340">hasDFOutSet</a>(LocID loc, <span class="keyword">const</span> Key& var)<span class="keyword"> const override</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  DFPtsMapconstIter it = dfOutPtsMap.find(loc);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span> ( it == dfOutPtsMap.end())</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = it->second;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">return</span> (ptsMap.find(var) != ptsMap.end());</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> </div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a44aad57ac0de594e404a6c4ceff0bd53"> 432</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> DataSet& <a class="code" href="classSVF_1_1MutableDFPTData.html#a44aad57ac0de594e404a6c4ceff0bd53">getDFInPtsSet</a>(LocID loc, <span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  PtsMap& inSet = dfInPtsMap[loc];</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">return</span> inSet[var];</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab6b0496d0c34642ddd2707142334f4a2"> 438</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> DataSet& <a class="code" href="classSVF_1_1MutableDFPTData.html#ab6b0496d0c34642ddd2707142334f4a2">getDFOutPtsSet</a>(LocID loc, <span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  PtsMap& outSet = dfOutPtsMap[loc];</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> outSet[var];</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a7559810e1ad40588f5fd82123ea1f150"> 446</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutableDFPTData.html#a7559810e1ad40588f5fd82123ea1f150">getDFInPtsMap</a>(LocID loc)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">return</span> dfInPtsMap[loc];</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  }</div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a034c1bf20ab8a73a97863073e08dcd4e"> 450</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> PtsMap& <a class="code" href="classSVF_1_1MutableDFPTData.html#a034c1bf20ab8a73a97863073e08dcd4e">getDFOutPtsMap</a>(LocID loc)</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">return</span> dfOutPtsMap[loc];</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  }</div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae999df6f94a097f1fcb36979327790de"> 454</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DFPtsMap& <a class="code" href="classSVF_1_1MutableDFPTData.html#ae999df6f94a097f1fcb36979327790de">getDFIn</a>()</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">return</span> dfInPtsMap;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a6d02392602cf7956ff41e345518d683c"> 458</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DFPtsMap& <a class="code" href="classSVF_1_1MutableDFPTData.html#a6d02392602cf7956ff41e345518d683c">getDFOut</a>()</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">return</span> dfOutPtsMap;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac3ebc5afa531118b2b4446d23e3b8c7a"> 464</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac3ebc5afa531118b2b4446d23e3b8c7a">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">return</span> this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFInPtsSet(dstLoc,dstVar), getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a85c0d93ee01d2c93c255e5a369248d1b"> 469</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a85c0d93ee01d2c93c255e5a369248d1b">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">return</span> this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFInPtsSet(dstLoc,dstVar), getDFOutPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab3c517be91b4711ace581df075d4647a"> 474</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab3c517be91b4711ace581df075d4647a">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">return</span> this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(getDFOutPtsSet(dstLoc,dstVar), getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a7c7eff549ea0d153e7a72ed5bf79c30e"> 479</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a7c7eff549ea0d153e7a72ed5bf79c30e">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">return</span> this->updateDFInFromOut(srcLoc,srcVar,dstLoc,dstVar);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a23fca889a29399a91dfc916f5fab46ee"> 484</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a23fca889a29399a91dfc916f5fab46ee">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">return</span> this->updateDFInFromIn(srcLoc,srcVar,dstLoc,dstVar);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a51365299a34e3386798e78a076d6e1f5"> 489</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a51365299a34e3386798e78a076d6e1f5">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key& singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">if</span> (this->hasDFInSet(loc))</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keyword">const</span> PtsMap & <a class="code" href="classSVF_1_1MutablePTData.html#a5ee6e307acd4edbf4f7c2b063032d942">ptsMap</a> = getDFInPtsMap(loc);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::const_iterator ptsIt = ptsMap.begin(), ptsEit = ptsMap.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keyword">const</span> Key var = ptsIt->first;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">if</span> (strongUpdates && var == singleton)</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var))</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> </div><div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a21b29c2d3e429017d910025e4ec73fc6"> 509</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a21b29c2d3e429017d910025e4ec73fc6">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">return</span> this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(dstVar, this->getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a0ce585790bba942291bb7c7ffcaa3914"> 514</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a0ce585790bba942291bb7c7ffcaa3914">updateATVPts</a>(<span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">return</span> (this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFOutPtsSet(dstLoc, dstVar), this-><a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcVar)));</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a43a45997f6147245fe8a552b42f3f632"> 519</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a43a45997f6147245fe8a552b42f3f632">clearAllDFOutUpdatedVar</a>(LocID)<span class="keyword"> override</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab75373d16f57dbbf1e9472e9a27d6b4b"> 526</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab75373d16f57dbbf1e9472e9a27d6b4b">addPts</a>(<span class="keyword">const</span> Key &dstKey, <span class="keyword">const</span> Key& srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">addPts</a>(mutPTData.ptsMap[dstKey], srcKey);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad64eed26e054eb4e91ec1139867cd196"> 530</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad64eed26e054eb4e91ec1139867cd196">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> Key& srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(mutPTData.ptsMap[dstKey], <a class="code" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">getPts</a>(srcKey));</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  }</div><div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab675653138960b16f23c801298e80f48"> 534</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab675653138960b16f23c801298e80f48">unionPts</a>(<span class="keyword">const</span> Key& dstKey, <span class="keyword">const</span> DataSet& srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(mutPTData.ptsMap[dstKey], srcDataSet);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  }</div><div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae0495fcba25d4baffda9f85254591ae1"> 538</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae0495fcba25d4baffda9f85254591ae1">clearPts</a>(<span class="keyword">const</span> Key& var, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  mutPTData.clearPts(var, element);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  }</div><div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab345e148997b9e1c6e4c2c76267880b7"> 542</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab345e148997b9e1c6e4c2c76267880b7">clearFullPts</a>(<span class="keyword">const</span> Key& var)<span class="keyword"> override</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  mutPTData.clearFullPts(var);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  }</div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad34e442581dfe57ce7f1add25c8414b2"> 546</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ad34e442581dfe57ce7f1add25c8414b2">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  mutPTData.remapAllPts();</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type &lopt : dfInPtsMap)</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &opt : lopt.second) opt.second.checkAndRemap();</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type &lopt : dfOutPtsMap)</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type &opt : lopt.second) opt.second.checkAndRemap();</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> </div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ac9120fbb056e23cdf84646a37d809a8d"> 561</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#ac9120fbb056e23cdf84646a37d809a8d">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> allPts = mutPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type lptsmap : dfInPtsMap)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type vpt : lptsmap.second)</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  ++allPts[vpt.second];</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> DFPtsMap::value_type lptm : dfOutPtsMap)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> PtsMap::value_type vpt : lptm.second)</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  ++allPts[vpt.second];</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> </div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> </div><div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a5baa6fffedfd0ac356590f9a0b222ee0"> 585</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a5baa6fffedfd0ac356590f9a0b222ee0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData<Key, KeySet, Data, DataSet></a> *)</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#acb338bbe5773001a15b81e596a764222"> 589</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#acb338bbe5773001a15b81e596a764222">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a>* ptd)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">return</span> ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BaseDFPTData::MutDataFlow</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  || ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == BaseDFPTData::MutIncDataFlow;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a8b30798ad9485a88238cc340e5da3db7"> 599</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a8b30798ad9485a88238cc340e5da3db7">unionPts</a>(DataSet& dstDataSet, <span class="keyword">const</span> DataSet& srcDataSet)</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">return</span> dstDataSet |= srcDataSet;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  }</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ab7d1a3464e561029573f6f3c13c9bff4"> 603</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ab7d1a3464e561029573f6f3c13c9bff4">addPts</a>(DataSet &d, <span class="keyword">const</span> Data& e)</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">return</span> d.test_and_set(e);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  }</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> </div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#a95f4644a82f84674164651db66b084b8"> 612</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#a95f4644a82f84674164651db66b084b8">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  mutPTData.dumpPTData();</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  std::error_code ErrInfo;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  std::fstream f(<span class="stringliteral">"svfg_pts.data"</span>, std::ios_base::out);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">if</span> (f.good())</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> locs;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">for</span>(DFPtsMapconstIter it = dfInPtsMap.begin(), eit = dfInPtsMap.end(); it!=eit; ++it)</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  locs.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(it->first);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> </div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">for</span>(DFPtsMapconstIter it = dfOutPtsMap.begin(), eit = dfOutPtsMap.end(); it!=eit; ++it)</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  locs.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(it->first);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> </div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = locs.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = locs.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it != eit; it++)</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  LocID loc = *it;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">if</span> (this->hasDFInSet(loc))</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  f << <span class="stringliteral">"Loc:"</span> << loc << <span class="stringliteral">" IN:{"</span>;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  this-><a class="code" href="classSVF_1_1MutablePTData.html#af08060bb4d450ecc4160cb79ab3dcc77">dumpPts</a>(this->getDFInPtsMap(loc), f);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  f << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> </div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">if</span> (this->hasDFOutSet(loc))</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  f << <span class="stringliteral">"Loc:"</span> << loc << <span class="stringliteral">" OUT:{"</span>;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  this-><a class="code" href="classSVF_1_1MutablePTData.html#af08060bb4d450ecc4160cb79ab3dcc77">dumpPts</a>(this->getDFOutPtsMap(loc), f);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  f << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  }</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  }</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  f.close();</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">if</span> (f.good())</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">" error opening file for writing!\n"</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ae88094abad311dd633f66db2cd78c322"> 655</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableDFPTData.html#ae88094abad311dd633f66db2cd78c322">dumpPts</a>(<span class="keyword">const</span> PtsMap & ptsSet,<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> & O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>())<span class="keyword"> const</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">for</span> (PtsMapConstIter nodeIt = ptsSet.begin(); nodeIt != ptsSet.end(); nodeIt++)</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keyword">const</span> Key& var = nodeIt->first;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keyword">const</span> DataSet & pts = nodeIt->second;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">if</span> (pts.empty())</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  O << <span class="stringliteral">"<"</span> << var << <span class="stringliteral">",{"</span>;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVFUtil::dumpSet</a>(pts,O);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  O << <span class="stringliteral">"}> "</span>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  }</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  }</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> </div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00672"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#abb59ef7367e353e65b82b54dac509f36"> 672</a></span>  DFPtsMap <a class="code" href="classSVF_1_1MutableDFPTData.html#abb59ef7367e353e65b82b54dac509f36">dfInPtsMap</a>;</div><div class="line"><a name="l00674"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#ad3c53ef1c8e221299f3afe078946fbe0"> 674</a></span>  DFPtsMap <a class="code" href="classSVF_1_1MutableDFPTData.html#ad3c53ef1c8e221299f3afe078946fbe0">dfOutPtsMap</a>;</div><div class="line"><a name="l00677"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableDFPTData.html#acf40f716470f73095d44a1b9e3bb939e"> 677</a></span>  <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableDFPTData.html#acf40f716470f73095d44a1b9e3bb939e">mutPTData</a>;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> };</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> </div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet></div><div class="line"><a name="l00682"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html"> 682</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableIncDFPTData.html">MutableIncDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData</a><Key, KeySet, Data, DataSet></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00685"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a14651359d0efe886c1313fd843e4d1db"> 685</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a14651359d0efe886c1313fd843e4d1db">BasePTData</a>;</div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a92f00e91a338113383bcf7bc8ce0026a"> 686</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a92f00e91a338113383bcf7bc8ce0026a">BaseMutPTData</a>;</div><div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a4b944ec759d0e78a7a2238db587752a9"> 687</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a4b944ec759d0e78a7a2238db587752a9">BaseDFPTData</a>;</div><div class="line"><a name="l00688"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a58f9b6357a5cf0243cf3b4ece30e8cf6"> 688</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MutableDFPTData.html">MutableDFPTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a58f9b6357a5cf0243cf3b4ece30e8cf6">BaseMutDFPTData</a>;</div><div class="line"><a name="l00689"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a5f1715813082c1f02d6888b9ec32a75e"> 689</a></span>  <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_1MutableIncDFPTData.html#a5f1715813082c1f02d6888b9ec32a75e">PTDataTy</a>;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> </div><div class="line"><a name="l00691"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a74d9f271ea0fa69e56ddbe16f10f3241"> 691</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a74d9f271ea0fa69e56ddbe16f10f3241">LocID</a>;</div><div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a67c24cebffdcea9c8059f6769c7f9798"> 692</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<LocID, DataSet></a> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a67c24cebffdcea9c8059f6769c7f9798">UpdatedVarMap</a>; </div><div class="line"><a name="l00693"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a8b30326d3fa3f4054e67268f512aec9e"> 693</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> UpdatedVarMap::iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a8b30326d3fa3f4054e67268f512aec9e">UpdatedVarMapIter</a>;</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#af815dd2108c16e1dfddbcd5bdbcceeb6"> 694</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> UpdatedVarMap::const_iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#af815dd2108c16e1dfddbcd5bdbcceeb6">UpdatedVarconstIter</a>;</div><div class="line"><a name="l00695"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a1fc4dff28f9044234fdfeede6f4b1cb0"> 695</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> DataSet::iterator <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a1fc4dff28f9044234fdfeede6f4b1cb0">DataIter</a>;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> </div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#af5f7db6c55037a0e117a36982736039e"> 698</a></span>  UpdatedVarMap <a class="code" href="classSVF_1_1MutableIncDFPTData.html#af5f7db6c55037a0e117a36982736039e">outUpdatedVarMap</a>;</div><div class="line"><a name="l00699"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ab5e9ebf9e71652b5fa63d59c97d016e4"> 699</a></span>  UpdatedVarMap <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ab5e9ebf9e71652b5fa63d59c97d016e4">inUpdatedVarMap</a>;</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00703"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a9b06421a9043dc61485acf51cfc26a91"> 703</a></span>  <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a9b06421a9043dc61485acf51cfc26a91">MutableIncDFPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c">BasePTData::MutIncDataFlow</a>) : BaseMutDFPTData(reversePT, ty) { }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> </div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#adf4e5c57d7b7ae7da37bb1a4eabfe8a6"> 705</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#adf4e5c57d7b7ae7da37bb1a4eabfe8a6">~MutableIncDFPTData</a>() { }</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> </div><div class="line"><a name="l00707"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a775ef6458314a1febef3f7372f6a2bbc"> 707</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a775ef6458314a1febef3f7372f6a2bbc">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc, srcVar) &&</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFInPtsSet(dstLoc,dstVar), this->getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  }</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> </div><div class="line"><a name="l00718"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad199b4b84f7aab48ff1510b118e2982f"> 718</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad199b4b84f7aab48ff1510b118e2982f">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">if</span>(varHasNewDFOutPts(srcLoc, srcVar) &&</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFInPtsSet(dstLoc,dstVar), this->getDFOutPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  }</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> </div><div class="line"><a name="l00729"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa326ac77577a8a4a0ce3e29cc03a3989"> 729</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa326ac77577a8a4a0ce3e29cc03a3989">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc,srcVar))</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  removeVarFromDFInUpdatedSet(srcLoc,srcVar);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFOutPtsSet(dstLoc,dstVar), this->getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  {</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  setVarDFOutSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  }</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  }</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> </div><div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a2dd9dad547c389d5cd488b165dd145eb"> 743</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a2dd9dad547c389d5cd488b165dd145eb">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keywordflow">if</span>(this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFInPtsSet(dstLoc,dstVar), this->getDFOutPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  }</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  }</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> </div><div class="line"><a name="l00753"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad68b23ed56b2c18bf75c23a658523404"> 753</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad68b23ed56b2c18bf75c23a658523404">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">if</span>(this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFInPtsSet(dstLoc,dstVar), this->getDFInPtsSet(srcLoc,srcVar)))</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  setVarDFInSetUpdated(dstLoc,dstVar);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  }</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div><div class="line"><a name="l00763"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a3f397aaf4f3d6d04ec005c2577652e04"> 763</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a3f397aaf4f3d6d04ec005c2577652e04">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key& singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">if</span> (this->hasDFInSet(loc))</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  DataSet pts = getDFInUpdatedVar(loc);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordflow">for</span> (DataIter ptsIt = pts.begin(), ptsEit = pts.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keyword">const</span> Key var = *ptsIt;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">if</span> (strongUpdates && var == singleton)</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var))</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  }</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  }</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  }</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> </div><div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a7778be60515fa3ff247b6d2cec138cfc"> 783</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a7778be60515fa3ff247b6d2cec138cfc">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key& srcVar, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keywordflow">if</span>(varHasNewDFInPts(srcLoc,srcVar))</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  removeVarFromDFInUpdatedSet(srcLoc,srcVar);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">return</span> this->mutPTData.unionPts(dstVar, this->getDFInPtsSet(srcLoc,srcVar));</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> </div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa8fdf0f82d3d94af34d5bc1386ed21f9"> 793</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa8fdf0f82d3d94af34d5bc1386ed21f9">updateATVPts</a>(<span class="keyword">const</span> Key& srcVar, LocID dstLoc, <span class="keyword">const</span> Key& dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1MutablePTData.html#a08528faf56bf68fd0ddbb6c5ffa3d24f">unionPts</a>(this->getDFOutPtsSet(dstLoc, dstVar), this->mutPTData.getPts(srcVar)))</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  setVarDFOutSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  }</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> </div><div class="line"><a name="l00803"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ac9ff175dbdf75232a104e2aa34f87d43"> 803</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ac9ff175dbdf75232a104e2aa34f87d43">clearAllDFOutUpdatedVar</a>(LocID loc)<span class="keyword"> override</span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">if</span> (this->hasDFOutSet(loc))</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  DataSet pts = getDFOutUpdatedVar(loc);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="keywordflow">for</span> (DataIter ptsIt = pts.begin(), ptsEit = pts.end(); ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keyword">const</span> Key var = *ptsIt;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  removeVarFromDFOutUpdatedSet(loc, var);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  }</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  }</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a89f65d37096c82fcdddb1c324ec206d2"> 818</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a89f65d37096c82fcdddb1c324ec206d2">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html">MutableIncDFPTData<Key, KeySet, Data, DataSet></a> *)</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  }</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div><div class="line"><a name="l00823"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#aa4c262f0d62e902912d4cd7999731d3d"> 823</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#aa4c262f0d62e902912d4cd7999731d3d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a>* ptd)</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  {</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">return</span> ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c">BasePTData::MutIncDataFlow</a>;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  }</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> </div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> setVarDFInSetUpdated(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  inUpdatedVarMap[loc].set(var);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  }</div><div class="line"><a name="l00837"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a913c1a2c48526160eeecd028bd22cfc4"> 837</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a913c1a2c48526160eeecd028bd22cfc4">removeVarFromDFInUpdatedSet</a>(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  UpdatedVarMapIter it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">if</span> (it != inUpdatedVarMap.end())</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  it->second.reset(var);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  }</div><div class="line"><a name="l00844"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ae7ed810cf4de695072ba5c4d0c882353"> 844</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ae7ed810cf4de695072ba5c4d0c882353">varHasNewDFInPts</a>(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  {</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  UpdatedVarMapIter it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">if</span> (it != inUpdatedVarMap.end())</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keywordflow">return</span> it->second.test(var);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  }</div><div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ae4d0989cb98814f943bd4dfd09a37017"> 852</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ae4d0989cb98814f943bd4dfd09a37017">getDFInUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="keywordflow">return</span> inUpdatedVarMap[loc];</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  }</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> </div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> </div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> setVarDFOutSetUpdated(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  {</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  outUpdatedVarMap[loc].set(var);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  }</div><div class="line"><a name="l00866"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ac055ad77582b36083ca1950c39207f5e"> 866</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ac055ad77582b36083ca1950c39207f5e">removeVarFromDFOutUpdatedSet</a>(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  {</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  UpdatedVarMapIter it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordflow">if</span> (it != outUpdatedVarMap.end())</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  it->second.reset(var);</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  }</div><div class="line"><a name="l00873"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#a55b19f617d11dfc6632b690694f264ab"> 873</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableIncDFPTData.html#a55b19f617d11dfc6632b690694f264ab">varHasNewDFOutPts</a>(LocID loc,<span class="keyword">const</span> Key& var)</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  UpdatedVarMapIter it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordflow">if</span> (it != outUpdatedVarMap.end())</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keywordflow">return</span> it->second.test(var);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  }</div><div class="line"><a name="l00881"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableIncDFPTData.html#ad1ae7faf04ba10ac4ac6a6f1cc498547"> 881</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableIncDFPTData.html#ad1ae7faf04ba10ac4ac6a6f1cc498547">getDFOutUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  {</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">return</span> outUpdatedVarMap[loc];</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  }</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> };</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> </div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> <span class="keyword">template</span> <<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></div><div class="line"><a name="l00892"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html"> 892</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MutableVersionedPTData.html">MutableVersionedPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData</a><Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet></div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> {</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00895"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a31fd15a8147e3146b15b4d24fe34cf46"> 895</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a31fd15a8147e3146b15b4d24fe34cf46">BasePTData</a>;</div><div class="line"><a name="l00896"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa80044e3b4c3ed58117573dfa54d803b"> 896</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData<Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet></a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa80044e3b4c3ed58117573dfa54d803b">BaseVersionedPTData</a>;</div><div class="line"><a name="l00897"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#af7bf99aeb752c4216a60d1fa5187b49e"> 897</a></span>  <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_1MutableVersionedPTData.html#af7bf99aeb752c4216a60d1fa5187b49e">PTDataTy</a>;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> </div><div class="line"><a name="l00899"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ad2f9950ad71a39c400a4835e6e84fcd9"> 899</a></span>  <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ad2f9950ad71a39c400a4835e6e84fcd9">MutableVersionedPTData</a>(<span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::MutVersioned)</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  : BaseVersionedPTData(reversePT, ty), tlPTData(reversePT), atPTData(reversePT) { }</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> </div><div class="line"><a name="l00902"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#adf809b61632067b0a987d2975e6377dc"> 902</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#adf809b61632067b0a987d2975e6377dc">~MutableVersionedPTData</a>() { }</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> </div><div class="line"><a name="l00904"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ab476e1b59aead37b440fd5735df3814b"> 904</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ab476e1b59aead37b440fd5735df3814b">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  tlPTData.clear();</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  atPTData.clear();</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  }</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> </div><div class="line"><a name="l00910"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aaf519166d2e0ca3c81088b52a1cf3066"> 910</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aaf519166d2e0ca3c81088b52a1cf3066">getPts</a>(<span class="keyword">const</span> Key& vk)<span class="keyword"> override</span></div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">return</span> tlPTData.getPts(vk);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  }</div><div class="line"><a name="l00914"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#afcc34f6cedca6a8f151b1a7251832818"> 914</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet& <a class="code" href="classSVF_1_1MutableVersionedPTData.html#afcc34f6cedca6a8f151b1a7251832818">getPts</a>(<span class="keyword">const</span> VersionedKey& vk)<span class="keyword"> override</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordflow">return</span> atPTData.getPts(vk);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  }</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> </div><div class="line"><a name="l00919"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a7de508c0d83895aee785524d28eac8b9"> 919</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> KeySet& <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a7de508c0d83895aee785524d28eac8b9">getRevPts</a>(<span class="keyword">const</span> Data& datum)<span class="keyword"> override</span></div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  assert(this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> && <span class="stringliteral">"MutableVersionedPTData::getRevPts: constructed without reverse PT support!"</span>);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordflow">return</span> tlPTData.getRevPts(datum);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  }</div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#afaef5c61bee74cbd649c787cfdef2a03"> 924</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> VersionedKeySet& <a class="code" href="classSVF_1_1MutableVersionedPTData.html#afaef5c61bee74cbd649c787cfdef2a03">getVersionedKeyRevPts</a>(<span class="keyword">const</span> Data& datum)<span class="keyword"> override</span></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  assert(this-><a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> && <span class="stringliteral">"MutableVersionedPTData::getVersionedKeyRevPts: constructed without reverse PT support!"</span>);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordflow">return</span> atPTData.getRevPts(datum);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  }</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span> </div><div class="line"><a name="l00930"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a00a88cc3e802921c6a0951801ec712a6"> 930</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a00a88cc3e802921c6a0951801ec712a6">addPts</a>(<span class="keyword">const</span> Key& k, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">return</span> tlPTData.addPts(k, element);</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  }</div><div class="line"><a name="l00934"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#af39232f64ff0ede20161c7f265da6cf5"> 934</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#af39232f64ff0ede20161c7f265da6cf5">addPts</a>(<span class="keyword">const</span> VersionedKey& vk, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">return</span> atPTData.addPts(vk, element);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  }</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> </div><div class="line"><a name="l00939"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ae79628fc101567ba84215b624dd00c01"> 939</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ae79628fc101567ba84215b624dd00c01">unionPts</a>(<span class="keyword">const</span> Key& dstVar, <span class="keyword">const</span> Key& srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  }</div><div class="line"><a name="l00943"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a56e752a83620f482a4b1e2f8d395dd75"> 943</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a56e752a83620f482a4b1e2f8d395dd75">unionPts</a>(<span class="keyword">const</span> VersionedKey& dstVar, <span class="keyword">const</span> VersionedKey& srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  }</div><div class="line"><a name="l00947"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a5647b7fad5c14f7ec57d3de3480758eb"> 947</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a5647b7fad5c14f7ec57d3de3480758eb">unionPts</a>(<span class="keyword">const</span> VersionedKey& dstVar, <span class="keyword">const</span> Key& srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">return</span> atPTData.unionPts(dstVar, tlPTData.getPts(srcVar));</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  }</div><div class="line"><a name="l00951"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a9967c530d3955a0a726b7a00653ef0ba"> 951</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a9967c530d3955a0a726b7a00653ef0ba">unionPts</a>(<span class="keyword">const</span> Key& dstVar, <span class="keyword">const</span> VersionedKey& srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, atPTData.getPts(srcVar));</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  }</div><div class="line"><a name="l00955"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa9ab46b7afc7f47df20e74bda300dc42"> 955</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa9ab46b7afc7f47df20e74bda300dc42">unionPts</a>(<span class="keyword">const</span> Key& dstVar, <span class="keyword">const</span> DataSet& srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  }</div><div class="line"><a name="l00959"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aa9d24a4defb025c075e4ec5bc7f3b618"> 959</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aa9d24a4defb025c075e4ec5bc7f3b618">unionPts</a>(<span class="keyword">const</span> VersionedKey& dstVar, <span class="keyword">const</span> DataSet& srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> </div><div class="line"><a name="l00964"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#ab20b71c9e2f31439c95071c375bf89e0"> 964</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#ab20b71c9e2f31439c95071c375bf89e0">clearPts</a>(<span class="keyword">const</span> Key& k, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  tlPTData.clearPts(k, element);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  }</div><div class="line"><a name="l00968"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a21e823484199946541b8b79d736b2601"> 968</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a21e823484199946541b8b79d736b2601">clearPts</a>(<span class="keyword">const</span> VersionedKey& vk, <span class="keyword">const</span> Data& element)<span class="keyword"> override</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  atPTData.clearPts(vk, element);</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  }</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> </div><div class="line"><a name="l00973"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a9f985ff2daee53fb661e4b2bcfd17f05"> 973</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a9f985ff2daee53fb661e4b2bcfd17f05">clearFullPts</a>(<span class="keyword">const</span> Key& k)<span class="keyword"> override</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  tlPTData.clearFullPts(k);</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  }</div><div class="line"><a name="l00977"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#aaf3df7501f84233f6a687ef9f2f0ae90"> 977</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#aaf3df7501f84233f6a687ef9f2f0ae90">clearFullPts</a>(<span class="keyword">const</span> VersionedKey& vk)<span class="keyword"> override</span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  atPTData.clearFullPts(vk);</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  }</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> </div><div class="line"><a name="l00982"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a72cbf33b77f5a19221ad265691065695"> 982</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a72cbf33b77f5a19221ad265691065695">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  tlPTData.remapAllPts();</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  atPTData.remapAllPts();</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  }</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> </div><div class="line"><a name="l00988"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a6cac338e74f869d0e708c7e2b356b5d7"> 988</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a6cac338e74f869d0e708c7e2b356b5d7">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<DataSet, unsigned></a> allPts = tlPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  SVFUtil::mergePtsOccMaps<DataSet>(allPts, atPTData.getAllPts(liveOnly));</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> </div><div class="line"><a name="l00995"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a796c1676dd5180a27dbebae5a99b57b7"> 995</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a796c1676dd5180a27dbebae5a99b57b7">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"== Top-level points-to information\n"</span>;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  tlPTData.dumpPTData();</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"== Address-taken points-to information\n"</span>;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  atPTData.dumpPTData();</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  }</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div><div class="line"><a name="l01005"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a6be54447671288a666af5d48972e2ccf"> 1005</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a6be54447671288a666af5d48972e2ccf">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html">MutableVersionedPTData<Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet></a> *)</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  {</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  }</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div><div class="line"><a name="l01010"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a646111552a7112b8e48c00e766ce8d9b"> 1010</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a646111552a7112b8e48c00e766ce8d9b">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData<Key, KeySet, Data, DataSet></a>* ptd)</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">return</span> ptd-><a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::MutVersioned;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  }</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> </div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <span class="keyword">private</span>:</div><div class="line"><a name="l01018"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a01974968b7cf60a4231cc83c93b26d7f"> 1018</a></span>  <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<Key, KeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a01974968b7cf60a4231cc83c93b26d7f">tlPTData</a>;</div><div class="line"><a name="l01020"></a><span class="lineno"><a class="line" href="classSVF_1_1MutableVersionedPTData.html#a3e5337d4189e98f11305491a9ef3c439"> 1020</a></span>  <a class="code" href="classSVF_1_1MutablePTData.html">MutablePTData<VersionedKey, VersionedKeySet, Data, DataSet></a> <a class="code" href="classSVF_1_1MutableVersionedPTData.html#a3e5337d4189e98f11305491a9ef3c439">atPTData</a>;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> };</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="preprocessor">#endif // MUTABLE_POINTSTO_H_</span></div><div class="ttc" id="classSVF_1_1MutableDFPTData_html_a9a9641305c9d670e09f02b71a3e384a9"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#a9a9641305c9d670e09f02b71a3e384a9">SVF::MutableDFPTData::hasDFInSet</a></div><div class="ttdeci">virtual bool hasDFInSet(LocID loc) const override</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00404">MutablePointsToDS.h:404</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1MutablePTData_html_a124e8cc8d2dbbd70682a4b7845e5d600"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#a124e8cc8d2dbbd70682a4b7845e5d600">SVF::MutablePTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &dstKey, const DataSet &srcDataSet) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U srcDataSet. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00106">MutablePointsToDS.h:106</a></div></div>
|
|
71
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
71
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00528">SparseBitVector.h:528</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1MutableIncDFPTData_html_af815dd2108c16e1dfddbcd5bdbcceeb6"><div class="ttname"><a href="classSVF_1_1MutableIncDFPTData.html#af815dd2108c16e1dfddbcd5bdbcceeb6">SVF::MutableIncDFPTData::UpdatedVarconstIter</a></div><div class="ttdeci">UpdatedVarMap::const_iterator UpdatedVarconstIter</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00694">MutablePointsToDS.h:694</a></div></div>
|
|
73
73
|
<div class="ttc" id="classSVF_1_1MutablePTData_html_a80cb0bdab4aa64d81e3d61405066a0da"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#a80cb0bdab4aa64d81e3d61405066a0da">SVF::MutablePTData::clearRevPts</a></div><div class="ttdeci">void clearRevPts(const DataSet &pts, const Key &k)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00211">MutablePointsToDS.h:211</a></div></div>
|
|
74
74
|
<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#l00269">AbstractPointsToDS.h:269</a></div></div>
|
|
@@ -125,7 +125,6 @@ $(function() {
|
|
|
125
125
|
<div class="ttc" id="AbstractPointsToDS_8h_html"><div class="ttname"><a href="AbstractPointsToDS_8h.html">AbstractPointsToDS.h</a></div></div>
|
|
126
126
|
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00099">SVFType.h:99</a></div></div>
|
|
127
127
|
<div class="ttc" id="classSVF_1_1MutablePTData_html_abaf96c47ab029c6bc91ff23a4c061505"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#abaf96c47ab029c6bc91ff23a4c061505">SVF::MutablePTData::unionPts</a></div><div class="ttdeci">bool unionPts(DataSet &dstDataSet, const DataSet &srcDataSet)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00181">MutablePointsToDS.h:181</a></div></div>
|
|
128
|
-
<div class="ttc" id="classSVF_1_1MutableDiffPTData_html_a8d69bae0bcbeecc98b51a23d50c064b6"><div class="ttname"><a href="classSVF_1_1MutableDiffPTData.html#a8d69bae0bcbeecc98b51a23d50c064b6">SVF::MutableDiffPTData::~MutableDiffPTData</a></div><div class="ttdeci">virtual ~MutableDiffPTData()</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00239">MutablePointsToDS.h:239</a></div></div>
|
|
129
128
|
<div class="ttc" id="classSVF_1_1MutablePTData_html_a9e69cb846a8d2da102981d1f48cb16dd"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#a9e69cb846a8d2da102981d1f48cb16dd">SVF::MutablePTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00058">MutablePointsToDS.h:58</a></div></div>
|
|
130
129
|
<div class="ttc" id="classSVF_1_1MutableVersionedPTData_html_adf809b61632067b0a987d2975e6377dc"><div class="ttname"><a href="classSVF_1_1MutableVersionedPTData.html#adf809b61632067b0a987d2975e6377dc">SVF::MutableVersionedPTData::~MutableVersionedPTData</a></div><div class="ttdeci">virtual ~MutableVersionedPTData()</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00902">MutablePointsToDS.h:902</a></div></div>
|
|
131
130
|
<div class="ttc" id="classSVF_1_1MutablePTData_html_a589d71ff881e53133e5c688f1c616ab3"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#a589d71ff881e53133e5c688f1c616ab3">SVF::MutablePTData::classof</a></div><div class="ttdeci">static bool classof(const MutablePTData< Key, KeySet, Data, DataSet > *)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00149">MutablePointsToDS.h:149</a></div></div>
|
|
@@ -177,7 +176,7 @@ $(function() {
|
|
|
177
176
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_a5baa6fffedfd0ac356590f9a0b222ee0"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#a5baa6fffedfd0ac356590f9a0b222ee0">SVF::MutableDFPTData::classof</a></div><div class="ttdeci">static bool classof(const MutableDFPTData< Key, KeySet, Data, DataSet > *)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00585">MutablePointsToDS.h:585</a></div></div>
|
|
178
177
|
<div class="ttc" id="classSVF_1_1MutableDiffPTData_html_a1596ef828786325ca06a3f5bada31757"><div class="ttname"><a href="classSVF_1_1MutableDiffPTData.html#a1596ef828786325ca06a3f5bada31757">SVF::MutableDiffPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &dstKey, const Key &srcKey) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00267">MutablePointsToDS.h:267</a></div></div>
|
|
179
178
|
<div class="ttc" id="classSVF_1_1MutableDiffPTData_html_a8b6e2e5e016a5ae00ae440e3f383bb16"><div class="ttname"><a href="classSVF_1_1MutableDiffPTData.html#a8b6e2e5e016a5ae00ae440e3f383bb16">SVF::MutableDiffPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &var) override</div><div class="ttdoc">Fully clears the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00282">MutablePointsToDS.h:282</a></div></div>
|
|
180
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
179
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01112">SparseBitVector.h:1112</a></div></div>
|
|
181
180
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
182
181
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_a4cbb9131a89c5c48367fb927693b5c6b"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b">SVF::MutableDFPTData::getPts</a></div><div class="ttdeci">virtual const DataSet & getPts(const Key &var) override</div><div class="ttdoc">Get points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00393">MutablePointsToDS.h:393</a></div></div>
|
|
183
182
|
<div class="ttc" id="classSVF_1_1MutableDiffPTData_html_a2feb36e64e27e6f0bcc0e108da433278"><div class="ttname"><a href="classSVF_1_1MutableDiffPTData.html#a2feb36e64e27e6f0bcc0e108da433278">SVF::MutableDiffPTData::updatePropaPtsMap</a></div><div class="ttdeci">virtual void updatePropaPtsMap(Key &src, Key &dst) override</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00316">MutablePointsToDS.h:316</a></div></div>
|
|
@@ -187,6 +186,7 @@ $(function() {
|
|
|
187
186
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_af6d234ae2b0aa91b510f3a2fba877340"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#af6d234ae2b0aa91b510f3a2fba877340">SVF::MutableDFPTData::hasDFOutSet</a></div><div class="ttdeci">virtual bool hasDFOutSet(LocID loc, const Key &var) const override</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00423">MutablePointsToDS.h:423</a></div></div>
|
|
188
187
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_ae0495fcba25d4baffda9f85254591ae1"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#ae0495fcba25d4baffda9f85254591ae1">SVF::MutableDFPTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const Key &var, const Data &element) override</div><div class="ttdoc">Clears element from the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00538">MutablePointsToDS.h:538</a></div></div>
|
|
189
188
|
<div class="ttc" id="classSVF_1_1MutableIncDFPTData_html_a58f9b6357a5cf0243cf3b4ece30e8cf6"><div class="ttname"><a href="classSVF_1_1MutableIncDFPTData.html#a58f9b6357a5cf0243cf3b4ece30e8cf6">SVF::MutableIncDFPTData::BaseMutDFPTData</a></div><div class="ttdeci">MutableDFPTData< Key, KeySet, Data, DataSet > BaseMutDFPTData</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00688">MutablePointsToDS.h:688</a></div></div>
|
|
189
|
+
<div class="ttc" id="classSVF_1_1MutableDiffPTData_html_a712da72277711b9aa1b33a197f6ff23f"><div class="ttname"><a href="classSVF_1_1MutableDiffPTData.html#a712da72277711b9aa1b33a197f6ff23f">SVF::MutableDiffPTData::clear</a></div><div class="ttdeci">void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00246">MutablePointsToDS.h:246</a></div></div>
|
|
190
190
|
<div class="ttc" id="classSVF_1_1MutablePTData_html_aab4a2eec11e83beca70b016102431ab1"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#aab4a2eec11e83beca70b016102431ab1">SVF::MutablePTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const Key &dstKey, const Data &element) override</div><div class="ttdoc">Adds element to the points-to set associated with var. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00094">MutablePointsToDS.h:94</a></div></div>
|
|
191
191
|
<div class="ttc" id="classSVF_1_1MutablePTData_html_a577a7fce1affd462afeb9fefa4bdb4a8"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#a577a7fce1affd462afeb9fefa4bdb4a8">SVF::MutablePTData::classof</a></div><div class="ttdeci">static bool classof(const PTData< Key, KeySet, Data, DataSet > *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00154">MutablePointsToDS.h:154</a></div></div>
|
|
192
192
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_a034c1bf20ab8a73a97863073e08dcd4e"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#a034c1bf20ab8a73a97863073e08dcd4e">SVF::MutableDFPTData::getDFOutPtsMap</a></div><div class="ttdeci">const PtsMap & getDFOutPtsMap(LocID loc)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00450">MutablePointsToDS.h:450</a></div></div>
|
|
@@ -199,7 +199,7 @@ $(function() {
|
|
|
199
199
|
<div class="ttc" id="classSVF_1_1MutablePTData_html"><div class="ttname"><a href="classSVF_1_1MutablePTData.html">SVF::MutablePTData</a></div><div class="ttdoc">PTData implemented using points-to sets which are created once and updated continuously. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00053">MutablePointsToDS.h:53</a></div></div>
|
|
200
200
|
<div class="ttc" id="classSVF_1_1MutableDiffPTData_html_a80142c1961d5e71c8f0dbadbb3c82184"><div class="ttname"><a href="classSVF_1_1MutableDiffPTData.html#a80142c1961d5e71c8f0dbadbb3c82184">SVF::MutableDiffPTData::remapAllPts</a></div><div class="ttdeci">virtual void remapAllPts(void) override</div><div class="ttdoc">Remaps all points-to sets to use the current mapping. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00287">MutablePointsToDS.h:287</a></div></div>
|
|
201
201
|
<div class="ttc" id="classSVF_1_1MutableIncDFPTData_html_ab5e9ebf9e71652b5fa63d59c97d016e4"><div class="ttname"><a href="classSVF_1_1MutableIncDFPTData.html#ab5e9ebf9e71652b5fa63d59c97d016e4">SVF::MutableIncDFPTData::inUpdatedVarMap</a></div><div class="ttdeci">UpdatedVarMap inUpdatedVarMap</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00699">MutablePointsToDS.h:699</a></div></div>
|
|
202
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_abf76d8157c49ddba24bdc9dab3655772"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">SVF::SparseBitVector::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
202
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_abf76d8157c49ddba24bdc9dab3655772"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">SVF::SparseBitVector::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01107">SparseBitVector.h:1107</a></div></div>
|
|
203
203
|
<div class="ttc" id="classSVF_1_1MutableIncDFPTData_html_a9b06421a9043dc61485acf51cfc26a91"><div class="ttname"><a href="classSVF_1_1MutableIncDFPTData.html#a9b06421a9043dc61485acf51cfc26a91">SVF::MutableIncDFPTData::MutableIncDFPTData</a></div><div class="ttdeci">MutableIncDFPTData(bool reversePT=true, PTDataTy ty=BasePTData::MutIncDataFlow)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00703">MutablePointsToDS.h:703</a></div></div>
|
|
204
204
|
<div class="ttc" id="classSVF_1_1MutablePTData_html_a3bf34d8040779b4d251bb08a58604d77"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#a3bf34d8040779b4d251bb08a58604d77">SVF::MutablePTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &var) override</div><div class="ttdoc">Fully clears the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00123">MutablePointsToDS.h:123</a></div></div>
|
|
205
205
|
<div class="ttc" id="classSVF_1_1MutableVersionedPTData_html_a56e752a83620f482a4b1e2f8d395dd75"><div class="ttname"><a href="classSVF_1_1MutableVersionedPTData.html#a56e752a83620f482a4b1e2f8d395dd75">SVF::MutableVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const VersionedKey &dstVar, const VersionedKey &srcVar) override</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00943">MutablePointsToDS.h:943</a></div></div>
|
|
@@ -208,7 +208,7 @@ $(function() {
|
|
|
208
208
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_a43a45997f6147245fe8a552b42f3f632"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#a43a45997f6147245fe8a552b42f3f632">SVF::MutableDFPTData::clearAllDFOutUpdatedVar</a></div><div class="ttdeci">virtual void clearAllDFOutUpdatedVar(LocID) override</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00519">MutablePointsToDS.h:519</a></div></div>
|
|
209
209
|
<div class="ttc" id="classSVF_1_1MutableIncDFPTData_html_ad68b23ed56b2c18bf75c23a658523404"><div class="ttname"><a href="classSVF_1_1MutableIncDFPTData.html#ad68b23ed56b2c18bf75c23a658523404">SVF::MutableIncDFPTData::updateAllDFInFromIn</a></div><div class="ttdeci">virtual bool updateAllDFInFromIn(LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override</div><div class="ttdoc">Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00753">MutablePointsToDS.h:753</a></div></div>
|
|
210
210
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_ab7d1a3464e561029573f6f3c13c9bff4"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#ab7d1a3464e561029573f6f3c13c9bff4">SVF::MutableDFPTData::addPts</a></div><div class="ttdeci">bool addPts(DataSet &d, const Data &e)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00603">MutablePointsToDS.h:603</a></div></div>
|
|
211
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
211
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00454">SparseBitVector.h:454</a></div></div>
|
|
212
212
|
<div class="ttc" id="classSVF_1_1MutableIncDFPTData_html_a8b30326d3fa3f4054e67268f512aec9e"><div class="ttname"><a href="classSVF_1_1MutableIncDFPTData.html#a8b30326d3fa3f4054e67268f512aec9e">SVF::MutableIncDFPTData::UpdatedVarMapIter</a></div><div class="ttdeci">UpdatedVarMap::iterator UpdatedVarMapIter</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00693">MutablePointsToDS.h:693</a></div></div>
|
|
213
213
|
<div class="ttc" id="classSVF_1_1MutablePTData_html_a8cdeda0ef0e976102d05de3004bd8c8a"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#a8cdeda0ef0e976102d05de3004bd8c8a">SVF::MutablePTData::addPts</a></div><div class="ttdeci">bool addPts(DataSet &d, const Data &e)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00185">MutablePointsToDS.h:185</a></div></div>
|
|
214
214
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_a3f234abc0def4815a03de164fa258f24"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#a3f234abc0def4815a03de164fa258f24">SVF::MutableDFPTData::PtsMapConstIter</a></div><div class="ttdeci">BaseMutPTData::PtsMapConstIter PtsMapConstIter</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00373">MutablePointsToDS.h:373</a></div></div>
|
|
@@ -225,7 +225,7 @@ $(function() {
|
|
|
225
225
|
<div class="ttc" id="classSVF_1_1MutableVersionedPTData_html_a646111552a7112b8e48c00e766ce8d9b"><div class="ttname"><a href="classSVF_1_1MutableVersionedPTData.html#a646111552a7112b8e48c00e766ce8d9b">SVF::MutableVersionedPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData< Key, KeySet, Data, DataSet > *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l01010">MutablePointsToDS.h:1010</a></div></div>
|
|
226
226
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_ab345e148997b9e1c6e4c2c76267880b7"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#ab345e148997b9e1c6e4c2c76267880b7">SVF::MutableDFPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &var) override</div><div class="ttdoc">Fully clears the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00542">MutablePointsToDS.h:542</a></div></div>
|
|
227
227
|
<div class="ttc" id="classSVF_1_1MutableDiffPTData_html_a450ed4470b1d83d44218904dd391fd75"><div class="ttname"><a href="classSVF_1_1MutableDiffPTData.html#a450ed4470b1d83d44218904dd391fd75">SVF::MutableDiffPTData::getPropaPts</a></div><div class="ttdeci">DataSet & getPropaPts(Key &var)</div><div class="ttdoc">Get propagated points to. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00348">MutablePointsToDS.h:348</a></div></div>
|
|
228
|
-
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#
|
|
228
|
+
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00739">SparseBitVector.h:739</a></div></div>
|
|
229
229
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aee74719d33695e4da6fee5fc83f745d9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">SVF::SVFUtil::removeKey</a></div><div class="ttdeci">void removeKey(const Key &key, KeySet &keySet)</div><div class="ttdoc">Removes an element from a Set/CondSet (or anything implementing ::erase). </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00269">SVFUtil.h:269</a></div></div>
|
|
230
230
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_aed141fb836cb22e02032ea46e3e5f51b"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#aed141fb836cb22e02032ea46e3e5f51b">SVF::MutableDFPTData::MutableDFPTData</a></div><div class="ttdeci">MutableDFPTData(bool reversePT=true, PTDataTy ty=BaseDFPTData::MutDataFlow)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00379">MutablePointsToDS.h:379</a></div></div>
|
|
231
231
|
<div class="ttc" id="classSVF_1_1MutableIncDFPTData_html_a55b19f617d11dfc6632b690694f264ab"><div class="ttname"><a href="classSVF_1_1MutableIncDFPTData.html#a55b19f617d11dfc6632b690694f264ab">SVF::MutableIncDFPTData::varHasNewDFOutPts</a></div><div class="ttdeci">bool varHasNewDFOutPts(LocID loc, const Key &var)</div><div class="ttdoc">Return TRUE if var has new pts in loc&#39;s OUT set. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00873">MutablePointsToDS.h:873</a></div></div>
|
|
@@ -250,7 +250,6 @@ $(function() {
|
|
|
250
250
|
<div class="ttc" id="classSVF_1_1MutablePTData_html_ac8da1a3357c3bc529f6ca85615486951"><div class="ttname"><a href="classSVF_1_1MutablePTData.html#ac8da1a3357c3bc529f6ca85615486951">SVF::MutablePTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00077">MutablePointsToDS.h:77</a></div></div>
|
|
251
251
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_acb338bbe5773001a15b81e596a764222"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#acb338bbe5773001a15b81e596a764222">SVF::MutableDFPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData< Key, KeySet, Data, DataSet > *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00589">MutablePointsToDS.h:589</a></div></div>
|
|
252
252
|
<div class="ttc" id="classSVF_1_1MutableDFPTData_html_aa8b85dee2b70031a2f97e1a36c9b25de"><div class="ttname"><a href="classSVF_1_1MutableDFPTData.html#aa8b85dee2b70031a2f97e1a36c9b25de">SVF::MutableDFPTData::hasDFInSet</a></div><div class="ttdeci">virtual bool hasDFInSet(LocID loc, const Key &var) const override</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00414">MutablePointsToDS.h:414</a></div></div>
|
|
253
|
-
<div class="ttc" id="classSVF_1_1MutableDiffPTData_html_a8ae9624ac7fb1502eaa43173dacbe7b7"><div class="ttname"><a href="classSVF_1_1MutableDiffPTData.html#a8ae9624ac7fb1502eaa43173dacbe7b7">SVF::MutableDiffPTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00246">MutablePointsToDS.h:246</a></div></div>
|
|
254
253
|
<div class="ttc" id="classSVF_1_1MutableDiffPTData_html_a5d64ef2d4b9ab65cc7a9e33bb6fe47cf"><div class="ttname"><a href="classSVF_1_1MutableDiffPTData.html#a5d64ef2d4b9ab65cc7a9e33bb6fe47cf">SVF::MutableDiffPTData::PtsMap</a></div><div class="ttdeci">MutablePTData< Key, KeySet, Data, DataSet >::PtsMap PtsMap</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00234">MutablePointsToDS.h:234</a></div></div>
|
|
255
254
|
<div class="ttc" id="classSVF_1_1MutableIncDFPTData_html_a89f65d37096c82fcdddb1c324ec206d2"><div class="ttname"><a href="classSVF_1_1MutableIncDFPTData.html#a89f65d37096c82fcdddb1c324ec206d2">SVF::MutableIncDFPTData::classof</a></div><div class="ttdeci">static bool classof(const MutableIncDFPTData< Key, KeySet, Data, DataSet > *)</div><div class="ttdef"><b>Definition:</b> <a href="MutablePointsToDS_8h_source.html#l00818">MutablePointsToDS.h:818</a></div></div>
|
|
256
255
|
<div class="ttc" id="classSVF_1_1PTData_html_a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c"><div class="ttname"><a href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848aa4e18dfa52aad741c91bcc78339e986c">SVF::PTData::MutIncDataFlow</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00086">AbstractPointsToDS.h:86</a></div></div>
|