svf-tools 1.0.780 → 1.0.781
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/CFLAlias_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp.html +51 -49
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +216 -184
- package/SVF-doxygen/html/html/ExtAPI_8h.html +6 -6
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +55 -47
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Options_8cpp_source.html +140 -132
- package/SVF-doxygen/html/html/Options_8h_source.html +46 -44
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +15 -13
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +180 -100
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +89 -88
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +43 -17
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +4 -4
- package/SVF-doxygen/html/html/functions_e.html +7 -1
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func_s.html +19 -16
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +17 -17
- package/SVF-doxygen/html/html/functions_p.html +15 -15
- package/SVF-doxygen/html/html/functions_r.html +1 -1
- package/SVF-doxygen/html/html/functions_s.html +26 -21
- package/SVF-doxygen/html/html/functions_t.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_e.html +6 -0
- package/SVF-doxygen/html/html/functions_w.html +1 -1
- package/SVF-doxygen/html/html/globals_d.html +3 -0
- package/SVF-doxygen/html/html/globals_defs.html +3 -3
- package/SVF-doxygen/html/html/globals_e.html +0 -3
- package/SVF-doxygen/html/html/search/all_10.js +324 -324
- package/SVF-doxygen/html/html/search/all_11.js +224 -224
- package/SVF-doxygen/html/html/search/all_12.js +546 -545
- package/SVF-doxygen/html/html/search/all_13.js +190 -190
- package/SVF-doxygen/html/html/search/all_14.js +67 -67
- package/SVF-doxygen/html/html/search/all_15.js +170 -170
- package/SVF-doxygen/html/html/search/all_16.js +63 -63
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/html/search/all_19.js +11 -11
- package/SVF-doxygen/html/html/search/all_1a.js +176 -176
- package/SVF-doxygen/html/html/search/all_4.js +184 -183
- package/SVF-doxygen/html/html/search/all_5.js +120 -119
- package/SVF-doxygen/html/html/search/all_6.js +225 -225
- package/SVF-doxygen/html/html/search/all_7.js +1056 -1056
- package/SVF-doxygen/html/html/search/all_8.js +195 -195
- package/SVF-doxygen/html/html/search/all_9.js +617 -617
- package/SVF-doxygen/html/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/html/search/all_c.js +116 -116
- package/SVF-doxygen/html/html/search/all_d.js +196 -196
- package/SVF-doxygen/html/html/search/all_e.js +207 -207
- package/SVF-doxygen/html/html/search/all_f.js +116 -116
- package/SVF-doxygen/html/html/search/classes_0.js +26 -26
- package/SVF-doxygen/html/html/search/classes_1.js +9 -9
- package/SVF-doxygen/html/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/html/search/classes_11.js +15 -15
- package/SVF-doxygen/html/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/html/search/classes_14.js +14 -14
- package/SVF-doxygen/html/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/html/search/classes_2.js +80 -80
- package/SVF-doxygen/html/html/search/classes_3.js +38 -38
- package/SVF-doxygen/html/html/search/classes_4.js +9 -9
- package/SVF-doxygen/html/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/html/search/classes_6.js +110 -110
- package/SVF-doxygen/html/html/search/classes_7.js +33 -33
- package/SVF-doxygen/html/html/search/classes_8.js +60 -60
- package/SVF-doxygen/html/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/html/search/classes_d.js +18 -18
- package/SVF-doxygen/html/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/html/search/defines_3.js +21 -20
- package/SVF-doxygen/html/html/search/defines_4.js +2 -3
- package/SVF-doxygen/html/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/html/search/defines_c.js +3 -3
- package/SVF-doxygen/html/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/html/search/defines_e.js +7 -7
- package/SVF-doxygen/html/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/html/search/enums_4.js +3 -3
- package/SVF-doxygen/html/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
- package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/html/search/files_1.js +7 -7
- package/SVF-doxygen/html/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/html/search/files_2.js +53 -53
- package/SVF-doxygen/html/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/html/search/files_6.js +9 -9
- package/SVF-doxygen/html/html/search/files_7.js +16 -16
- package/SVF-doxygen/html/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/html/search/files_b.js +2 -2
- package/SVF-doxygen/html/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/html/search/functions_0.js +12 -12
- package/SVF-doxygen/html/html/search/functions_1.js +357 -357
- package/SVF-doxygen/html/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/html/search/functions_11.js +138 -138
- package/SVF-doxygen/html/html/search/functions_12.js +279 -278
- package/SVF-doxygen/html/html/search/functions_13.js +58 -58
- package/SVF-doxygen/html/html/search/functions_14.js +39 -39
- package/SVF-doxygen/html/html/search/functions_15.js +71 -71
- package/SVF-doxygen/html/html/search/functions_16.js +32 -32
- package/SVF-doxygen/html/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/html/search/functions_18.js +176 -176
- package/SVF-doxygen/html/html/search/functions_2.js +86 -86
- package/SVF-doxygen/html/html/search/functions_3.js +257 -257
- package/SVF-doxygen/html/html/search/functions_4.js +75 -75
- package/SVF-doxygen/html/html/search/functions_5.js +53 -53
- package/SVF-doxygen/html/html/search/functions_6.js +59 -59
- package/SVF-doxygen/html/html/search/functions_7.js +858 -858
- package/SVF-doxygen/html/html/search/functions_8.js +147 -147
- package/SVF-doxygen/html/html/search/functions_9.js +429 -429
- package/SVF-doxygen/html/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/html/search/functions_c.js +26 -26
- package/SVF-doxygen/html/html/search/functions_d.js +77 -77
- package/SVF-doxygen/html/html/search/functions_e.js +35 -35
- package/SVF-doxygen/html/html/search/functions_f.js +56 -56
- package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/html/search/related_c.js +1 -1
- package/SVF-doxygen/html/html/search/related_d.js +11 -11
- package/SVF-doxygen/html/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
- package/SVF-doxygen/html/html/search/typedefs_1.js +26 -26
- package/SVF-doxygen/html/html/search/typedefs_10.js +63 -63
- package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
- package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/html/search/typedefs_2.js +128 -128
- package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/html/search/typedefs_4.js +17 -17
- package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
- package/SVF-doxygen/html/html/search/typedefs_6.js +58 -58
- package/SVF-doxygen/html/html/search/typedefs_7.js +46 -46
- package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_c.js +41 -41
- package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
- package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/html/search/variables_0.js +162 -162
- package/SVF-doxygen/html/html/search/variables_1.js +75 -75
- package/SVF-doxygen/html/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/html/search/variables_12.js +92 -92
- package/SVF-doxygen/html/html/search/variables_13.js +75 -75
- package/SVF-doxygen/html/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/html/search/variables_2.js +37 -37
- package/SVF-doxygen/html/html/search/variables_3.js +142 -142
- package/SVF-doxygen/html/html/search/variables_4.js +55 -55
- package/SVF-doxygen/html/html/search/variables_5.js +39 -37
- package/SVF-doxygen/html/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/html/search/variables_7.js +33 -33
- package/SVF-doxygen/html/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/html/search/variables_9.js +77 -77
- package/SVF-doxygen/html/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/html/search/variables_d.js +56 -56
- package/SVF-doxygen/html/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/html/search/variables_f.js +30 -30
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
- package/package.json +1 -1
- package/svf/include/Util/ExtAPI.h +7 -1
- package/svf/include/Util/Options.h +1 -0
- package/svf/lib/Util/ExtAPI.cpp +58 -30
- package/svf/lib/Util/Options.cpp +7 -0
|
@@ -100,210 +100,242 @@ $(function() {
|
|
|
100
100
|
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div>
|
|
101
101
|
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="ExtAPI_8h.html">Util/ExtAPI.h</a>"</span></div>
|
|
102
102
|
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div>
|
|
103
|
-
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include &
|
|
104
|
-
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> 
|
|
105
|
-
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> 
|
|
106
|
-
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> 
|
|
107
|
-
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> 
|
|
108
|
-
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> 
|
|
109
|
-
<div class="line"><a name="l00038"></a><span class="lineno"
|
|
110
|
-
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> 
|
|
111
|
-
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> 
|
|
112
|
-
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> 
|
|
113
|
-
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> 
|
|
114
|
-
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> 
|
|
115
|
-
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> 
|
|
116
|
-
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div>
|
|
117
|
-
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div>
|
|
118
|
-
<div class="line"><a name="l00047"></a><span class="lineno"
|
|
119
|
-
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> 
|
|
120
|
-
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> 
|
|
121
|
-
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> 
|
|
122
|
-
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> 
|
|
123
|
-
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> 
|
|
124
|
-
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> 
|
|
125
|
-
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> 
|
|
126
|
-
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> 
|
|
127
|
-
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> 
|
|
128
|
-
<div class="line"><a name="l00057"></a><span class="lineno"
|
|
129
|
-
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> 
|
|
130
|
-
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> 
|
|
131
|
-
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> 
|
|
132
|
-
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <
|
|
133
|
-
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> 
|
|
134
|
-
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> 
|
|
135
|
-
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> 
|
|
136
|
-
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> 
|
|
137
|
-
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> 
|
|
138
|
-
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="
|
|
139
|
-
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <
|
|
140
|
-
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> 
|
|
141
|
-
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> 
|
|
142
|
-
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> 
|
|
143
|
-
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> 
|
|
144
|
-
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> 
|
|
145
|
-
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> 
|
|
146
|
-
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">//
|
|
147
|
-
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> 
|
|
148
|
-
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> 
|
|
149
|
-
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> 
|
|
150
|
-
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div>
|
|
151
|
-
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> 
|
|
152
|
-
<div class="line"><a name="l00081"></a><span class="lineno"
|
|
153
|
-
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> 
|
|
154
|
-
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <
|
|
155
|
-
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> 
|
|
156
|
-
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> 
|
|
157
|
-
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> 
|
|
158
|
-
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> 
|
|
159
|
-
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> 
|
|
160
|
-
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="
|
|
161
|
-
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> 
|
|
162
|
-
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> 
|
|
163
|
-
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> 
|
|
164
|
-
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> 
|
|
165
|
-
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="
|
|
166
|
-
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> 
|
|
167
|
-
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> 
|
|
168
|
-
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> 
|
|
169
|
-
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> 
|
|
170
|
-
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> 
|
|
171
|
-
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> 
|
|
172
|
-
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> 
|
|
173
|
-
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> 
|
|
174
|
-
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> 
|
|
175
|
-
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> 
|
|
176
|
-
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> 
|
|
177
|
-
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> 
|
|
178
|
-
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="
|
|
179
|
-
<div class="line"><a name="l00108"></a><span class="lineno"
|
|
180
|
-
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> 
|
|
181
|
-
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="
|
|
182
|
-
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> 
|
|
183
|
-
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <
|
|
184
|
-
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> 
|
|
185
|
-
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> 
|
|
186
|
-
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> 
|
|
187
|
-
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> 
|
|
188
|
-
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> 
|
|
189
|
-
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> 
|
|
190
|
-
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> 
|
|
191
|
-
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="
|
|
192
|
-
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> 
|
|
193
|
-
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> 
|
|
194
|
-
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <
|
|
195
|
-
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> 
|
|
196
|
-
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> 
|
|
197
|
-
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  </div>
|
|
198
|
-
<div class="line"><a name="l00127"></a><span class="lineno"
|
|
199
|
-
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> 
|
|
200
|
-
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> 
|
|
201
|
-
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> 
|
|
202
|
-
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="
|
|
203
|
-
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> 
|
|
204
|
-
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> 
|
|
205
|
-
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> 
|
|
206
|
-
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> 
|
|
207
|
-
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> 
|
|
208
|
-
<div class="line"><a name="l00137"></a><span class="lineno"
|
|
209
|
-
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> 
|
|
210
|
-
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> 
|
|
211
|
-
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> 
|
|
212
|
-
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="
|
|
213
|
-
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> 
|
|
214
|
-
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> 
|
|
215
|
-
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> 
|
|
216
|
-
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> 
|
|
217
|
-
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div>
|
|
218
|
-
<div class="line"><a name="l00147"></a><span class="lineno"
|
|
219
|
-
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> 
|
|
220
|
-
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> 
|
|
221
|
-
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> 
|
|
222
|
-
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div>
|
|
223
|
-
<div class="line"><a name="l00152"></a><span class="lineno"
|
|
224
|
-
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> 
|
|
225
|
-
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> 
|
|
226
|
-
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> 
|
|
227
|
-
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> 
|
|
228
|
-
<div class="line"><a name="l00157"></a><span class="lineno"
|
|
229
|
-
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> 
|
|
230
|
-
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> 
|
|
231
|
-
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> 
|
|
232
|
-
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  </div>
|
|
233
|
-
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> 
|
|
234
|
-
<div class="line"><a name="l00163"></a><span class="lineno"
|
|
235
|
-
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> 
|
|
236
|
-
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> 
|
|
237
|
-
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> 
|
|
238
|
-
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  </div>
|
|
239
|
-
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> 
|
|
240
|
-
<div class="line"><a name="l00169"></a><span class="lineno"
|
|
241
|
-
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> 
|
|
242
|
-
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> 
|
|
243
|
-
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> 
|
|
244
|
-
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> 
|
|
245
|
-
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> 
|
|
246
|
-
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> 
|
|
247
|
-
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> 
|
|
248
|
-
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> 
|
|
249
|
-
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> 
|
|
250
|
-
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> 
|
|
251
|
-
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> 
|
|
252
|
-
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> 
|
|
253
|
-
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> 
|
|
254
|
-
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> 
|
|
255
|
-
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> 
|
|
256
|
-
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> 
|
|
257
|
-
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#
|
|
103
|
+
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div>
|
|
104
|
+
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <sys/stat.h></span></div>
|
|
105
|
+
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  </div>
|
|
106
|
+
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div>
|
|
107
|
+
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div>
|
|
108
|
+
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <a class="code" href="classSVF_1_1ExtAPI.html">ExtAPI</a>* <a class="code" href="classSVF_1_1ExtAPI.html#a552feab663622681db231d5b48f00d75">ExtAPI::extOp</a> = <span class="keyword">nullptr</span>;</div>
|
|
109
|
+
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">ExtAPI::extBcPath</a> = <span class="stringliteral">""</span>;</div>
|
|
110
|
+
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div>
|
|
111
|
+
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d"> 40</a></span> <a class="code" href="classSVF_1_1ExtAPI.html">ExtAPI</a>* <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()</div>
|
|
112
|
+
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div>
|
|
113
|
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ExtAPI.html#a552feab663622681db231d5b48f00d75">extOp</a> == <span class="keyword">nullptr</span>)</div>
|
|
114
|
+
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div>
|
|
115
|
+
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="classSVF_1_1ExtAPI.html#a552feab663622681db231d5b48f00d75">extOp</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ExtAPI.html#ab793be4b6f8f0a025599e76f5df2a4eb">ExtAPI</a>;</div>
|
|
116
|
+
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div>
|
|
117
|
+
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ExtAPI.html#a552feab663622681db231d5b48f00d75">extOp</a>;</div>
|
|
118
|
+
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div>
|
|
119
|
+
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div>
|
|
120
|
+
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#abe3e0e2500532acfc01cee7e2ce1cd90"> 49</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExtAPI.html#abe3e0e2500532acfc01cee7e2ce1cd90">ExtAPI::destory</a>()</div>
|
|
121
|
+
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div>
|
|
122
|
+
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ExtAPI.html#a552feab663622681db231d5b48f00d75">extOp</a> != <span class="keyword">nullptr</span>)</div>
|
|
123
|
+
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div>
|
|
124
|
+
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1ExtAPI.html#a552feab663622681db231d5b48f00d75">extOp</a>;</div>
|
|
125
|
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="classSVF_1_1ExtAPI.html#a552feab663622681db231d5b48f00d75">extOp</a> = <span class="keyword">nullptr</span>;</div>
|
|
126
|
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div>
|
|
127
|
+
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div>
|
|
128
|
+
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div>
|
|
129
|
+
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// Set extapi.bc file path</span></div>
|
|
130
|
+
<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#af458eeda610804c8cb5bbe5afd956a65"> 59</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExtAPI.html#af458eeda610804c8cb5bbe5afd956a65">ExtAPI::setExtBcPath</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& path)</div>
|
|
131
|
+
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div>
|
|
132
|
+
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a> = path;</div>
|
|
133
|
+
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div>
|
|
134
|
+
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div>
|
|
135
|
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// Get environment variables $SVF_DIR and "npm root" through popen() method</span></div>
|
|
136
|
+
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="ExtAPI_8cpp.html#a424940f91f234b23bcc633f12269f935"> 65</a></span> <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="ExtAPI_8cpp.html#a424940f91f234b23bcc633f12269f935">GetStdoutFromCommand</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& command)</div>
|
|
137
|
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> {</div>
|
|
138
|
+
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">char</span> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>[128];</div>
|
|
139
|
+
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> result = <span class="stringliteral">""</span>;</div>
|
|
140
|
+
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Open pipe to file</span></div>
|
|
141
|
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  FILE* pipe = popen(command.c_str(), <span class="stringliteral">"r"</span>);</div>
|
|
142
|
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">if</span> (!pipe)</div>
|
|
143
|
+
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div>
|
|
144
|
+
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> <span class="stringliteral">"popen failed!"</span>;</div>
|
|
145
|
+
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div>
|
|
146
|
+
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// read till end of process:</span></div>
|
|
147
|
+
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">while</span> (!feof(pipe))</div>
|
|
148
|
+
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div>
|
|
149
|
+
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// use buffer to read and add to result</span></div>
|
|
150
|
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (<a class="code" href="extapi_8c.html#a55c10fd7c7152a709388daa21827771c">fgets</a>(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>, 128, pipe) != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div>
|
|
151
|
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  result += <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
|
|
152
|
+
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div>
|
|
153
|
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  pclose(pipe);</div>
|
|
154
|
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// remove "\n"</span></div>
|
|
155
|
+
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  result.erase(remove(result.begin(), result.end(), <span class="charliteral">'\n'</span>), result.end());</div>
|
|
156
|
+
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> result;</div>
|
|
157
|
+
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div>
|
|
158
|
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div>
|
|
159
|
+
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// Get extapi.bc file path in npm</span></div>
|
|
160
|
+
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="ExtAPI_8cpp.html#a7d2ff3727892c4ee0eff596174eb5b84"> 89</a></span> <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="ExtAPI_8cpp.html#a7d2ff3727892c4ee0eff596174eb5b84">getFilePath</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& path)</div>
|
|
161
|
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div>
|
|
162
|
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> bcFilePath = <span class="stringliteral">""</span>;</div>
|
|
163
|
+
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span> (path.compare(<span class="stringliteral">"SVF_DIR"</span>) == 0)</div>
|
|
164
|
+
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div>
|
|
165
|
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  bcFilePath = getenv(<span class="stringliteral">"SVF_DIR"</span>);</div>
|
|
166
|
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div>
|
|
167
|
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (path.compare(<span class="stringliteral">"npm root"</span>) == 0)</div>
|
|
168
|
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div>
|
|
169
|
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  bcFilePath = <a class="code" href="ExtAPI_8cpp.html#a424940f91f234b23bcc633f12269f935">GetStdoutFromCommand</a>(path);</div>
|
|
170
|
+
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// SVF installed via npm needs to determine the type of operating</span></div>
|
|
171
|
+
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// system, otherwise the extapi.bc path may not be found.</span></div>
|
|
172
|
+
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#ifdef linux</span></div>
|
|
173
|
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// Linux os</span></div>
|
|
174
|
+
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  bcFilePath.append(<span class="stringliteral">"/svf-lib/SVF-linux"</span>);</div>
|
|
175
|
+
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#else</span></div>
|
|
176
|
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// Mac os</span></div>
|
|
177
|
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  bcFilePath.append(<span class="stringliteral">"/svf-lib/SVF-osx"</span>);</div>
|
|
178
|
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#endif</span></div>
|
|
179
|
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div>
|
|
180
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div>
|
|
181
|
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span> (!bcFilePath.empty() && bcFilePath.back() != <span class="charliteral">'/'</span>)</div>
|
|
182
|
+
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  bcFilePath.push_back(<span class="charliteral">'/'</span>);</div>
|
|
183
|
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  bcFilePath.append(BUILD_TYPE).append(<a class="code" href="ExtAPI_8h.html#a8983f9a86a5284dc50950222a06f1a11">DEFUALT_EXTAPI_BC_PATH</a>);</div>
|
|
184
|
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> bcFilePath;</div>
|
|
185
|
+
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> }</div>
|
|
186
|
+
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  </div>
|
|
187
|
+
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// Get extapi.bc path</span></div>
|
|
188
|
+
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c"> 117</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">ExtAPI::getExtBcPath</a>()</div>
|
|
189
|
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div>
|
|
190
|
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// Five default ways to get extapi.bc path</span></div>
|
|
191
|
+
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// 1. Set extapi.bc path through setExtBcPath() method</span></div>
|
|
192
|
+
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// 2. Set extapi.bc path through the "-extapi = PATH_TO_EXTAPIFILE" option</span></div>
|
|
193
|
+
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// 3. Default path: "SVF_IR_PATH/CMAKE_BUILD_TYPE-build/svf-llvm/extapi.bc"</span></div>
|
|
194
|
+
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// 4. From $SVF_DIR</span></div>
|
|
195
|
+
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// 5. From "npm root"(If SVF is installed via npm)</span></div>
|
|
196
|
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div>
|
|
197
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">struct </span>stat statbuf;</div>
|
|
198
|
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// 1. Set extapi.bc path through setExtBcPath() method</span></div>
|
|
199
|
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>.empty() && !stat(<a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>.c_str(), &statbuf))</div>
|
|
200
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>;</div>
|
|
201
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  </div>
|
|
202
|
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// 2. Set extapi.bc path through the "-extapi = PATH_TO_EXTAPIFILE" option</span></div>
|
|
203
|
+
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a> = <a class="code" href="classSVF_1_1Options.html#a2dffc9d885fa53340a1cdbc028d7f24a">Options::ExtAPIPath</a>();</div>
|
|
204
|
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>.empty() && !stat(<a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>.c_str(), &statbuf))</div>
|
|
205
|
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>;</div>
|
|
206
|
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  </div>
|
|
207
|
+
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// 3. Default path: "SVF_IR_PATH/CMAKE_BUILD_TYPE-build/svf-llvm/extapi.bc"</span></div>
|
|
208
|
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a> = <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>(EXTAPI_DIR) + <span class="stringliteral">"/extapi.bc"</span>;</div>
|
|
209
|
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span> (!stat(<a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>.c_str(), &statbuf))</div>
|
|
210
|
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>;</div>
|
|
211
|
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div>
|
|
212
|
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// 4. From $SVF_DIR</span></div>
|
|
213
|
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a> = <a class="code" href="ExtAPI_8cpp.html#a7d2ff3727892c4ee0eff596174eb5b84">getFilePath</a>(<span class="stringliteral">"SVF_DIR"</span>);</div>
|
|
214
|
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span> (!stat(<a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>.c_str(), &statbuf))</div>
|
|
215
|
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>;</div>
|
|
216
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  </div>
|
|
217
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// 5. From "npm root"(If SVF is installed via npm)</span></div>
|
|
218
|
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a> = <a class="code" href="ExtAPI_8cpp.html#a7d2ff3727892c4ee0eff596174eb5b84">getFilePath</a>(<span class="stringliteral">"npm root"</span>);</div>
|
|
219
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span> (!stat(<a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>.c_str(), &statbuf))</div>
|
|
220
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a>;</div>
|
|
221
|
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  </div>
|
|
222
|
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"No extapi.bc found at "</span> << <a class="code" href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">extBcPath</a> << <span class="stringliteral">" in getExtBcPath() !!!"</span> << <span class="stringliteral">"\n"</span></div>
|
|
223
|
+
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  << <span class="stringliteral">"You can specify extapi.bc path in two ways:"</span> << <span class="stringliteral">"\n"</span></div>
|
|
224
|
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  << <span class="stringliteral">"1. Set it via the command line using -extapi=/path_to_extapi;"</span> << <span class="stringliteral">"\n"</span></div>
|
|
225
|
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  << <span class="stringliteral">"2. Use the API setExtBcPath(). Please note that setExtBcPath() should be used before buildSVFModule().\n"</span>;</div>
|
|
226
|
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  abort();</div>
|
|
227
|
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div>
|
|
228
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div>
|
|
229
|
+
<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#a641c82ed1f1a86f0f8a6015ef1fdbfef"> 158</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ExtAPI.html#a641c82ed1f1a86f0f8a6015ef1fdbfef">ExtAPI::getExtFuncAnnotation</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& funcAnnotation)</div>
|
|
230
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> {</div>
|
|
231
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  assert(fun && <span class="stringliteral">"Null SVFFunction* pointer"</span>);</div>
|
|
232
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& annotation : fun-><a class="code" href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">getAnnotations</a>())</div>
|
|
233
|
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span> (annotation.find(funcAnnotation) != std::string::npos)</div>
|
|
234
|
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> annotation;</div>
|
|
235
|
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
|
|
236
|
+
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> }</div>
|
|
237
|
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  </div>
|
|
238
|
+
<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd"> 167</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd">ExtAPI::hasExtFuncAnnotation</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& funcAnnotation)</div>
|
|
239
|
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> {</div>
|
|
240
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  assert(fun && <span class="stringliteral">"Null SVFFunction* pointer"</span>);</div>
|
|
241
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& annotation : fun-><a class="code" href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">getAnnotations</a>())</div>
|
|
242
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span> (annotation.find(funcAnnotation) != std::string::npos)</div>
|
|
243
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
244
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
245
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> }</div>
|
|
246
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  </div>
|
|
247
|
+
<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#aadc8f2e0ff777e3f611a7d741def0742"> 176</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExtAPI.html#aadc8f2e0ff777e3f611a7d741def0742">ExtAPI::is_memcpy</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
248
|
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> {</div>
|
|
249
|
+
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> && <a class="code" href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd">hasExtFuncAnnotation</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, <span class="stringliteral">"MEMCPY"</span>);</div>
|
|
250
|
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div>
|
|
251
|
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  </div>
|
|
252
|
+
<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#a9f6e5cd617ab57ef9da0bab6c3c9cdc8"> 181</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExtAPI.html#a9f6e5cd617ab57ef9da0bab6c3c9cdc8">ExtAPI::is_memset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
253
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> {</div>
|
|
254
|
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> && <a class="code" href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd">hasExtFuncAnnotation</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, <span class="stringliteral">"MEMSET"</span>);</div>
|
|
255
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> }</div>
|
|
256
|
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  </div>
|
|
257
|
+
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#a0d865c55681a3b4a9bb965fd0200029d"> 186</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExtAPI.html#a0d865c55681a3b4a9bb965fd0200029d">ExtAPI::is_alloc</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
258
258
|
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> {</div>
|
|
259
|
-
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> && <a class="code" href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd">hasExtFuncAnnotation</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, <span class="stringliteral">"
|
|
259
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> && <a class="code" href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd">hasExtFuncAnnotation</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, <span class="stringliteral">"ALLOC_RET"</span>);</div>
|
|
260
260
|
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div>
|
|
261
261
|
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  </div>
|
|
262
|
-
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> 
|
|
263
|
-
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="
|
|
264
|
-
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> 
|
|
265
|
-
<div class="line"><a name="l00194"></a><span class="lineno"
|
|
266
|
-
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> 
|
|
267
|
-
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> 
|
|
268
|
-
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> 
|
|
269
|
-
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> 
|
|
270
|
-
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> 
|
|
271
|
-
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> 
|
|
272
|
-
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="
|
|
273
|
-
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> 
|
|
274
|
-
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> 
|
|
262
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="comment">// Does (F) allocate a new object and assign it to one of its arguments?</span></div>
|
|
263
|
+
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#a158e7da51d45b746e067dc40e912c477"> 192</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExtAPI.html#a158e7da51d45b746e067dc40e912c477">ExtAPI::is_arg_alloc</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
264
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> {</div>
|
|
265
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">return</span> <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> && <a class="code" href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd">hasExtFuncAnnotation</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, <span class="stringliteral">"ALLOC_ARG"</span>);</div>
|
|
266
|
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> }</div>
|
|
267
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  </div>
|
|
268
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="comment">// Get the position of argument which holds the new object</span></div>
|
|
269
|
+
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#a68939c789d0530151a4e79e79317531a"> 198</a></span> <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="classSVF_1_1ExtAPI.html#a68939c789d0530151a4e79e79317531a">ExtAPI::get_alloc_arg_pos</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
270
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> {</div>
|
|
271
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> allocArg = <a class="code" href="classSVF_1_1ExtAPI.html#a641c82ed1f1a86f0f8a6015ef1fdbfef">getExtFuncAnnotation</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, <span class="stringliteral">"ALLOC_ARG"</span>);</div>
|
|
272
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  assert(!allocArg.empty() && <span class="stringliteral">"Not an alloc call via argument or incorrect extern function annotation!"</span>);</div>
|
|
273
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  </div>
|
|
274
|
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a6288dae99eabb0a393b1d4974e01cde7">number</a>;</div>
|
|
275
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">for</span> (<span class="keywordtype">char</span> c : allocArg)</div>
|
|
276
|
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div>
|
|
277
|
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span> (<a class="code" href="extapi_8c.html#a3fa45b35c8abf67a950b6d3d4063dede">isdigit</a>(c))</div>
|
|
278
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="cJSON_8h.html#a6288dae99eabb0a393b1d4974e01cde7">number</a>.push_back(c);</div>
|
|
279
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div>
|
|
280
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  assert(!<a class="code" href="cJSON_8h.html#a6288dae99eabb0a393b1d4974e01cde7">number</a>.empty() && <span class="stringliteral">"Incorrect naming convention for svf external functions(ALLOC_ARG + number)?"</span>);</div>
|
|
281
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> std::stoi(<a class="code" href="cJSON_8h.html#a6288dae99eabb0a393b1d4974e01cde7">number</a>);</div>
|
|
282
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div>
|
|
283
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  </div>
|
|
284
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// Does (F) reallocate a new object?</span></div>
|
|
285
|
+
<div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#ac6d6bdc51a6b75d6d5741cb751559fe4"> 214</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExtAPI.html#ac6d6bdc51a6b75d6d5741cb751559fe4">ExtAPI::is_realloc</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
286
|
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> {</div>
|
|
287
|
+
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> && <a class="code" href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd">hasExtFuncAnnotation</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, <span class="stringliteral">"REALLOC_RET"</span>);</div>
|
|
288
|
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div>
|
|
289
|
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div>
|
|
290
|
+
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  </div>
|
|
291
|
+
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="comment">// Should (F) be considered "external" (either not defined in the program</span></div>
|
|
292
|
+
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="comment">// or a user-defined version of a known alloc or no-op)?</span></div>
|
|
293
|
+
<div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1ExtAPI.html#a21f45c806672255c044d39490990eae2"> 222</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExtAPI.html#a21f45c806672255c044d39490990eae2">ExtAPI::is_ext</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
294
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div>
|
|
295
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> && <span class="stringliteral">"Null SVFFunction* pointer"</span>);</div>
|
|
296
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->isDeclaration() || <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->isIntrinsic())</div>
|
|
297
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
298
|
+
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd">hasExtFuncAnnotation</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, <span class="stringliteral">"OVERWRITE"</span>) && <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getAnnotations().size() == 1)</div>
|
|
299
|
+
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
300
|
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">else</span></div>
|
|
301
|
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> !<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getAnnotations().empty();</div>
|
|
302
|
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> }</div>
|
|
275
303
|
</div><!-- fragment --></div><!-- contents -->
|
|
276
304
|
<div class="ttc" id="aextapi_8c_html_a55c10fd7c7152a709388daa21827771c"><div class="ttname"><a href="extapi_8c.html#a55c10fd7c7152a709388daa21827771c">fgets</a></div><div class="ttdeci">char * fgets(char *str, int n, void *stream)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00684">extapi.c:684</a></div></div>
|
|
277
305
|
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a552feab663622681db231d5b48f00d75"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a552feab663622681db231d5b48f00d75">SVF::ExtAPI::extOp</a></div><div class="ttdeci">static ExtAPI * extOp</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00050">ExtAPI.h:50</a></div></div>
|
|
278
|
-
<div class="ttc" id="aExtAPI_8cpp_html_a424940f91f234b23bcc633f12269f935"><div class="ttname"><a href="ExtAPI_8cpp.html#a424940f91f234b23bcc633f12269f935">GetStdoutFromCommand</a></div><div class="ttdeci">static std::string GetStdoutFromCommand(const std::string &command)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#
|
|
279
|
-
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_abe3e0e2500532acfc01cee7e2ce1cd90"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#abe3e0e2500532acfc01cee7e2ce1cd90">SVF::ExtAPI::destory</a></div><div class="ttdeci">static void destory()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#
|
|
280
|
-
<div class="ttc" id="aExtAPI_8cpp_html_a7d2ff3727892c4ee0eff596174eb5b84"><div class="ttname"><a href="ExtAPI_8cpp.html#a7d2ff3727892c4ee0eff596174eb5b84">getFilePath</a></div><div class="ttdeci">static std::string getFilePath(const std::string &path)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#
|
|
281
|
-
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a21f45c806672255c044d39490990eae2"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a21f45c806672255c044d39490990eae2">SVF::ExtAPI::is_ext</a></div><div class="ttdeci">bool is_ext(const SVFFunction *F)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#
|
|
306
|
+
<div class="ttc" id="aExtAPI_8cpp_html_a424940f91f234b23bcc633f12269f935"><div class="ttname"><a href="ExtAPI_8cpp.html#a424940f91f234b23bcc633f12269f935">GetStdoutFromCommand</a></div><div class="ttdeci">static std::string GetStdoutFromCommand(const std::string &command)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00065">ExtAPI.cpp:65</a></div></div>
|
|
307
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_abe3e0e2500532acfc01cee7e2ce1cd90"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#abe3e0e2500532acfc01cee7e2ce1cd90">SVF::ExtAPI::destory</a></div><div class="ttdeci">static void destory()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00049">ExtAPI.cpp:49</a></div></div>
|
|
308
|
+
<div class="ttc" id="aExtAPI_8cpp_html_a7d2ff3727892c4ee0eff596174eb5b84"><div class="ttname"><a href="ExtAPI_8cpp.html#a7d2ff3727892c4ee0eff596174eb5b84">getFilePath</a></div><div class="ttdeci">static std::string getFilePath(const std::string &path)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00089">ExtAPI.cpp:89</a></div></div>
|
|
309
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a21f45c806672255c044d39490990eae2"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a21f45c806672255c044d39490990eae2">SVF::ExtAPI::is_ext</a></div><div class="ttdeci">bool is_ext(const SVFFunction *F)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00222">ExtAPI.cpp:222</a></div></div>
|
|
282
310
|
<div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
283
311
|
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_ab793be4b6f8f0a025599e76f5df2a4eb"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#ab793be4b6f8f0a025599e76f5df2a4eb">SVF::ExtAPI::ExtAPI</a></div><div class="ttdeci">ExtAPI()=default</div></div>
|
|
284
312
|
<div class="ttc" id="acJSON_8h_html_a6288dae99eabb0a393b1d4974e01cde7"><div class="ttname"><a href="cJSON_8h.html#a6288dae99eabb0a393b1d4974e01cde7">number</a></div><div class="ttdeci">const char *const const double number</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00268">cJSON.h:268</a></div></div>
|
|
285
313
|
<div class="ttc" id="aextapi_8c_html_a3fa45b35c8abf67a950b6d3d4063dede"><div class="ttname"><a href="extapi_8c.html#a3fa45b35c8abf67a950b6d3d4063dede">isdigit</a></div><div class="ttdeci">int isdigit(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00754">extapi.c:754</a></div></div>
|
|
286
|
-
<div class="ttc" id="aExtAPI_8h_html_a02f944ad8948fa28a15d67ab1252573b"><div class="ttname"><a href="ExtAPI_8h.html#a02f944ad8948fa28a15d67ab1252573b">EXTAPI_BC_PATH</a></div><div class="ttdeci">#define EXTAPI_BC_PATH</div><div class="ttdoc">For a more detailed explanation of how External APIs are handled in SVF, please refer to the SVF Wiki...</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00041">ExtAPI.h:41</a></div></div>
|
|
287
314
|
<div class="ttc" id="acJSON_8h_html_a503753140aa27b00f99a3501280b2746"><div class="ttname"><a href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a></div><div class="ttdeci">char * buffer</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00163">cJSON.h:163</a></div></div>
|
|
288
|
-
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a68939c789d0530151a4e79e79317531a"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a68939c789d0530151a4e79e79317531a">SVF::ExtAPI::get_alloc_arg_pos</a></div><div class="ttdeci">s32_t get_alloc_arg_pos(const SVFFunction *F)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#
|
|
315
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a68939c789d0530151a4e79e79317531a"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a68939c789d0530151a4e79e79317531a">SVF::ExtAPI::get_alloc_arg_pos</a></div><div class="ttdeci">s32_t get_alloc_arg_pos(const SVFFunction *F)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00198">ExtAPI.cpp:198</a></div></div>
|
|
289
316
|
<div class="ttc" id="aSVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
|
|
290
|
-
<div class="ttc" id="
|
|
291
|
-
<div class="ttc" id="
|
|
317
|
+
<div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
|
|
318
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a9f6e5cd617ab57ef9da0bab6c3c9cdc8"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a9f6e5cd617ab57ef9da0bab6c3c9cdc8">SVF::ExtAPI::is_memset</a></div><div class="ttdeci">bool is_memset(const SVFFunction *F)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00181">ExtAPI.cpp:181</a></div></div>
|
|
319
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a0d865c55681a3b4a9bb965fd0200029d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a0d865c55681a3b4a9bb965fd0200029d">SVF::ExtAPI::is_alloc</a></div><div class="ttdeci">bool is_alloc(const SVFFunction *F)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00186">ExtAPI.cpp:186</a></div></div>
|
|
292
320
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a067bd6dbaf74a028d546fa56b095791b"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">SVF::SVFFunction::getAnnotations</a></div><div class="ttdeci">const std::vector< std::string > & getAnnotations() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00461">SVFValue.h:461</a></div></div>
|
|
293
321
|
<div class="ttc" id="acJSON_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>
|
|
294
|
-
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a1d7778db3b31f732f06129b49ec6dacd"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd">SVF::ExtAPI::hasExtFuncAnnotation</a></div><div class="ttdeci">bool hasExtFuncAnnotation(const SVFFunction *fun, const std::string &funcAnnotation)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#
|
|
322
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a1d7778db3b31f732f06129b49ec6dacd"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a1d7778db3b31f732f06129b49ec6dacd">SVF::ExtAPI::hasExtFuncAnnotation</a></div><div class="ttdeci">bool hasExtFuncAnnotation(const SVFFunction *fun, const std::string &funcAnnotation)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00167">ExtAPI.cpp:167</a></div></div>
|
|
323
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_af458eeda610804c8cb5bbe5afd956a65"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#af458eeda610804c8cb5bbe5afd956a65">SVF::ExtAPI::setExtBcPath</a></div><div class="ttdeci">static void setExtBcPath(const std::string &path)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00059">ExtAPI.cpp:59</a></div></div>
|
|
295
324
|
<div class="ttc" id="aExtAPI_8h_html"><div class="ttname"><a href="ExtAPI_8h.html">ExtAPI.h</a></div></div>
|
|
296
325
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00297">SVFValue.h:297</a></div></div>
|
|
297
|
-
<div class="ttc" id="
|
|
326
|
+
<div class="ttc" id="aclassSVF_1_1Options_html_a2dffc9d885fa53340a1cdbc028d7f24a"><div class="ttname"><a href="classSVF_1_1Options.html#a2dffc9d885fa53340a1cdbc028d7f24a">SVF::Options::ExtAPIPath</a></div><div class="ttdeci">static const Option< std::string > ExtAPIPath</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00251">Options.h:251</a></div></div>
|
|
327
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a58a764c27354d5f9b70995d30de65f1d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">SVF::ExtAPI::getExtAPI</a></div><div class="ttdeci">static ExtAPI * getExtAPI()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00040">ExtAPI.cpp:40</a></div></div>
|
|
298
328
|
<div class="ttc" id="aclassSVF_1_1ExtAPI_html"><div class="ttname"><a href="classSVF_1_1ExtAPI.html">SVF::ExtAPI</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00046">ExtAPI.h:46</a></div></div>
|
|
299
|
-
<div class="ttc" id="
|
|
300
|
-
<div class="ttc" id="
|
|
329
|
+
<div class="ttc" id="aExtAPI_8h_html_a8983f9a86a5284dc50950222a06f1a11"><div class="ttname"><a href="ExtAPI_8h.html#a8983f9a86a5284dc50950222a06f1a11">DEFUALT_EXTAPI_BC_PATH</a></div><div class="ttdeci">#define DEFUALT_EXTAPI_BC_PATH</div><div class="ttdoc">For a more detailed explanation of how External APIs are handled in SVF, please refer to the SVF Wiki...</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00041">ExtAPI.h:41</a></div></div>
|
|
330
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a158e7da51d45b746e067dc40e912c477"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a158e7da51d45b746e067dc40e912c477">SVF::ExtAPI::is_arg_alloc</a></div><div class="ttdeci">bool is_arg_alloc(const SVFFunction *F)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00192">ExtAPI.cpp:192</a></div></div>
|
|
331
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a641c82ed1f1a86f0f8a6015ef1fdbfef"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a641c82ed1f1a86f0f8a6015ef1fdbfef">SVF::ExtAPI::getExtFuncAnnotation</a></div><div class="ttdeci">std::string getExtFuncAnnotation(const SVFFunction *fun, const std::string &funcAnnotation)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00158">ExtAPI.cpp:158</a></div></div>
|
|
301
332
|
<div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
|
|
302
333
|
<div class="ttc" id="acJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
303
334
|
<div class="ttc" id="aSVFFileSystem_8cpp_html_ab25baccb41e3b67ef0bfdaa1336c9649"><div class="ttname"><a href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a></div><div class="ttdeci">#define F(f)</div></div>
|
|
304
|
-
<div class="ttc" id="
|
|
305
|
-
<div class="ttc" id="
|
|
306
|
-
<div class="ttc" id="
|
|
335
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a3ce3e67c96a65484d8077d9e3a9efa7d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a3ce3e67c96a65484d8077d9e3a9efa7d">SVF::ExtAPI::extBcPath</a></div><div class="ttdeci">static std::string extBcPath</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00053">ExtAPI.h:53</a></div></div>
|
|
336
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_ac6d6bdc51a6b75d6d5741cb751559fe4"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#ac6d6bdc51a6b75d6d5741cb751559fe4">SVF::ExtAPI::is_realloc</a></div><div class="ttdeci">bool is_realloc(const SVFFunction *F)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00214">ExtAPI.cpp:214</a></div></div>
|
|
337
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a26bc352dbfd1b2fe34106a73f1f6d50c"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">SVF::ExtAPI::getExtBcPath</a></div><div class="ttdeci">std::string getExtBcPath()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00117">ExtAPI.cpp:117</a></div></div>
|
|
338
|
+
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_aadc8f2e0ff777e3f611a7d741def0742"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aadc8f2e0ff777e3f611a7d741def0742">SVF::ExtAPI::is_memcpy</a></div><div class="ttdeci">bool is_memcpy(const SVFFunction *F)</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00176">ExtAPI.cpp:176</a></div></div>
|
|
307
339
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream & errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
|
|
308
340
|
<!-- start footer part -->
|
|
309
341
|
<hr class="footer"/><address class="footer"><small>
|