svf-tools 1.0.596 → 1.0.597
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/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/Andersen_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CFLGraph_8cpp.html +3 -2
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +15 -16
- package/SVF-doxygen/html/html/CFLGraph_8h.html +4 -6
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +19 -20
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/CHG_8cpp.html +6 -5
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +26 -27
- package/SVF-doxygen/html/html/CHG_8h.html +4 -6
- package/SVF-doxygen/html/html/CHG_8h_source.html +13 -14
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ConsG_8cpp.html +3 -2
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +27 -28
- package/SVF-doxygen/html/html/ConsG_8h.html +4 -6
- package/SVF-doxygen/html/html/ConsG_8h_source.html +10 -11
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +4 -4
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/DCHG_8h.html +4 -6
- package/SVF-doxygen/html/html/DCHG_8h_source.html +15 -16
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
- package/SVF-doxygen/html/html/DOTGraphTraits_8h.html +4 -3
- package/SVF-doxygen/html/html/DOTGraphTraits_8h_source.html +24 -24
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/GenericGraph_8h.html +8 -9
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +125 -125
- package/SVF-doxygen/html/html/GraphPrinter_8h.html +3 -2
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +7 -7
- package/SVF-doxygen/html/html/GraphReachSolver_8h_source.html +4 -4
- package/SVF-doxygen/html/html/GraphTraits_8h.html +20 -19
- package/SVF-doxygen/html/html/GraphTraits_8h_source.html +13 -13
- package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/GraphWriter_8h.html +23 -22
- package/SVF-doxygen/html/html/GraphWriter_8h_source.html +48 -48
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFG_8cpp.html +3 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +27 -28
- package/SVF-doxygen/html/html/ICFG_8h.html +4 -6
- package/SVF-doxygen/html/html/ICFG_8h_source.html +14 -15
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8cpp.html +3 -2
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -21
- package/SVF-doxygen/html/html/IRGraph_8h.html +4 -6
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +9 -10
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +38 -39
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +19 -19
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +16 -9
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +6 -0
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +6 -4
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +23 -23
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +23 -23
- package/SVF-doxygen/html/html/MHP_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8cpp.html +3 -2
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +27 -28
- package/SVF-doxygen/html/html/PTACallGraph_8h.html +4 -6
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +17 -18
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +9 -9
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFG_8cpp.html +3 -2
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +23 -24
- package/SVF-doxygen/html/html/SVFG_8h.html +1 -3
- package/SVF-doxygen/html/html/SVFG_8h_source.html +13 -14
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +15 -14
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +12 -12
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +9 -9
- package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +16 -19
- package/SVF-doxygen/html/html/SVFValue_8h.html +3 -3
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +210 -213
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +13 -14
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +3 -4
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -10
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -4
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TCT_8cpp.html +3 -2
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +38 -39
- package/SVF-doxygen/html/html/TCT_8h.html +4 -6
- package/SVF-doxygen/html/html/TCT_8h_source.html +27 -28
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +7 -7
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/VFGEdge_8h_source.html +6 -6
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +8 -8
- package/SVF-doxygen/html/html/VFG_8cpp.html +3 -2
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +20 -21
- package/SVF-doxygen/html/html/VFG_8h.html +4 -6
- package/SVF-doxygen/html/html/VFG_8h_source.html +14 -15
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +3 -3
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +4 -4
- package/SVF-doxygen/html/html/annotated.html +291 -291
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +45 -44
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +56 -56
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +3 -4
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +98 -97
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -4
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GraphPrinter-members.html +83 -0
- package/SVF-doxygen/html/html/classSVF_1_1GraphPrinter.html +236 -0
- package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1GraphWriter-members.html +100 -0
- package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +882 -0
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +69 -69
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +37 -37
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -4
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +40 -40
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +7 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +16 -20
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +8 -10
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +56 -63
- package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +6 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +7 -11
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +12 -14
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +34 -38
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +6 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +5 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +6 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +7 -11
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +6 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +10 -14
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +6 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +14 -18
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +6 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +7 -11
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +23 -25
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +115 -119
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +9 -11
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +14 -18
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +48 -47
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +11 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +31 -35
- package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +6 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +7 -11
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +6 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +5 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +25 -28
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +38 -128
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +14 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +29 -33
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +46 -46
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +21 -54
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +72 -72
- package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +3 -4
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base-members.html +112 -0
- package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +633 -0
- package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base-members.html +102 -0
- package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base.html +787 -0
- package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy-members.html +84 -0
- package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +229 -0
- package/SVF-doxygen/html/html/classSVF_1_1iter__range-members.html +87 -0
- package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +342 -0
- package/SVF-doxygen/html/html/classSVF_1_1mapped__iter-members.html +112 -0
- package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +322 -0
- package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator-members.html +113 -0
- package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +343 -0
- package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.png +0 -0
- package/SVF-doxygen/html/html/classes.html +59 -59
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/fastcluster__R__dm_8cpp_8inc_source.html +2 -2
- package/SVF-doxygen/html/html/functions_a.html +1 -1
- package/SVF-doxygen/html/html/functions_b.html +4 -4
- package/SVF-doxygen/html/html/functions_c.html +20 -18
- package/SVF-doxygen/html/html/functions_d.html +20 -20
- package/SVF-doxygen/html/html/functions_e.html +14 -16
- package/SVF-doxygen/html/html/functions_eval_i.html +2 -2
- package/SVF-doxygen/html/html/functions_f.html +1 -1
- package/SVF-doxygen/html/html/functions_func.html +1 -1
- package/SVF-doxygen/html/html/functions_func_b.html +2 -2
- package/SVF-doxygen/html/html/functions_func_c.html +4 -4
- package/SVF-doxygen/html/html/functions_func_d.html +14 -14
- package/SVF-doxygen/html/html/functions_func_e.html +8 -8
- package/SVF-doxygen/html/html/functions_func_g.html +72 -72
- package/SVF-doxygen/html/html/functions_func_h.html +4 -7
- package/SVF-doxygen/html/html/functions_func_i.html +17 -20
- package/SVF-doxygen/html/html/functions_func_m.html +1 -1
- package/SVF-doxygen/html/html/functions_func_n.html +3 -3
- package/SVF-doxygen/html/html/functions_func_o.html +24 -24
- package/SVF-doxygen/html/html/functions_func_p.html +4 -4
- package/SVF-doxygen/html/html/functions_func_r.html +2 -2
- package/SVF-doxygen/html/html/functions_func_s.html +15 -18
- package/SVF-doxygen/html/html/functions_func_w.html +8 -8
- package/SVF-doxygen/html/html/functions_g.html +84 -82
- package/SVF-doxygen/html/html/functions_h.html +6 -12
- package/SVF-doxygen/html/html/functions_i.html +40 -43
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_n.html +30 -30
- package/SVF-doxygen/html/html/functions_o.html +39 -43
- package/SVF-doxygen/html/html/functions_p.html +16 -16
- package/SVF-doxygen/html/html/functions_r.html +8 -6
- package/SVF-doxygen/html/html/functions_rela.html +3 -3
- package/SVF-doxygen/html/html/functions_s.html +22 -25
- package/SVF-doxygen/html/html/functions_t.html +3 -3
- package/SVF-doxygen/html/html/functions_type_b.html +1 -1
- package/SVF-doxygen/html/html/functions_type_c.html +7 -7
- package/SVF-doxygen/html/html/functions_type_d.html +4 -4
- package/SVF-doxygen/html/html/functions_type_e.html +4 -4
- package/SVF-doxygen/html/html/functions_type_g.html +6 -6
- package/SVF-doxygen/html/html/functions_type_i.html +4 -4
- package/SVF-doxygen/html/html/functions_type_n.html +27 -27
- package/SVF-doxygen/html/html/functions_type_p.html +3 -3
- package/SVF-doxygen/html/html/functions_type_r.html +2 -2
- package/SVF-doxygen/html/html/functions_type_v.html +2 -2
- package/SVF-doxygen/html/html/functions_v.html +5 -5
- package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_d.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_e.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_g.html +7 -5
- package/SVF-doxygen/html/html/functions_vars_h.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_i.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_o.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_p.html +1 -1
- package/SVF-doxygen/html/html/functions_w.html +17 -17
- package/SVF-doxygen/html/html/hierarchy.html +159 -159
- package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/iterator_8h.html +16 -15
- package/SVF-doxygen/html/html/iterator_8h_source.html +53 -53
- package/SVF-doxygen/html/html/iterator__range_8h.html +9 -8
- package/SVF-doxygen/html/html/iterator__range_8h_source.html +11 -11
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +575 -9
- package/SVF-doxygen/html/html/namespaceSVF_1_1DOT.html +107 -0
- package/SVF-doxygen/html/html/namespaceSVF_1_1GraphProgram.html +122 -0
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +65 -7
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +3 -3
- package/SVF-doxygen/html/html/namespacellvm.html +1 -572
- package/SVF-doxygen/html/html/namespacemembers_c.html +3 -3
- package/SVF-doxygen/html/html/namespacemembers_d.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_e.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_enum.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_eval.html +5 -5
- package/SVF-doxygen/html/html/namespacemembers_f.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_func_c.html +2 -2
- package/SVF-doxygen/html/html/namespacemembers_func_e.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_func_i.html +8 -5
- package/SVF-doxygen/html/html/namespacemembers_func_m.html +4 -4
- package/SVF-doxygen/html/html/namespacemembers_func_n.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_func_v.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_func_w.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_g.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_i.html +6 -3
- package/SVF-doxygen/html/html/namespacemembers_m.html +4 -4
- package/SVF-doxygen/html/html/namespacemembers_n.html +3 -3
- package/SVF-doxygen/html/html/namespacemembers_r.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_t.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_type_g.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_type_r.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_v.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_w.html +1 -1
- package/SVF-doxygen/html/html/namespaces.html +5 -5
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +1 -1
- package/SVF-doxygen/html/html/search/all_10.js +12 -12
- package/SVF-doxygen/html/html/search/all_11.js +7 -7
- package/SVF-doxygen/html/html/search/all_12.js +7 -6
- package/SVF-doxygen/html/html/search/all_13.js +7 -7
- package/SVF-doxygen/html/html/search/all_15.js +4 -4
- package/SVF-doxygen/html/html/search/all_16.js +10 -10
- package/SVF-doxygen/html/html/search/all_2.js +3 -3
- package/SVF-doxygen/html/html/search/all_3.js +7 -7
- package/SVF-doxygen/html/html/search/all_4.js +20 -20
- package/SVF-doxygen/html/html/search/all_5.js +9 -9
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +87 -87
- package/SVF-doxygen/html/html/search/all_8.js +1 -3
- package/SVF-doxygen/html/html/search/all_9.js +23 -23
- package/SVF-doxygen/html/html/search/all_c.js +2 -4
- package/SVF-doxygen/html/html/search/all_d.js +5 -5
- package/SVF-doxygen/html/html/search/all_e.js +11 -11
- package/SVF-doxygen/html/html/search/all_f.js +19 -19
- package/SVF-doxygen/html/html/search/classes_3.js +13 -13
- package/SVF-doxygen/html/html/search/classes_6.js +64 -64
- package/SVF-doxygen/html/html/search/classes_8.js +10 -10
- package/SVF-doxygen/html/html/search/classes_a.js +1 -1
- package/SVF-doxygen/html/html/search/classes_d.js +2 -2
- package/SVF-doxygen/html/html/search/classes_e.js +1 -1
- package/SVF-doxygen/html/html/search/enums_8.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_10.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_2.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_3.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_5.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_8.js +2 -2
- package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +1 -1
- package/SVF-doxygen/html/html/search/functions_1.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_11.js +1 -2
- package/SVF-doxygen/html/html/search/functions_14.js +1 -1
- package/SVF-doxygen/html/html/search/functions_15.js +8 -8
- package/SVF-doxygen/html/html/search/functions_2.js +4 -4
- package/SVF-doxygen/html/html/search/functions_3.js +5 -5
- package/SVF-doxygen/html/html/search/functions_4.js +7 -7
- package/SVF-doxygen/html/html/search/functions_6.js +21 -21
- package/SVF-doxygen/html/html/search/functions_7.js +1 -2
- package/SVF-doxygen/html/html/search/functions_8.js +8 -8
- package/SVF-doxygen/html/html/search/functions_c.js +5 -5
- package/SVF-doxygen/html/html/search/functions_d.js +4 -4
- package/SVF-doxygen/html/html/search/functions_e.js +14 -14
- package/SVF-doxygen/html/html/search/functions_f.js +4 -4
- package/SVF-doxygen/html/html/search/namespaces_0.js +0 -2
- package/SVF-doxygen/html/html/search/namespaces_1.js +2 -0
- package/SVF-doxygen/html/html/search/related_9.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_1.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_3.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_4.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_6.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_7.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_c.js +4 -4
- package/SVF-doxygen/html/html/search/typedefs_e.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_f.js +2 -2
- package/SVF-doxygen/html/html/search/variables_10.js +1 -1
- package/SVF-doxygen/html/html/search/variables_13.js +3 -3
- package/SVF-doxygen/html/html/search/variables_2.js +1 -1
- package/SVF-doxygen/html/html/search/variables_4.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +2 -2
- package/SVF-doxygen/html/html/search/variables_8.js +0 -1
- package/SVF-doxygen/html/html/search/variables_9.js +5 -5
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/search/variables_f.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits-members.html +99 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits.html +193 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4-members.html +105 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +443 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4-members.html +104 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +388 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4-members.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +481 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4-members.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +475 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4-members.html +107 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +486 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4-members.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +457 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4-members.html +108 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +595 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4-members.html +105 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +409 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4-members.html +107 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +543 -0
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits-members.html +99 -0
- package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits.html +855 -0
- package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericEdge_1_1equalGEdge.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits.html +116 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +110 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.html +110 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.html +110 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.html +110 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4-members.html +88 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +324 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.html +110 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.html +110 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.html +110 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +110 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html +110 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +126 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.html +126 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.html +126 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.html +126 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4-members.html +99 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +467 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4-members.html +89 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +367 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4.html +126 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.html +126 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html +126 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +126 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +126 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html +106 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4.html +126 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structSVF_1_1Inverse-members.html +82 -0
- package/SVF-doxygen/html/html/structSVF_1_1Inverse.html +154 -0
- package/SVF-doxygen/html/html/structSVF_1_1pointee__iter-members.html +111 -0
- package/SVF-doxygen/html/html/structSVF_1_1pointee__iter.html +279 -0
- package/SVF-doxygen/html/html/structSVF_1_1pointee__iter.png +0 -0
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +9 -9
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/Graphs/CFLGraph.h +6 -6
- package/include/Graphs/CHG.h +6 -6
- package/include/Graphs/ConsG.h +6 -6
- package/include/Graphs/DOTGraphTraits.h +3 -3
- package/include/Graphs/GenericGraph.h +10 -9
- package/include/Graphs/GraphPrinter.h +2 -2
- package/include/Graphs/GraphTraits.h +29 -29
- package/include/Graphs/GraphWriter.h +6 -6
- package/include/Graphs/ICFG.h +6 -6
- package/include/Graphs/IRGraph.h +6 -7
- package/include/Graphs/PTACallGraph.h +6 -6
- package/include/Graphs/SVFG.h +6 -6
- package/include/Graphs/VFG.h +6 -6
- package/include/MTA/TCT.h +6 -6
- package/include/SABER/SrcSnkSolver.h +2 -2
- package/include/SVF-LLVM/DCHG.h +6 -6
- package/include/SVF-LLVM/LLVMUtil.h +5 -0
- package/include/SVF-LLVM/SymbolTableBuilder.h +0 -3
- package/include/SVFIR/SVFValue.h +2 -11
- package/include/SVFIR/SVFVariables.h +5 -5
- package/include/Util/GraphReachSolver.h +2 -2
- package/include/Util/SCC.h +1 -1
- package/include/Util/iterator.h +32 -32
- package/include/Util/iterator_range.h +11 -11
- package/include/WPA/WPASolver.h +1 -1
- package/lib/Graphs/CFLGraph.cpp +2 -2
- package/lib/Graphs/CHG.cpp +2 -2
- package/lib/Graphs/ConsG.cpp +2 -2
- package/lib/Graphs/GraphWriter.cpp +1 -1
- package/lib/Graphs/ICFG.cpp +2 -2
- package/lib/Graphs/IRGraph.cpp +2 -2
- package/lib/Graphs/PTACallGraph.cpp +2 -2
- package/lib/Graphs/SVFG.cpp +1 -1
- package/lib/Graphs/VFG.cpp +2 -2
- package/lib/MTA/TCT.cpp +1 -1
- package/lib/SVF-LLVM/LLVMModule.cpp +0 -2
- package/lib/SVF-LLVM/LLVMUtil.cpp +40 -0
- package/lib/SVF-LLVM/SVFIRBuilder.cpp +1 -1
- package/lib/SVF-LLVM/SymbolTableBuilder.cpp +0 -34
- package/lib/SVFIR/SVFValue.cpp +0 -1
- package/package.json +1 -1
|
@@ -66,58 +66,58 @@ $(function() {
|
|
|
66
66
|
<div class="title">GraphWriter.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="GraphWriter_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">//===- Graphs/GraphWriter.h - Write graph to a .dot file --*- C++ -*-===//</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">// From the LLVM Project with some modifications, under the Apache License v2.0</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// with LLVM Exceptions. See https://llvm.org/LICENSE.txt for license information.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception</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> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// This file defines a simple interface that can be used to print out generic</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// LLVM graphs to ".dot" files. "dot" is a tool that is part of the AT&T</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// graphviz package (http://www.research.att.com/sw/tools/graphviz/) which can</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// be used to turn the files output by this interface into a variety of</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// different graphics formats.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Graphs do not need to implement any interface past what is already required</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// by the GraphTraits template, but they can choose to implement specializations</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// of the DOTGraphTraits template if they want to customize the graphs output in</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// any way.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">//</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> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#ifndef LLVM_SUPPORT_GRAPHWRITER_H</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#define LLVM_SUPPORT_GRAPHWRITER_H</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="GraphTraits_8h.html">Graphs/GraphTraits.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="DOTGraphTraits_8h.html">Graphs/DOTGraphTraits.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <cstddef></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <iterator></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <type_traits></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <fstream></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></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> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespacellvm_1_1DOT.html"> 40</a></span> <span class="keyword">namespace </span><a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10baa979410a6f3129644e1be86fb488e455">DOT</a> <span class="comment">// Private functions...</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">EscapeStr</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Label);</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="comment">// end namespace DOT</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespacellvm_1_1GraphProgram.html"> 47</a></span> <span class="keyword">namespace </span>GraphProgram</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b"> 50</a></span> <span class="keyword">enum</span> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10baa979410a6f3129644e1be86fb488e455"> 52</a></span>  <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10baa979410a6f3129644e1be86fb488e455">DOT</a>,</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10ba369c1aafe1a79637a098d1ac61c3c940"> 53</a></span>  <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10ba369c1aafe1a79637a098d1ac61c3c940">FDP</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10ba5f97d56ae6699c2775313a0b5cd6badb"> 54</a></span>  <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10ba5f97d56ae6699c2775313a0b5cd6badb">NEATO</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10ba3af922b814bd0960a3c12abbe6b87a0d"> 55</a></span>  <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10ba3af922b814bd0960a3c12abbe6b87a0d">TWOPI</a>,</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10bab89542c270041afd91cb19369af6dc31"> 56</a></span>  <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10bab89542c270041afd91cb19369af6dc31">CIRCO</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> } <span class="comment">// end namespace GraphProgram</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">template</span><<span class="keyword">typename</span> GraphType></div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html"> 62</a></span> <span class="keyword">class </span><a class="code" href="classllvm_1_1GraphWriter.html">GraphWriter</a></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#a8d438ca3456d83ef5feff3934d709e4d"> 64</a></span>  std::ofstream &<a class="code" href="classllvm_1_1GraphWriter.html#a8d438ca3456d83ef5feff3934d709e4d">O</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#a811cf97f9ab7e2ac2d006413a5168397"> 65</a></span>  <span class="keyword">const</span> GraphType &<a class="code" href="classllvm_1_1GraphWriter.html#a811cf97f9ab7e2ac2d006413a5168397">G</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#aeec6e5ec72e25776f32f269ef33b2a42"> 67</a></span>  <span class="keyword">using</span> <a class="code" href="structllvm_1_1DOTGraphTraits.html">DOTTraits</a> = <a class="code" href="structllvm_1_1DOTGraphTraits.html">DOTGraphTraits<GraphType></a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#ab818592ecc463aa32e20efe6d9633236"> 68</a></span>  <span class="keyword">using</span> <a class="code" href="structllvm_1_1GraphTraits.html">GTraits</a> = <a class="code" href="structllvm_1_1GraphTraits.html">GraphTraits<GraphType></a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#aaa20e43142541895d4d811036a13f3a9"> 69</a></span>  <span class="keyword">using</span> <a class="code" href="classllvm_1_1GraphWriter.html#aaa20e43142541895d4d811036a13f3a9">NodeRef</a> = <span class="keyword">typename</span> <a class="code" href="structllvm_1_1GraphTraits.html#a741f7d63af17a7bd0bcf63f68e8658bd">GTraits::NodeRef</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#a7b52c9b514ee98010ef88cbdd9dabf5e"> 70</a></span>  <span class="keyword">using</span> <a class="code" href="classllvm_1_1GraphWriter.html#a7b52c9b514ee98010ef88cbdd9dabf5e">node_iterator</a> = <span class="keyword">typename</span> GTraits::nodes_iterator;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#a72ce38d44134ece4a898bc84c0c3a278"> 71</a></span>  <span class="keyword">using</span> <a class="code" href="classllvm_1_1GraphWriter.html#a72ce38d44134ece4a898bc84c0c3a278">child_iterator</a> = <span class="keyword">typename</span> GTraits::ChildIteratorType;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#aed76f440aab643d1af5dbfda1a3f9c78"> 72</a></span>  <a class="code" href="structllvm_1_1DOTGraphTraits.html">DOTTraits</a> <a class="code" href="classllvm_1_1GraphWriter.html#aed76f440aab643d1af5dbfda1a3f9c78">DTraits</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  static_assert(std::is_pointer<NodeRef>::value,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="stringliteral">"FIXME: Currently GraphWriter requires the NodeRef type to be "</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="stringliteral">"a pointer.\nThe pointer usage should be moved to "</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="stringliteral">"DOTGraphTraits, and removed from GraphWriter itself."</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// Writes the edge labels of the node to O and returns true if there are any</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// edge labels not equal to the empty string "".</span></div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#a5bf52f5835e697e0f5b5ca592357c60a"> 81</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1GraphWriter.html#a5bf52f5835e697e0f5b5ca592357c60a">getEdgeSourceLabels</a>(std::stringstream &O2, <a class="code" href="classllvm_1_1GraphWriter.html#aaa20e43142541895d4d811036a13f3a9">NodeRef</a> Node)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classllvm_1_1GraphWriter.html#a72ce38d44134ece4a898bc84c0c3a278">child_iterator</a> EI = GTraits::child_begin(Node);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="classllvm_1_1GraphWriter.html#a72ce38d44134ece4a898bc84c0c3a278">child_iterator</a> EE = GTraits::child_end(Node);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">bool</span> hasEdgeSourceLabels = <span class="keyword">false</span>;</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>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; EI != EE && i != 64; ++EI, ++i)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> label = DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#ab027bd32578caffc0ba18d84406a18c6">getEdgeSourceLabel</a>(Node, EI);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span> (label.empty())</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">continue</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"> 94</span>  hasEdgeSourceLabels = <span class="keyword">true</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span> (i)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  O2 << <span class="stringliteral">"|"</span>;</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>  O2 << <span class="stringliteral">"<s"</span> << i << <span class="stringliteral">">"</span> << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(label);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span> (EI != EE && hasEdgeSourceLabels)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  O2 << <span class="stringliteral">"|<s64>truncated..."</span>;</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>  <span class="keywordflow">return</span> hasEdgeSourceLabels;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#a79f24408e3cb14afcdb57171c048cc3e"> 109</a></span>  <a class="code" href="classllvm_1_1GraphWriter.html#a79f24408e3cb14afcdb57171c048cc3e">GraphWriter</a>(std::ofstream &o, <span class="keyword">const</span> GraphType &g, <span class="keywordtype">bool</span> SN) : O(o), G(g)</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>  DTraits = <a class="code" href="structllvm_1_1DOTGraphTraits.html">DOTTraits</a>(SN);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#a735f4b736fd7e2b9e8e8f4618a6d15b6"> 114</a></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1GraphWriter.html#a735f4b736fd7e2b9e8e8f4618a6d15b6">writeGraph</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Title = <span class="stringliteral">""</span>)</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>  <span class="comment">// Output the header for the graph...</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  writeHeader(Title);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// Emit all of the nodes in the graph...</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  writeNodes();</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>  <span class="comment">// Output any customizations on the graph</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#ae2bdfe5fa774a3dc5aad9a8465b50011">DOTGraphTraits<GraphType>::addCustomGraphFeatures</a>(G, *<span class="keyword">this</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// Output the end of the graph</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  writeFooter();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#ae6d4aa3516673900b59b36270de4d327"> 129</a></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1GraphWriter.html#ae6d4aa3516673900b59b36270de4d327">writeHeader</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Title)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> GraphName(DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a4c2c0688a7c4cf69903603fddd539b45">getGraphName</a>(G));</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span> (!Title.empty())</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  O << <span class="stringliteral">"digraph \""</span> << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(Title) << <span class="stringliteral">"\" {\n"</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!GraphName.empty())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  O << <span class="stringliteral">"digraph \""</span> << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(GraphName) << <span class="stringliteral">"\" {\n"</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  O << <span class="stringliteral">"digraph unnamed {\n"</span>;</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="keywordflow">if</span> (DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a8a9c7f5663e2ea7d1180f1d9a6e4eaeb">renderGraphFromBottomUp</a>())</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  O << <span class="stringliteral">"\trankdir=\"BT\";\n"</span>;</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>  <span class="keywordflow">if</span> (!Title.empty())</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  O << <span class="stringliteral">"\tlabel=\""</span> << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(Title) << <span class="stringliteral">"\";\n"</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!GraphName.empty())</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  O << <span class="stringliteral">"\tlabel=\""</span> << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(GraphName) << <span class="stringliteral">"\";\n"</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  O << DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a67a907a4c097d688d01195e110e4c9e2">getGraphProperties</a>(G);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  O << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#ad91df53d734fd4567e198911658cadcc"> 151</a></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1GraphWriter.html#ad91df53d734fd4567e198911658cadcc">writeFooter</a>()</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>  <span class="comment">// Finish off the graph</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  O << <span class="stringliteral">"}\n"</span>;</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> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#ae154c973ffaab3104a365b5b8c3a6155"> 157</a></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1GraphWriter.html#ae154c973ffaab3104a365b5b8c3a6155">writeNodes</a>()</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// Loop over the graph, printing it out...</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> Node : nodes<GraphType>(G))</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span> (!isNodeHidden(Node))</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  writeNode(Node);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#ad62ba39b9a15436e5e500cfae21f6a9a"> 165</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1GraphWriter.html#ad62ba39b9a15436e5e500cfae21f6a9a">isNodeHidden</a>(<a class="code" href="classllvm_1_1GraphWriter.html#aaa20e43142541895d4d811036a13f3a9">NodeRef</a> Node)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a34e6b19c33ee44ffb9c51f46967ca83f">isNodeHidden</a>(Node, G);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#a2f9acb4356fb561c08c041c7761210d8"> 170</a></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1GraphWriter.html#a2f9acb4356fb561c08c041c7761210d8">writeNode</a>(<a class="code" href="classllvm_1_1GraphWriter.html#aaa20e43142541895d4d811036a13f3a9">NodeRef</a> Node)</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>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> NodeAttributes = DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#ae9e61a7c29f47b392cf64a32dec5de01">getNodeAttributes</a>(Node, G);</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">"\tNode"</span> << <span class="keyword">static_cast<</span><span class="keyword">const </span><span class="keywordtype">void</span>*<span class="keyword">></span>(Node) << <span class="stringliteral">" [shape=record,"</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (!NodeAttributes.empty()) O << NodeAttributes << <span class="stringliteral">","</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  O << <span class="stringliteral">"label=\"{"</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="keywordflow">if</span> (!DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a8a9c7f5663e2ea7d1180f1d9a6e4eaeb">renderGraphFromBottomUp</a>())</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  O << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a748e27397b601b36da4ff8689fe1d231">getNodeLabel</a>(Node, G));</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// If we should include the address of the node in the label, do so now.</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> Id = DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a072cecf5f6337d45a0497e786e317803">getNodeIdentifierLabel</a>(Node, G);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span> (!Id.empty())</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  O << <span class="stringliteral">"|"</span> << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(Id);</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>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> NodeDesc = DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#ae7c057127b4b68bdc5d64b5c86eb393e">getNodeDescription</a>(Node, G);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span> (!NodeDesc.empty())</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  O << <span class="stringliteral">"|"</span> << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(NodeDesc);</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> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> edgeSourceLabels;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  std::stringstream EdgeSourceLabels(edgeSourceLabels);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">bool</span> hasEdgeSourceLabels = getEdgeSourceLabels(EdgeSourceLabels, Node);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> (hasEdgeSourceLabels)</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> (!DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a8a9c7f5663e2ea7d1180f1d9a6e4eaeb">renderGraphFromBottomUp</a>()) O << <span class="stringliteral">"|"</span>;</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>  O << <span class="stringliteral">"{"</span> << EdgeSourceLabels.str() << <span class="stringliteral">"}"</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a8a9c7f5663e2ea7d1180f1d9a6e4eaeb">renderGraphFromBottomUp</a>()) O << <span class="stringliteral">"|"</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"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span> (DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a8a9c7f5663e2ea7d1180f1d9a6e4eaeb">renderGraphFromBottomUp</a>())</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  O << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a748e27397b601b36da4ff8689fe1d231">getNodeLabel</a>(Node, G));</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// If we should include the address of the node in the label, do so now.</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> Id = DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a072cecf5f6337d45a0497e786e317803">getNodeIdentifierLabel</a>(Node, G);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span> (!Id.empty())</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  O << <span class="stringliteral">"|"</span> << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(Id);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> NodeDesc = DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#ae7c057127b4b68bdc5d64b5c86eb393e">getNodeDescription</a>(Node, G);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span> (!NodeDesc.empty())</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  O << <span class="stringliteral">"|"</span> << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(NodeDesc);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span> (DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#ab3571663f16a9f8cebfaea84d53ceb3e">hasEdgeDestLabels</a>())</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  O << <span class="stringliteral">"|{"</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordtype">unsigned</span> i = 0, e = DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#afab72fb75dab2b1a7ce2a19452e4d1ec">numEdgeDestLabels</a>(Node);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">for</span> (; i != e && i != 64; ++i)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span> (i) O << <span class="stringliteral">"|"</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  O << <span class="stringliteral">"<d"</span> << i << <span class="stringliteral">">"</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a9f3e85580d90386f42f6bdd82b851d83">getEdgeDestLabel</a>(Node, i));</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span> (i != e)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  O << <span class="stringliteral">"|<d64>truncated..."</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  O << <span class="stringliteral">"}"</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  O << <span class="stringliteral">"}\"];\n"</span>; <span class="comment">// Finish printing the "node" line</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">// Output all of the edges now</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="classllvm_1_1GraphWriter.html#a72ce38d44134ece4a898bc84c0c3a278">child_iterator</a> EI = GTraits::child_begin(Node);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="classllvm_1_1GraphWriter.html#a72ce38d44134ece4a898bc84c0c3a278">child_iterator</a> EE = GTraits::child_end(Node);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; EI != EE && i != 64; ++EI, ++i)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span> (!DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a34e6b19c33ee44ffb9c51f46967ca83f">isNodeHidden</a>(*EI, G))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  writeEdge(Node, i, EI);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">for</span> (; EI != EE; ++EI)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">if</span> (!DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a34e6b19c33ee44ffb9c51f46967ca83f">isNodeHidden</a>(*EI, G))</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  writeEdge(Node, 64, EI);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#a5a3c530ecf0e13d79816c345c4d114ec"> 249</a></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1GraphWriter.html#a5a3c530ecf0e13d79816c345c4d114ec">writeEdge</a>(<a class="code" href="classllvm_1_1GraphWriter.html#aaa20e43142541895d4d811036a13f3a9">NodeRef</a> Node, <span class="keywordtype">unsigned</span> edgeidx, <a class="code" href="classllvm_1_1GraphWriter.html#a72ce38d44134ece4a898bc84c0c3a278">child_iterator</a> EI)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1GraphWriter.html#aaa20e43142541895d4d811036a13f3a9">NodeRef</a> TargetNode = *EI)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordtype">int</span> DestPort = -1;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span> (DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a89ab1cad8814ece47ef2b4cff3045532">edgeTargetsEdgeSource</a>(Node, EI))</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="classllvm_1_1GraphWriter.html#a72ce38d44134ece4a898bc84c0c3a278">child_iterator</a> TargetIt = DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a4de19ba711c05792f22cc8ccf00b97f1">getEdgeTarget</a>(Node, EI);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// Figure out which edge this targets...</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">unsigned</span> Offset =</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  (unsigned)std::distance(GTraits::child_begin(TargetNode), TargetIt);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  DestPort = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(Offset);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span> (DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#ab027bd32578caffc0ba18d84406a18c6">getEdgeSourceLabel</a>(Node, EI).empty())</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  edgeidx = -1;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  emitEdge(static_cast<const void*>(Node), edgeidx,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  static_cast<const void*>(TargetNode), DestPort,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#a6acd27748e3dade4e1a3385accf539ec">getEdgeAttributes</a>(Node, EI, G));</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"> 272</span> </div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#a5f409f860e49edb941120a2908613c43"> 274</a></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1GraphWriter.html#a5f409f860e49edb941120a2908613c43">emitSimpleNode</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *ID, <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Attr,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Label, <span class="keywordtype">unsigned</span> NumEdgeSources = 0,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">const</span> std::vector<std::string> *EdgeSourceLabels = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  O << <span class="stringliteral">"\tNode"</span> << ID << <span class="stringliteral">"[ "</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (!Attr.empty())</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  O << Attr << <span class="stringliteral">","</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  O << <span class="stringliteral">" label =\""</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">if</span> (NumEdgeSources) O << <span class="stringliteral">"{"</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  O << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>(Label);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (NumEdgeSources)</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>  O << <span class="stringliteral">"|{"</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumEdgeSources; ++i)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span> (i) O << <span class="stringliteral">"|"</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  O << <span class="stringliteral">"<s"</span> << i << <span class="stringliteral">">"</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">if</span> (EdgeSourceLabels) O << <a class="code" href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">DOT::EscapeStr</a>((*EdgeSourceLabels)[i]);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  O << <span class="stringliteral">"}}"</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  O << <span class="stringliteral">"\"];\n"</span>;</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="l00300"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#ad621d196f82bd8898a0840c045920ea3"> 300</a></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1GraphWriter.html#ad621d196f82bd8898a0840c045920ea3">emitEdge</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *SrcNodeID, <span class="keywordtype">int</span> SrcNodePort,</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keyword">const</span> <span class="keywordtype">void</span> *DestNodeID, <span class="keywordtype">int</span> DestNodePort,</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Attrs)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (SrcNodePort > 64) <span class="keywordflow">return</span>; <span class="comment">// Eminating from truncated part?</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">if</span> (DestNodePort > 64) DestNodePort = 64; <span class="comment">// Targeting the truncated part?</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  O << <span class="stringliteral">"\tNode"</span> << SrcNodeID;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span> (SrcNodePort >= 0)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  O << <span class="stringliteral">":s"</span> << SrcNodePort;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  O << <span class="stringliteral">" -> Node"</span> << DestNodeID;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">if</span> (DestNodePort >= 0 && DTraits.<a class="code" href="structllvm_1_1DefaultDOTGraphTraits.html#ab3571663f16a9f8cebfaea84d53ceb3e">hasEdgeDestLabels</a>())</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  O << <span class="stringliteral">":d"</span> << DestNodePort;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">if</span> (!Attrs.empty())</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  O << <span class="stringliteral">"["</span> << Attrs << <span class="stringliteral">"]"</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  O << <span class="stringliteral">";\n"</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classllvm_1_1GraphWriter.html#ac18efe5c7817eb06b744973fb0dae3be"> 321</a></span>  std::ofstream &<a class="code" href="classllvm_1_1GraphWriter.html#ac18efe5c7817eb06b744973fb0dae3be">getOStream</a>()</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> O;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> };</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> <span class="keyword">template</span><<span class="keyword">typename</span> GraphType></div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="namespacellvm.html#adc0ea9d5e23d0277eda65041e33fee55"> 328</a></span> std::ofstream &<a class="code" href="namespacellvm.html#adc0ea9d5e23d0277eda65041e33fee55">WriteGraph</a>(std::ofstream &O, <span class="keyword">const</span> GraphType &G,</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordtype">bool</span> ShortNames = <span class="keyword">false</span>)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="comment">// Start the graph emission process...</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="classllvm_1_1GraphWriter.html">GraphWriter<GraphType></a> W(O, G, ShortNames);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="comment">// Emit the graph.</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  W.<a class="code" href="classllvm_1_1GraphWriter.html#a735f4b736fd7e2b9e8e8f4618a6d15b6">writeGraph</a>(<span class="stringliteral">""</span>);</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> O;</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="l00344"></a><span class="lineno"> 344</span> <span class="keyword">template</span> <<span class="keyword">typename</span> GraphType></div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="namespacellvm.html#a8532ada875ed55f0d803315ae7c39f39"> 345</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespacellvm.html#adc0ea9d5e23d0277eda65041e33fee55">WriteGraph</a>(<span class="keyword">const</span> GraphType &G,</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordtype">bool</span> ShortNames = <span class="keyword">false</span>,</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> Filename = <span class="stringliteral">""</span>)</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> {</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>  std::ofstream O(Filename);</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>  <span class="keywordflow">if</span> (O.fail())</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  std::cerr << <span class="stringliteral">"error opening file '"</span> << Filename << <span class="stringliteral">"' for writing!\n"</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  O.close();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="namespacellvm.html#adc0ea9d5e23d0277eda65041e33fee55">llvm::WriteGraph</a>(O, G, ShortNames);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  O.close();</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>  std::cerr << <span class="stringliteral">" done. \n"</span>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">return</span> Filename;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="keyword">template</span><<span class="keyword">typename</span> GraphType></div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="namespacellvm.html#a470c5592e4cd36a22901d15832b9c41b"> 371</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a470c5592e4cd36a22901d15832b9c41b">ViewGraph</a>(<span class="keyword">const</span> GraphType &G,<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>,</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordtype">bool</span> ShortNames = <span class="keyword">false</span>,</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">GraphProgram::Name</a> Program = <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10baa979410a6f3129644e1be86fb488e455">GraphProgram::DOT</a>)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <a class="code" href="namespacellvm.html#adc0ea9d5e23d0277eda65041e33fee55">llvm::WriteGraph</a>(G, ShortNames);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> } <span class="comment">// end namespace llvm</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="preprocessor">#endif // LLVM_SUPPORT_GRAPHWRITER_H</span></div><div class="ttc" id="structllvm_1_1DefaultDOTGraphTraits_html_ae7c057127b4b68bdc5d64b5c86eb393e"><div class="ttname"><a href="structllvm_1_1DefaultDOTGraphTraits.html#ae7c057127b4b68bdc5d64b5c86eb393e">llvm::DefaultDOTGraphTraits::getNodeDescription</a></div><div class="ttdeci">static std::string getNodeDescription(const void *, const GraphType &)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00095">DOTGraphTraits.h:95</a></div></div>
|
|
70
|
-
<div class="ttc" id="
|
|
71
|
-
<div class="ttc" id="
|
|
72
|
-
<div class="ttc" id="
|
|
73
|
-
<div class="ttc" id="
|
|
74
|
-
<div class="ttc" id="
|
|
75
|
-
<div class="ttc" id="
|
|
76
|
-
<div class="ttc" id="
|
|
77
|
-
<div class="ttc" id="
|
|
78
|
-
<div class="ttc" id="
|
|
79
|
-
<div class="ttc" id="
|
|
80
|
-
<div class="ttc" id="
|
|
81
|
-
<div class="ttc" id="
|
|
82
|
-
<div class="ttc" id="
|
|
83
|
-
<div class="ttc" id="
|
|
69
|
+
<a href="GraphWriter_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">//===- Graphs/GraphWriter.h - Write graph to a .dot file --*- C++ -*-===//</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">// From the LLVM Project with some modifications, under the Apache License v2.0</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// with LLVM Exceptions. See https://llvm.org/LICENSE.txt for license information.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception</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> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// This file defines a simple interface that can be used to print out generic</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// LLVM graphs to ".dot" files. "dot" is a tool that is part of the AT&T</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// graphviz package (http://www.research.att.com/sw/tools/graphviz/) which can</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// be used to turn the files output by this interface into a variety of</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// different graphics formats.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Graphs do not need to implement any interface past what is already required</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// by the GraphTraits template, but they can choose to implement specializations</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// of the DOTGraphTraits template if they want to customize the graphs output in</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// any way.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">//</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> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#ifndef GRAPHS_GRAPHWRITER_H</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#define GRAPHS_GRAPHWRITER_H</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="GraphTraits_8h.html">Graphs/GraphTraits.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="DOTGraphTraits_8h.html">Graphs/DOTGraphTraits.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <cstddef></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <iterator></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <type_traits></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <fstream></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1DOT.html"> 40</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37ae09e3feb3996d73e682cf2a5077c090c">DOT</a> <span class="comment">// Private functions...</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">EscapeStr</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Label);</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="comment">// end namespace DOT</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1GraphProgram.html"> 47</a></span> <span class="keyword">namespace </span>GraphProgram</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37"> 50</a></span> <span class="keyword">enum</span> <a class="code" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37">Name</a></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37ae09e3feb3996d73e682cf2a5077c090c"> 52</a></span>  <a class="code" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37ae09e3feb3996d73e682cf2a5077c090c">DOT</a>,</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37ac3a20ad67d8b23a37a2c81ef793323a9"> 53</a></span>  <a class="code" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37ac3a20ad67d8b23a37a2c81ef793323a9">FDP</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37a280cacd79d09366b6832ebc6e54b5a9c"> 54</a></span>  <a class="code" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37a280cacd79d09366b6832ebc6e54b5a9c">NEATO</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37ac6a6eaaa34322cf54953ba390895f0c5"> 55</a></span>  <a class="code" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37ac6a6eaaa34322cf54953ba390895f0c5">TWOPI</a>,</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37a88732178df8f5804ab976cc48e584674"> 56</a></span>  <a class="code" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37a88732178df8f5804ab976cc48e584674">CIRCO</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> } <span class="comment">// end namespace GraphProgram</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">template</span><<span class="keyword">typename</span> GraphType></div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html"> 62</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1GraphWriter.html">GraphWriter</a></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#a2e882c9af39ffd3c4a4bac9212e0e82d"> 64</a></span>  std::ofstream &<a class="code" href="classSVF_1_1GraphWriter.html#a2e882c9af39ffd3c4a4bac9212e0e82d">O</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#a0ac109f9b3c3b3fe3cb61bbef09e0d29"> 65</a></span>  <span class="keyword">const</span> GraphType &<a class="code" href="classSVF_1_1GraphWriter.html#a0ac109f9b3c3b3fe3cb61bbef09e0d29">G</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#a245d85f8c907a409533ab151e9e3d9a2"> 67</a></span>  <span class="keyword">using</span> <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTTraits</a> = <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits<GraphType></a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#a65144f9ff432d21ad2751287a7237b3f"> 68</a></span>  <span class="keyword">using</span> <a class="code" href="structSVF_1_1GenericGraphTraits.html">GTraits</a> = <a class="code" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits<GraphType></a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#ac2141c33c4075610f8253287ee4ff0c6"> 69</a></span>  <span class="keyword">using</span> <a class="code" href="classSVF_1_1GraphWriter.html#ac2141c33c4075610f8253287ee4ff0c6">NodeRef</a> = <span class="keyword">typename</span> <a class="code" href="structSVF_1_1GenericGraphTraits.html#a05654ab9615d75bc8e5f8c5cf9297205">GTraits::NodeRef</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#ab7ac9f47cedfc1f7c4cc3b16f5349427"> 70</a></span>  <span class="keyword">using</span> <a class="code" href="classSVF_1_1GraphWriter.html#ab7ac9f47cedfc1f7c4cc3b16f5349427">node_iterator</a> = <span class="keyword">typename</span> GTraits::nodes_iterator;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#ad41e952ca114bba64b87478f469b6d56"> 71</a></span>  <span class="keyword">using</span> <a class="code" href="classSVF_1_1GraphWriter.html#ad41e952ca114bba64b87478f469b6d56">child_iterator</a> = <span class="keyword">typename</span> GTraits::ChildIteratorType;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#a36f1ca2744fae2f45400e82f39e4fcd8"> 72</a></span>  <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTTraits</a> <a class="code" href="classSVF_1_1GraphWriter.html#a36f1ca2744fae2f45400e82f39e4fcd8">DTraits</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  static_assert(std::is_pointer<NodeRef>::value,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="stringliteral">"FIXME: Currently GraphWriter requires the NodeRef type to be "</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="stringliteral">"a pointer.\nThe pointer usage should be moved to "</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="stringliteral">"DOTGraphTraits, and removed from GraphWriter itself."</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// Writes the edge labels of the node to O and returns true if there are any</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// edge labels not equal to the empty string "".</span></div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#aa2d0fada900a8e08af0539498905a74f"> 81</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GraphWriter.html#aa2d0fada900a8e08af0539498905a74f">getEdgeSourceLabels</a>(std::stringstream &O2, <a class="code" href="classSVF_1_1GraphWriter.html#ac2141c33c4075610f8253287ee4ff0c6">NodeRef</a> Node)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classSVF_1_1GraphWriter.html#ad41e952ca114bba64b87478f469b6d56">child_iterator</a> EI = GTraits::child_begin(Node);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="classSVF_1_1GraphWriter.html#ad41e952ca114bba64b87478f469b6d56">child_iterator</a> EE = GTraits::child_end(Node);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">bool</span> hasEdgeSourceLabels = <span class="keyword">false</span>;</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>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; EI != EE && i != 64; ++EI, ++i)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> label = DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a66f5994cdef8fa307c9ff69ca90a1d6c">getEdgeSourceLabel</a>(Node, EI);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span> (label.empty())</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">continue</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"> 94</span>  hasEdgeSourceLabels = <span class="keyword">true</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span> (i)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  O2 << <span class="stringliteral">"|"</span>;</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>  O2 << <span class="stringliteral">"<s"</span> << i << <span class="stringliteral">">"</span> << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(label);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span> (EI != EE && hasEdgeSourceLabels)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  O2 << <span class="stringliteral">"|<s64>truncated..."</span>;</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>  <span class="keywordflow">return</span> hasEdgeSourceLabels;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#afd8fec784307b919d1cb89b49533600e"> 109</a></span>  <a class="code" href="classSVF_1_1GraphWriter.html#afd8fec784307b919d1cb89b49533600e">GraphWriter</a>(std::ofstream &o, <span class="keyword">const</span> GraphType &g, <span class="keywordtype">bool</span> SN) : O(o), G(g)</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>  DTraits = <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTTraits</a>(SN);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#ae414407f483b60c9fa49e2f3ae62de30"> 114</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1GraphWriter.html#ae414407f483b60c9fa49e2f3ae62de30">writeGraph</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Title = <span class="stringliteral">""</span>)</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>  <span class="comment">// Output the header for the graph...</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  writeHeader(Title);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// Emit all of the nodes in the graph...</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  writeNodes();</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>  <span class="comment">// Output any customizations on the graph</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a47ee60dc78e3f869ce4e808e73437ddf">DOTGraphTraits<GraphType>::addCustomGraphFeatures</a>(G, *<span class="keyword">this</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// Output the end of the graph</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  writeFooter();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#abd376959cc889e1e387523f38674650f"> 129</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1GraphWriter.html#abd376959cc889e1e387523f38674650f">writeHeader</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Title)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> GraphName(DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a41effe5697618840e0d5ea10c26781fe">getGraphName</a>(G));</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span> (!Title.empty())</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  O << <span class="stringliteral">"digraph \""</span> << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(Title) << <span class="stringliteral">"\" {\n"</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!GraphName.empty())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  O << <span class="stringliteral">"digraph \""</span> << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(GraphName) << <span class="stringliteral">"\" {\n"</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  O << <span class="stringliteral">"digraph unnamed {\n"</span>;</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="keywordflow">if</span> (DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#aeb5908ad6424c0636b698e5ea0a587c0">renderGraphFromBottomUp</a>())</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  O << <span class="stringliteral">"\trankdir=\"BT\";\n"</span>;</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>  <span class="keywordflow">if</span> (!Title.empty())</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  O << <span class="stringliteral">"\tlabel=\""</span> << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(Title) << <span class="stringliteral">"\";\n"</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!GraphName.empty())</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  O << <span class="stringliteral">"\tlabel=\""</span> << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(GraphName) << <span class="stringliteral">"\";\n"</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  O << DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#afe384157441d5ef0b3aafdfb6cd3028a">getGraphProperties</a>(G);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  O << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#a5c3ce0eba24c71f847676b23b855e44c"> 151</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1GraphWriter.html#a5c3ce0eba24c71f847676b23b855e44c">writeFooter</a>()</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>  <span class="comment">// Finish off the graph</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  O << <span class="stringliteral">"}\n"</span>;</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> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#ada2363727dc20c2183b8252f3bdf3a04"> 157</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1GraphWriter.html#ada2363727dc20c2183b8252f3bdf3a04">writeNodes</a>()</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// Loop over the graph, printing it out...</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> Node : nodes<GraphType>(G))</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span> (!isNodeHidden(Node))</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  writeNode(Node);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#a8b1d80caf226c3a619c5fb03f8724f74"> 165</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GraphWriter.html#a8b1d80caf226c3a619c5fb03f8724f74">isNodeHidden</a>(<a class="code" href="classSVF_1_1GraphWriter.html#ac2141c33c4075610f8253287ee4ff0c6">NodeRef</a> Node)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#ae73ba55d72d5df1f70a2bfa2e12958f3">isNodeHidden</a>(Node, G);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#a18c579b53feccbb3b521982c6161f555"> 170</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1GraphWriter.html#a18c579b53feccbb3b521982c6161f555">writeNode</a>(<a class="code" href="classSVF_1_1GraphWriter.html#ac2141c33c4075610f8253287ee4ff0c6">NodeRef</a> Node)</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>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> NodeAttributes = DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a3438f5f1ed763f2f7818535f212ff43b">getNodeAttributes</a>(Node, G);</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">"\tNode"</span> << <span class="keyword">static_cast<</span><span class="keyword">const </span><span class="keywordtype">void</span>*<span class="keyword">></span>(Node) << <span class="stringliteral">" [shape=record,"</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (!NodeAttributes.empty()) O << NodeAttributes << <span class="stringliteral">","</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  O << <span class="stringliteral">"label=\"{"</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="keywordflow">if</span> (!DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#aeb5908ad6424c0636b698e5ea0a587c0">renderGraphFromBottomUp</a>())</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  O << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a07487bbf691110420c680250994a6eba">getNodeLabel</a>(Node, G));</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// If we should include the address of the node in the label, do so now.</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> Id = DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a0f81b82658f62589ec429c601538f6e9">getNodeIdentifierLabel</a>(Node, G);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span> (!Id.empty())</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  O << <span class="stringliteral">"|"</span> << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(Id);</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>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> NodeDesc = DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#af5800f2d8efa24fee85f03871c07df21">getNodeDescription</a>(Node, G);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span> (!NodeDesc.empty())</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  O << <span class="stringliteral">"|"</span> << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(NodeDesc);</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> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> edgeSourceLabels;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  std::stringstream EdgeSourceLabels(edgeSourceLabels);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">bool</span> hasEdgeSourceLabels = getEdgeSourceLabels(EdgeSourceLabels, Node);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> (hasEdgeSourceLabels)</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> (!DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#aeb5908ad6424c0636b698e5ea0a587c0">renderGraphFromBottomUp</a>()) O << <span class="stringliteral">"|"</span>;</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>  O << <span class="stringliteral">"{"</span> << EdgeSourceLabels.str() << <span class="stringliteral">"}"</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#aeb5908ad6424c0636b698e5ea0a587c0">renderGraphFromBottomUp</a>()) O << <span class="stringliteral">"|"</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"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span> (DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#aeb5908ad6424c0636b698e5ea0a587c0">renderGraphFromBottomUp</a>())</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  O << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a07487bbf691110420c680250994a6eba">getNodeLabel</a>(Node, G));</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// If we should include the address of the node in the label, do so now.</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> Id = DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a0f81b82658f62589ec429c601538f6e9">getNodeIdentifierLabel</a>(Node, G);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span> (!Id.empty())</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  O << <span class="stringliteral">"|"</span> << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(Id);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> NodeDesc = DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#af5800f2d8efa24fee85f03871c07df21">getNodeDescription</a>(Node, G);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span> (!NodeDesc.empty())</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  O << <span class="stringliteral">"|"</span> << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(NodeDesc);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span> (DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a87d7b47985a849c7c4ff1c328a59c623">hasEdgeDestLabels</a>())</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  O << <span class="stringliteral">"|{"</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordtype">unsigned</span> i = 0, e = DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a94f582264d3020f36a2ca3bdfbdaf81b">numEdgeDestLabels</a>(Node);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">for</span> (; i != e && i != 64; ++i)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span> (i) O << <span class="stringliteral">"|"</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  O << <span class="stringliteral">"<d"</span> << i << <span class="stringliteral">">"</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a5e560e93632e0ed1934d4c4508ca1884">getEdgeDestLabel</a>(Node, i));</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span> (i != e)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  O << <span class="stringliteral">"|<d64>truncated..."</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  O << <span class="stringliteral">"}"</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  O << <span class="stringliteral">"}\"];\n"</span>; <span class="comment">// Finish printing the "node" line</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">// Output all of the edges now</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="classSVF_1_1GraphWriter.html#ad41e952ca114bba64b87478f469b6d56">child_iterator</a> EI = GTraits::child_begin(Node);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="classSVF_1_1GraphWriter.html#ad41e952ca114bba64b87478f469b6d56">child_iterator</a> EE = GTraits::child_end(Node);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; EI != EE && i != 64; ++EI, ++i)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span> (!DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#ae73ba55d72d5df1f70a2bfa2e12958f3">isNodeHidden</a>(*EI, G))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  writeEdge(Node, i, EI);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">for</span> (; EI != EE; ++EI)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">if</span> (!DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#ae73ba55d72d5df1f70a2bfa2e12958f3">isNodeHidden</a>(*EI, G))</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  writeEdge(Node, 64, EI);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#a6133d0033363b0e9db156c354da7d7e6"> 249</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1GraphWriter.html#a6133d0033363b0e9db156c354da7d7e6">writeEdge</a>(<a class="code" href="classSVF_1_1GraphWriter.html#ac2141c33c4075610f8253287ee4ff0c6">NodeRef</a> Node, <span class="keywordtype">unsigned</span> edgeidx, <a class="code" href="classSVF_1_1GraphWriter.html#ad41e952ca114bba64b87478f469b6d56">child_iterator</a> EI)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GraphWriter.html#ac2141c33c4075610f8253287ee4ff0c6">NodeRef</a> TargetNode = *EI)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordtype">int</span> DestPort = -1;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span> (DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a78c40f9b1af839116b88519fca154396">edgeTargetsEdgeSource</a>(Node, EI))</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="classSVF_1_1GraphWriter.html#ad41e952ca114bba64b87478f469b6d56">child_iterator</a> TargetIt = DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#acfab6216e24999e92b2354e4f15b96b6">getEdgeTarget</a>(Node, EI);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// Figure out which edge this targets...</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">unsigned</span> Offset =</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  (unsigned)std::distance(GTraits::child_begin(TargetNode), TargetIt);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  DestPort = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(Offset);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span> (DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a66f5994cdef8fa307c9ff69ca90a1d6c">getEdgeSourceLabel</a>(Node, EI).empty())</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  edgeidx = -1;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  emitEdge(static_cast<const void*>(Node), edgeidx,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  static_cast<const void*>(TargetNode), DestPort,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#ad84c95525cf15f90848c2558fd28f43b">getEdgeAttributes</a>(Node, EI, G));</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"> 272</span> </div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#a0feff91ed80b997dd4550fae16382768"> 274</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1GraphWriter.html#a0feff91ed80b997dd4550fae16382768">emitSimpleNode</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *ID, <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Attr,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Label, <span class="keywordtype">unsigned</span> NumEdgeSources = 0,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">const</span> std::vector<std::string> *EdgeSourceLabels = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  O << <span class="stringliteral">"\tNode"</span> << ID << <span class="stringliteral">"[ "</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (!Attr.empty())</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  O << Attr << <span class="stringliteral">","</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  O << <span class="stringliteral">" label =\""</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">if</span> (NumEdgeSources) O << <span class="stringliteral">"{"</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  O << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>(Label);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (NumEdgeSources)</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>  O << <span class="stringliteral">"|{"</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumEdgeSources; ++i)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span> (i) O << <span class="stringliteral">"|"</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  O << <span class="stringliteral">"<s"</span> << i << <span class="stringliteral">">"</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">if</span> (EdgeSourceLabels) O << <a class="code" href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">DOT::EscapeStr</a>((*EdgeSourceLabels)[i]);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  O << <span class="stringliteral">"}}"</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  O << <span class="stringliteral">"\"];\n"</span>;</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="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#a320577b81479578a8e6021380f9c07a7"> 300</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1GraphWriter.html#a320577b81479578a8e6021380f9c07a7">emitEdge</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *SrcNodeID, <span class="keywordtype">int</span> SrcNodePort,</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keyword">const</span> <span class="keywordtype">void</span> *DestNodeID, <span class="keywordtype">int</span> DestNodePort,</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &Attrs)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (SrcNodePort > 64) <span class="keywordflow">return</span>; <span class="comment">// Eminating from truncated part?</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">if</span> (DestNodePort > 64) DestNodePort = 64; <span class="comment">// Targeting the truncated part?</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  O << <span class="stringliteral">"\tNode"</span> << SrcNodeID;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span> (SrcNodePort >= 0)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  O << <span class="stringliteral">":s"</span> << SrcNodePort;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  O << <span class="stringliteral">" -> Node"</span> << DestNodeID;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">if</span> (DestNodePort >= 0 && DTraits.<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#a87d7b47985a849c7c4ff1c328a59c623">hasEdgeDestLabels</a>())</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  O << <span class="stringliteral">":d"</span> << DestNodePort;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">if</span> (!Attrs.empty())</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  O << <span class="stringliteral">"["</span> << Attrs << <span class="stringliteral">"]"</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  O << <span class="stringliteral">";\n"</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1GraphWriter.html#afa5d94effc56067e44eba9a11afd5284"> 321</a></span>  std::ofstream &<a class="code" href="classSVF_1_1GraphWriter.html#afa5d94effc56067e44eba9a11afd5284">getOStream</a>()</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> O;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> };</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> <span class="keyword">template</span><<span class="keyword">typename</span> GraphType></div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ae27267f89add1338fd5afe3a38f61ebd"> 328</a></span> std::ofstream &<a class="code" href="namespaceSVF.html#ae27267f89add1338fd5afe3a38f61ebd">WriteGraph</a>(std::ofstream &O, <span class="keyword">const</span> GraphType &G,</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordtype">bool</span> ShortNames = <span class="keyword">false</span>)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="comment">// Start the graph emission process...</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="classSVF_1_1GraphWriter.html">GraphWriter<GraphType></a> W(O, G, ShortNames);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="comment">// Emit the graph.</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  W.<a class="code" href="classSVF_1_1GraphWriter.html#ae414407f483b60c9fa49e2f3ae62de30">writeGraph</a>(<span class="stringliteral">""</span>);</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> O;</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="l00344"></a><span class="lineno"> 344</span> <span class="keyword">template</span> <<span class="keyword">typename</span> GraphType></div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a587614f74cb00a35a423559265239798"> 345</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF.html#ae27267f89add1338fd5afe3a38f61ebd">WriteGraph</a>(<span class="keyword">const</span> GraphType &G,</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordtype">bool</span> ShortNames = <span class="keyword">false</span>,</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> Filename = <span class="stringliteral">""</span>)</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> {</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>  std::ofstream O(Filename);</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>  <span class="keywordflow">if</span> (O.fail())</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  std::cerr << <span class="stringliteral">"error opening file '"</span> << Filename << <span class="stringliteral">"' for writing!\n"</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  O.close();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="namespaceSVF.html#ae27267f89add1338fd5afe3a38f61ebd">SVF::WriteGraph</a>(O, G, ShortNames);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  O.close();</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>  std::cerr << <span class="stringliteral">" done. \n"</span>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">return</span> Filename;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="keyword">template</span><<span class="keyword">typename</span> GraphType></div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a4582a7d33a5631a5a38973f50035327e"> 371</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF.html#a4582a7d33a5631a5a38973f50035327e">ViewGraph</a>(<span class="keyword">const</span> GraphType &G,<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>,</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordtype">bool</span> ShortNames = <span class="keyword">false</span>,</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37">GraphProgram::Name</a> Program = <a class="code" href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37ae09e3feb3996d73e682cf2a5077c090c">GraphProgram::DOT</a>)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <a class="code" href="namespaceSVF.html#ae27267f89add1338fd5afe3a38f61ebd">SVF::WriteGraph</a>(G, ShortNames);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> } <span class="comment">// end namespace llvm</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="preprocessor">#endif // LLVM_SUPPORT_GRAPHWRITER_H</span></div><div class="ttc" id="classSVF_1_1GraphWriter_html_a18c579b53feccbb3b521982c6161f555"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#a18c579b53feccbb3b521982c6161f555">SVF::GraphWriter::writeNode</a></div><div class="ttdeci">void writeNode(NodeRef Node)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00170">GraphWriter.h:170</a></div></div>
|
|
70
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_acfab6216e24999e92b2354e4f15b96b6"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#acfab6216e24999e92b2354e4f15b96b6">SVF::DefaultDOTGraphTraits::getEdgeTarget</a></div><div class="ttdeci">static EdgeIter getEdgeTarget(const void *, EdgeIter I)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00139">DOTGraphTraits.h:139</a></div></div>
|
|
71
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_afa5d94effc56067e44eba9a11afd5284"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#afa5d94effc56067e44eba9a11afd5284">SVF::GraphWriter::getOStream</a></div><div class="ttdeci">std::ofstream & getOStream()</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00321">GraphWriter.h:321</a></div></div>
|
|
72
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_aeb5908ad6424c0636b698e5ea0a587c0"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#aeb5908ad6424c0636b698e5ea0a587c0">SVF::DefaultDOTGraphTraits::renderGraphFromBottomUp</a></div><div class="ttdeci">static bool renderGraphFromBottomUp()</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00064">DOTGraphTraits.h:64</a></div></div>
|
|
73
|
+
<div class="ttc" id="namespaceSVF_1_1DOT_html_a9e3127c2bbedaec1f20d4437bea9e2f7"><div class="ttname"><a href="namespaceSVF_1_1DOT.html#a9e3127c2bbedaec1f20d4437bea9e2f7">SVF::DOT::EscapeStr</a></div><div class="ttdeci">std::string EscapeStr(const std::string &Label)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8cpp_source.html#l00012">GraphWriter.cpp:12</a></div></div>
|
|
74
|
+
<div class="ttc" id="namespaceSVF_1_1GraphProgram_html_a10f45758abb5c1ef51b0ba38d18efd37a88732178df8f5804ab976cc48e584674"><div class="ttname"><a href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37a88732178df8f5804ab976cc48e584674">SVF::GraphProgram::CIRCO</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00056">GraphWriter.h:56</a></div></div>
|
|
75
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_ad41e952ca114bba64b87478f469b6d56"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#ad41e952ca114bba64b87478f469b6d56">SVF::GraphWriter::child_iterator</a></div><div class="ttdeci">typename GTraits::ChildIteratorType child_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00071">GraphWriter.h:71</a></div></div>
|
|
76
|
+
<div class="ttc" id="namespaceSVF_1_1GraphProgram_html_a10f45758abb5c1ef51b0ba38d18efd37"><div class="ttname"><a href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37">SVF::GraphProgram::Name</a></div><div class="ttdeci">Name</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00050">GraphWriter.h:50</a></div></div>
|
|
77
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_ab7ac9f47cedfc1f7c4cc3b16f5349427"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#ab7ac9f47cedfc1f7c4cc3b16f5349427">SVF::GraphWriter::node_iterator</a></div><div class="ttdeci">typename GTraits::nodes_iterator node_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00070">GraphWriter.h:70</a></div></div>
|
|
78
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html"><div class="ttname"><a href="classSVF_1_1GraphWriter.html">SVF::GraphWriter</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00062">GraphWriter.h:62</a></div></div>
|
|
79
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_aa2d0fada900a8e08af0539498905a74f"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#aa2d0fada900a8e08af0539498905a74f">SVF::GraphWriter::getEdgeSourceLabels</a></div><div class="ttdeci">bool getEdgeSourceLabels(std::stringstream &O2, NodeRef Node)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00081">GraphWriter.h:81</a></div></div>
|
|
80
|
+
<div class="ttc" id="namespaceSVF_html_ae27267f89add1338fd5afe3a38f61ebd"><div class="ttname"><a href="namespaceSVF.html#ae27267f89add1338fd5afe3a38f61ebd">SVF::WriteGraph</a></div><div class="ttdeci">std::ofstream & WriteGraph(std::ofstream &O, const GraphType &G, bool ShortNames=false)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00328">GraphWriter.h:328</a></div></div>
|
|
81
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_ad84c95525cf15f90848c2558fd28f43b"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#ad84c95525cf15f90848c2558fd28f43b">SVF::DefaultDOTGraphTraits::getEdgeAttributes</a></div><div class="ttdeci">static std::string getEdgeAttributes(const void *, EdgeIter, const GraphType &)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00112">DOTGraphTraits.h:112</a></div></div>
|
|
82
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_ada2363727dc20c2183b8252f3bdf3a04"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#ada2363727dc20c2183b8252f3bdf3a04">SVF::GraphWriter::writeNodes</a></div><div class="ttdeci">void writeNodes()</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00157">GraphWriter.h:157</a></div></div>
|
|
83
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_a36f1ca2744fae2f45400e82f39e4fcd8"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#a36f1ca2744fae2f45400e82f39e4fcd8">SVF::GraphWriter::DTraits</a></div><div class="ttdeci">DOTTraits DTraits</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00072">GraphWriter.h:72</a></div></div>
|
|
84
84
|
<div class="ttc" id="GraphTraits_8h_html"><div class="ttname"><a href="GraphTraits_8h.html">GraphTraits.h</a></div></div>
|
|
85
85
|
<div class="ttc" id="cJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
|
|
86
|
-
<div class="ttc" id="
|
|
87
|
-
<div class="ttc" id="
|
|
88
|
-
<div class="ttc" id="
|
|
89
|
-
<div class="ttc" id="
|
|
90
|
-
<div class="ttc" id="
|
|
91
|
-
<div class="ttc" id="
|
|
92
|
-
<div class="ttc" id="
|
|
93
|
-
<div class="ttc" id="
|
|
94
|
-
<div class="ttc" id="
|
|
95
|
-
<div class="ttc" id="
|
|
96
|
-
<div class="ttc" id="
|
|
97
|
-
<div class="ttc" id="
|
|
98
|
-
<div class="ttc" id="
|
|
99
|
-
<div class="ttc" id="classllvm_1_1GraphWriter_html_a72ce38d44134ece4a898bc84c0c3a278"><div class="ttname"><a href="classllvm_1_1GraphWriter.html#a72ce38d44134ece4a898bc84c0c3a278">llvm::GraphWriter::child_iterator</a></div><div class="ttdeci">typename GTraits::ChildIteratorType child_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00071">GraphWriter.h:71</a></div></div>
|
|
100
|
-
<div class="ttc" id="namespacellvm_1_1DOT_html_a31e5d80aa888e96643a4150bfedaa917"><div class="ttname"><a href="namespacellvm_1_1DOT.html#a31e5d80aa888e96643a4150bfedaa917">llvm::DOT::EscapeStr</a></div><div class="ttdeci">std::string EscapeStr(const std::string &Label)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8cpp_source.html#l00012">GraphWriter.cpp:12</a></div></div>
|
|
86
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_abd376959cc889e1e387523f38674650f"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#abd376959cc889e1e387523f38674650f">SVF::GraphWriter::writeHeader</a></div><div class="ttdeci">void writeHeader(const std::string &Title)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00129">GraphWriter.h:129</a></div></div>
|
|
87
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_a78c40f9b1af839116b88519fca154396"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#a78c40f9b1af839116b88519fca154396">SVF::DefaultDOTGraphTraits::edgeTargetsEdgeSource</a></div><div class="ttdeci">static bool edgeTargetsEdgeSource(const void *, EdgeIter)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00130">DOTGraphTraits.h:130</a></div></div>
|
|
88
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_ae73ba55d72d5df1f70a2bfa2e12958f3"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#ae73ba55d72d5df1f70a2bfa2e12958f3">SVF::DefaultDOTGraphTraits::isNodeHidden</a></div><div class="ttdeci">static bool isNodeHidden(const void *, const GraphType &)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00072">DOTGraphTraits.h:72</a></div></div>
|
|
89
|
+
<div class="ttc" id="namespaceSVF_1_1GraphProgram_html_a10f45758abb5c1ef51b0ba38d18efd37ae09e3feb3996d73e682cf2a5077c090c"><div class="ttname"><a href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37ae09e3feb3996d73e682cf2a5077c090c">SVF::GraphProgram::DOT</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00052">GraphWriter.h:52</a></div></div>
|
|
90
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_a41effe5697618840e0d5ea10c26781fe"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#a41effe5697618840e0d5ea10c26781fe">SVF::DefaultDOTGraphTraits::getGraphName</a></div><div class="ttdeci">static std::string getGraphName(const GraphType &)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00047">DOTGraphTraits.h:47</a></div></div>
|
|
91
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_a87d7b47985a849c7c4ff1c328a59c623"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#a87d7b47985a849c7c4ff1c328a59c623">SVF::DefaultDOTGraphTraits::hasEdgeDestLabels</a></div><div class="ttdeci">static bool hasEdgeDestLabels()</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00146">DOTGraphTraits.h:146</a></div></div>
|
|
92
|
+
<div class="ttc" id="structSVF_1_1GenericGraphTraits_html_a05654ab9615d75bc8e5f8c5cf9297205"><div class="ttname"><a href="structSVF_1_1GenericGraphTraits.html#a05654ab9615d75bc8e5f8c5cf9297205">SVF::GenericGraphTraits::NodeRef</a></div><div class="ttdeci">typename GraphType::UnknownGraphTypeError NodeRef</div><div class="ttdef"><b>Definition:</b> <a href="GraphTraits_8h_source.html#l00080">GraphTraits.h:80</a></div></div>
|
|
93
|
+
<div class="ttc" id="structSVF_1_1DOTGraphTraits_html"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits.html">SVF::DOTGraphTraits< GraphType ></a></div></div>
|
|
94
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_ac2141c33c4075610f8253287ee4ff0c6"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#ac2141c33c4075610f8253287ee4ff0c6">SVF::GraphWriter::NodeRef</a></div><div class="ttdeci">typename GTraits::NodeRef NodeRef</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00069">GraphWriter.h:69</a></div></div>
|
|
95
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_a0ac109f9b3c3b3fe3cb61bbef09e0d29"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#a0ac109f9b3c3b3fe3cb61bbef09e0d29">SVF::GraphWriter::G</a></div><div class="ttdeci">const GraphType & G</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00065">GraphWriter.h:65</a></div></div>
|
|
96
|
+
<div class="ttc" id="namespaceSVF_1_1GraphProgram_html_a10f45758abb5c1ef51b0ba38d18efd37a280cacd79d09366b6832ebc6e54b5a9c"><div class="ttname"><a href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37a280cacd79d09366b6832ebc6e54b5a9c">SVF::GraphProgram::NEATO</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00054">GraphWriter.h:54</a></div></div>
|
|
97
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_a0f81b82658f62589ec429c601538f6e9"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#a0f81b82658f62589ec429c601538f6e9">SVF::DefaultDOTGraphTraits::getNodeIdentifierLabel</a></div><div class="ttdeci">static std::string getNodeIdentifierLabel(const void *, const GraphType &)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00089">DOTGraphTraits.h:89</a></div></div>
|
|
98
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_a5c3ce0eba24c71f847676b23b855e44c"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#a5c3ce0eba24c71f847676b23b855e44c">SVF::GraphWriter::writeFooter</a></div><div class="ttdeci">void writeFooter()</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00151">GraphWriter.h:151</a></div></div>
|
|
101
99
|
<div class="ttc" id="DOTGraphTraits_8h_html"><div class="ttname"><a href="DOTGraphTraits_8h.html">DOTGraphTraits.h</a></div></div>
|
|
102
|
-
<div class="ttc" id="
|
|
103
|
-
<div class="ttc" id="
|
|
104
|
-
<div class="ttc" id="
|
|
105
|
-
<div class="ttc" id="
|
|
106
|
-
<div class="ttc" id="
|
|
107
|
-
<div class="ttc" id="
|
|
108
|
-
<div class="ttc" id="
|
|
109
|
-
<div class="ttc" id="
|
|
110
|
-
<div class="ttc" id="
|
|
111
|
-
<div class="ttc" id="
|
|
112
|
-
<div class="ttc" id="
|
|
113
|
-
<div class="ttc" id="
|
|
114
|
-
<div class="ttc" id="
|
|
115
|
-
<div class="ttc" id="
|
|
116
|
-
<div class="ttc" id="
|
|
100
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_a8b1d80caf226c3a619c5fb03f8724f74"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#a8b1d80caf226c3a619c5fb03f8724f74">SVF::GraphWriter::isNodeHidden</a></div><div class="ttdeci">bool isNodeHidden(NodeRef Node)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00165">GraphWriter.h:165</a></div></div>
|
|
101
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_a66f5994cdef8fa307c9ff69ca90a1d6c"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#a66f5994cdef8fa307c9ff69ca90a1d6c">SVF::DefaultDOTGraphTraits::getEdgeSourceLabel</a></div><div class="ttdeci">static std::string getEdgeSourceLabel(const void *, EdgeIter)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00121">DOTGraphTraits.h:121</a></div></div>
|
|
102
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_a3438f5f1ed763f2f7818535f212ff43b"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#a3438f5f1ed763f2f7818535f212ff43b">SVF::DefaultDOTGraphTraits::getNodeAttributes</a></div><div class="ttdeci">static std::string getNodeAttributes(const void *, const GraphType &)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00103">DOTGraphTraits.h:103</a></div></div>
|
|
103
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_af5800f2d8efa24fee85f03871c07df21"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#af5800f2d8efa24fee85f03871c07df21">SVF::DefaultDOTGraphTraits::getNodeDescription</a></div><div class="ttdeci">static std::string getNodeDescription(const void *, const GraphType &)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00095">DOTGraphTraits.h:95</a></div></div>
|
|
104
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_afe384157441d5ef0b3aafdfb6cd3028a"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#afe384157441d5ef0b3aafdfb6cd3028a">SVF::DefaultDOTGraphTraits::getGraphProperties</a></div><div class="ttdeci">static std::string getGraphProperties(const GraphType &)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00056">DOTGraphTraits.h:56</a></div></div>
|
|
105
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_a320577b81479578a8e6021380f9c07a7"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#a320577b81479578a8e6021380f9c07a7">SVF::GraphWriter::emitEdge</a></div><div class="ttdeci">void emitEdge(const void *SrcNodeID, int SrcNodePort, const void *DestNodeID, int DestNodePort, const std::string &Attrs)</div><div class="ttdoc">emitEdge - Output an edge from a simple node into the graph... </div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00300">GraphWriter.h:300</a></div></div>
|
|
106
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_a5e560e93632e0ed1934d4c4508ca1884"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#a5e560e93632e0ed1934d4c4508ca1884">SVF::DefaultDOTGraphTraits::getEdgeDestLabel</a></div><div class="ttdeci">static std::string getEdgeDestLabel(const void *, unsigned)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00160">DOTGraphTraits.h:160</a></div></div>
|
|
107
|
+
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
|
|
108
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_a47ee60dc78e3f869ce4e808e73437ddf"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#a47ee60dc78e3f869ce4e808e73437ddf">SVF::DefaultDOTGraphTraits::addCustomGraphFeatures</a></div><div class="ttdeci">static void addCustomGraphFeatures(const GraphType &, GraphWriter &)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00172">DOTGraphTraits.h:172</a></div></div>
|
|
109
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_a07487bbf691110420c680250994a6eba"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#a07487bbf691110420c680250994a6eba">SVF::DefaultDOTGraphTraits::getNodeLabel</a></div><div class="ttdeci">std::string getNodeLabel(const void *, const GraphType &)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00080">DOTGraphTraits.h:80</a></div></div>
|
|
110
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_a2e882c9af39ffd3c4a4bac9212e0e82d"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#a2e882c9af39ffd3c4a4bac9212e0e82d">SVF::GraphWriter::O</a></div><div class="ttdeci">std::ofstream & O</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00064">GraphWriter.h:64</a></div></div>
|
|
111
|
+
<div class="ttc" id="namespaceSVF_html_a4582a7d33a5631a5a38973f50035327e"><div class="ttname"><a href="namespaceSVF.html#a4582a7d33a5631a5a38973f50035327e">SVF::ViewGraph</a></div><div class="ttdeci">void ViewGraph(const GraphType &G, const std::string &name, bool ShortNames=false, GraphProgram::Name Program=GraphProgram::DOT)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00371">GraphWriter.h:371</a></div></div>
|
|
112
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_afd8fec784307b919d1cb89b49533600e"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#afd8fec784307b919d1cb89b49533600e">SVF::GraphWriter::GraphWriter</a></div><div class="ttdeci">GraphWriter(std::ofstream &o, const GraphType &g, bool SN)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00109">GraphWriter.h:109</a></div></div>
|
|
113
|
+
<div class="ttc" id="structSVF_1_1DefaultDOTGraphTraits_html_a94f582264d3020f36a2ca3bdfbdaf81b"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#a94f582264d3020f36a2ca3bdfbdaf81b">SVF::DefaultDOTGraphTraits::numEdgeDestLabels</a></div><div class="ttdeci">static unsigned numEdgeDestLabels(const void *)</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00153">DOTGraphTraits.h:153</a></div></div>
|
|
114
|
+
<div class="ttc" id="namespaceSVF_1_1GraphProgram_html_a10f45758abb5c1ef51b0ba38d18efd37ac3a20ad67d8b23a37a2c81ef793323a9"><div class="ttname"><a href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37ac3a20ad67d8b23a37a2c81ef793323a9">SVF::GraphProgram::FDP</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00053">GraphWriter.h:53</a></div></div>
|
|
115
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_ae414407f483b60c9fa49e2f3ae62de30"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#ae414407f483b60c9fa49e2f3ae62de30">SVF::GraphWriter::writeGraph</a></div><div class="ttdeci">void writeGraph(const std::string &Title="")</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00114">GraphWriter.h:114</a></div></div>
|
|
116
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_a0feff91ed80b997dd4550fae16382768"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#a0feff91ed80b997dd4550fae16382768">SVF::GraphWriter::emitSimpleNode</a></div><div class="ttdeci">void emitSimpleNode(const void *ID, const std::string &Attr, const std::string &Label, unsigned NumEdgeSources=0, const std::vector< std::string > *EdgeSourceLabels=nullptr)</div><div class="ttdoc">emitSimpleNode - Outputs a simple (non-record) node </div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00274">GraphWriter.h:274</a></div></div>
|
|
117
117
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
118
|
-
<div class="ttc" id="
|
|
119
|
-
<div class="ttc" id="
|
|
120
|
-
<div class="ttc" id="
|
|
118
|
+
<div class="ttc" id="structSVF_1_1GenericGraphTraits_html"><div class="ttname"><a href="structSVF_1_1GenericGraphTraits.html">SVF::GenericGraphTraits</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphTraits_8h_source.html#l00036">GraphTraits.h:36</a></div></div>
|
|
119
|
+
<div class="ttc" id="classSVF_1_1GraphWriter_html_a6133d0033363b0e9db156c354da7d7e6"><div class="ttname"><a href="classSVF_1_1GraphWriter.html#a6133d0033363b0e9db156c354da7d7e6">SVF::GraphWriter::writeEdge</a></div><div class="ttdeci">void writeEdge(NodeRef Node, unsigned edgeidx, child_iterator EI)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00249">GraphWriter.h:249</a></div></div>
|
|
120
|
+
<div class="ttc" id="namespaceSVF_1_1GraphProgram_html_a10f45758abb5c1ef51b0ba38d18efd37ac6a6eaaa34322cf54953ba390895f0c5"><div class="ttname"><a href="namespaceSVF_1_1GraphProgram.html#a10f45758abb5c1ef51b0ba38d18efd37ac6a6eaaa34322cf54953ba390895f0c5">SVF::GraphProgram::TWOPI</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00055">GraphWriter.h:55</a></div></div>
|
|
121
121
|
</div><!-- fragment --></div><!-- contents -->
|
|
122
122
|
<!-- start footer part -->
|
|
123
123
|
<hr class="footer"/><address class="footer"><small>
|