svf-tools 1.0.539 → 1.0.540
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/AndersenStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +2 -1
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +5 -4
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +15 -15
- package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CFLGrammar_8txt.html +39 -39
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +20 -8
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +16 -15
- package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +2 -1
- package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAStat_8h.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGStat_8h.html +1 -1
- package/SVF-doxygen/html/html/ICFGStat_8h_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 -1
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +2 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8h.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +5 -3
- package/SVF-doxygen/html/html/Options_8h.html +1 -1
- package/SVF-doxygen/html/html/Options_8h_source.html +5 -3
- package/SVF-doxygen/html/html/PEGGrammar_8txt.html +314 -0
- package/SVF-doxygen/html/html/PTAStat_8cpp.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PTAStat_8h.html +2 -2
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8h.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/WPAStat_8h.html +1 -1
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +12 -11
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +73 -4
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +50 -49
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +10 -7
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -2
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +8 -6
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +54 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
- package/SVF-doxygen/html/html/dir_eef3a4ca6ca2cab0eb5fbea30ec32c1a.html +0 -2
- package/SVF-doxygen/html/html/files.html +15 -15
- package/SVF-doxygen/html/html/functions_b.html +3 -0
- package/SVF-doxygen/html/html/functions_c.html +22 -20
- package/SVF-doxygen/html/html/functions_f.html +10 -12
- package/SVF-doxygen/html/html/functions_func_b.html +3 -0
- package/SVF-doxygen/html/html/functions_func_p.html +2 -2
- package/SVF-doxygen/html/html/functions_i.html +6 -6
- package/SVF-doxygen/html/html/functions_l.html +6 -6
- package/SVF-doxygen/html/html/functions_n.html +3 -0
- package/SVF-doxygen/html/html/functions_p.html +19 -18
- package/SVF-doxygen/html/html/functions_r.html +4 -2
- package/SVF-doxygen/html/html/functions_s.html +13 -11
- package/SVF-doxygen/html/html/functions_t.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_n.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
- package/SVF-doxygen/html/html/globals.html +1 -0
- package/SVF-doxygen/html/html/globals_a.html +3 -1
- package/SVF-doxygen/html/html/globals_c.html +6 -5
- package/SVF-doxygen/html/html/globals_e.html +1 -0
- package/SVF-doxygen/html/html/globals_f.html +7 -5
- package/SVF-doxygen/html/html/globals_g.html +7 -3
- package/SVF-doxygen/html/html/globals_m.html +6 -3
- package/SVF-doxygen/html/html/globals_v.html +2 -1
- package/SVF-doxygen/html/html/globals_vars.html +22 -7
- package/SVF-doxygen/html/html/namespaceSVF.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
- package/SVF-doxygen/html/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +2 -2
- package/SVF-doxygen/html/html/search/all_10.js +11 -9
- package/SVF-doxygen/html/html/search/all_11.js +2 -2
- package/SVF-doxygen/html/html/search/all_12.js +8 -8
- package/SVF-doxygen/html/html/search/all_13.js +6 -6
- package/SVF-doxygen/html/html/search/all_14.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_2.js +1 -0
- package/SVF-doxygen/html/html/search/all_3.js +4 -4
- package/SVF-doxygen/html/html/search/all_5.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +6 -6
- package/SVF-doxygen/html/html/search/all_7.js +4 -4
- package/SVF-doxygen/html/html/search/all_9.js +2 -2
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +5 -5
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +5 -4
- package/SVF-doxygen/html/html/search/files_c.js +1 -0
- package/SVF-doxygen/html/html/search/functions_1.js +1 -0
- package/SVF-doxygen/html/html/search/functions_f.js +2 -2
- package/SVF-doxygen/html/html/search/variables_0.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +2 -2
- package/SVF-doxygen/html/html/search/variables_10.js +2 -1
- package/SVF-doxygen/html/html/search/variables_13.js +3 -3
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_3.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +2 -2
- package/SVF-doxygen/html/html/search/variables_7.js +4 -4
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +4 -3
- package/include/CFL/CFGNormalizer.h +3 -3
- package/include/CFL/CFLAlias.h +5 -1
- package/include/CFL/CFLGraphBuilder.h +11 -1
- package/include/CFL/PEGGrammar.txt +28 -0
- package/include/DDA/DDAStat.h +1 -1
- package/include/Graphs/ICFGStat.h +1 -1
- package/include/Graphs/SVFGStat.h +1 -1
- package/include/MTA/MTAStat.h +1 -1
- package/include/SVF-FE/LLVMUtil.h +2 -2
- package/include/Util/ExtAPI.h +2 -2
- package/include/Util/Options.h +3 -1
- package/include/{MemoryModel → Util}/PTAStat.h +0 -0
- package/include/WPA/Andersen.h +3 -3
- package/include/WPA/WPAStat.h +1 -1
- package/lib/CFL/CFLAlias.cpp +12 -7
- package/lib/CFL/CFLGraphBuilder.cpp +135 -0
- package/lib/CFL/GrammarBuilder.cpp +12 -8
- package/lib/MTA/LockAnalysis.cpp +1 -1
- package/lib/MTA/MHP.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/SVF-FE/CHGBuilder.cpp +1 -1
- package/lib/Util/NodeIDAllocator.cpp +1 -1
- package/lib/Util/Options.cpp +16 -4
- package/lib/Util/PTAStat.cpp +4 -3
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/package.json +1 -1
|
@@ -132,7 +132,7 @@ Protected Attributes</h2></td></tr>
|
|
|
132
132
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
133
133
|
<div class="textblock"><p>Build <a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> from memory graph or dot form </p>
|
|
134
134
|
|
|
135
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
135
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00043">43</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
136
136
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
137
137
|
<a id="a20299631d2b85507af6d81861736db5e"></a>
|
|
138
138
|
<h2 class="memtitle"><span class="permalink"><a href="#a20299631d2b85507af6d81861736db5e">◆ </a></span>Kind</h2>
|
|
@@ -154,7 +154,7 @@ Protected Attributes</h2></td></tr>
|
|
|
154
154
|
</table>
|
|
155
155
|
</div><div class="memdoc">
|
|
156
156
|
|
|
157
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
157
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00046">46</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
158
158
|
|
|
159
159
|
</div>
|
|
160
160
|
</div>
|
|
@@ -178,7 +178,7 @@ Protected Attributes</h2></td></tr>
|
|
|
178
178
|
</table>
|
|
179
179
|
</div><div class="memdoc">
|
|
180
180
|
|
|
181
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
181
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00047">47</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
182
182
|
|
|
183
183
|
</div>
|
|
184
184
|
</div>
|
|
@@ -212,7 +212,7 @@ Protected Attributes</h2></td></tr>
|
|
|
212
212
|
<p>add attribute to kind2Attribute Map </p>
|
|
213
213
|
|
|
214
214
|
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8cpp_source.html#l00037">37</a> of file <a class="el" href="CFLGraphBuilder_8cpp_source.html">CFLGraphBuilder.cpp</a>.</p>
|
|
215
|
-
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>.find(kind) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>.end())</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Set<CFLGrammar::Attribute> attrs {attribute};</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>.insert(make_pair(kind, attrs));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>[kind].find(attribute) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>[kind].end())</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>[kind].insert(attribute);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a5159cea5bc8d69715782ac5f56965a90"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">SVF::CFLGraphBuilder::kind2AttrsMap</a></div><div class="ttdeci">Map< CFLGrammar::Kind, Set< CFLGrammar::Attribute > > kind2AttrsMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#
|
|
215
|
+
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>.find(kind) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>.end())</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Set<CFLGrammar::Attribute> attrs {attribute};</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>.insert(make_pair(kind, attrs));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>[kind].find(attribute) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>[kind].end())</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>[kind].insert(attribute);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a5159cea5bc8d69715782ac5f56965a90"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">SVF::CFLGraphBuilder::kind2AttrsMap</a></div><div class="ttdeci">Map< CFLGrammar::Kind, Set< CFLGrammar::Attribute > > kind2AttrsMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00050">CFLGraphBuilder.h:50</a></div></div>
|
|
216
216
|
</div><!-- fragment -->
|
|
217
217
|
</div>
|
|
218
218
|
</div>
|
|
@@ -254,8 +254,8 @@ template<class N , class E > </div>
|
|
|
254
254
|
|
|
255
255
|
<p>Build graph by copying nodes and edges from any graph inherited from <a class="el" href="classSVF_1_1GenericGraph.html">GenericGraph</a>. </p>
|
|
256
256
|
|
|
257
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
258
|
-
<div class="fragment"><div class="line"><a name="
|
|
257
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00060">60</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
258
|
+
<div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  CFLNode* node = <span class="keyword">new</span> CFLNode((*it).first);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  cflGraph->addCFLNode((*it).first, node);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  N* node = (*it).second;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">for</span>(E* edge : node->getOutEdges())</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edge->getEdgeKind());</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>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div></div><!-- fragment -->
|
|
259
259
|
</div>
|
|
260
260
|
</div>
|
|
261
261
|
<a id="a5944c6a36e150a50a54aedd622c43ff9"></a>
|
|
@@ -334,12 +334,12 @@ template<class N , class E > </div>
|
|
|
334
334
|
|
|
335
335
|
<p>Build Bidirectional graph by copying nodes and edges from any graph inherited from <a class="el" href="classSVF_1_1GenericGraph.html">GenericGraph</a>. </p>
|
|
336
336
|
|
|
337
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
338
|
-
<div class="fragment"><div class="line"><a name="
|
|
339
|
-
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a7117dbeceeef7a9fcaeee0a84a171590"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">SVF::CFLGraphBuilder::label2KindMap</a></div><div class="ttdeci">Map< std::string, Kind > label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#
|
|
340
|
-
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a461ff21d73f60cf96a3e36672d4c6a6c"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">SVF::CFLGraphBuilder::kind2LabelMap</a></div><div class="ttdeci">Map< Kind, std::string > kind2LabelMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#
|
|
337
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00079">79</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
338
|
+
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  CFLGraph *cflGraph = <span class="keyword">new</span> CFLGraph(startKind);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">externMap</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getTerminals())</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</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>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</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>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</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>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getNonterminals())</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>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</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>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</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">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</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>  CFLNode* node = <span class="keyword">new</span> CFLNode((*it).first);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  cflGraph->addCFLNode((*it).first, node);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  N* node = (*it).second;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">for</span>(E* edge : node->getOutEdges())</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> edgeLabel = edge->getEdgeKind();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge->getEdgeKind()];</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  key.append(<span class="stringliteral">"bar"</span>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</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="keywordflow">return</span> cflGraph;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="ttc" id="classSVF_1_1GrammarBase_html_a7aef5c42fbd8a62dd4a541cc0e8e8187"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">SVF::GrammarBase::Kind</a></div><div class="ttdeci">u32_t Kind</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00039">CFLGrammar.h:39</a></div></div>
|
|
339
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a7117dbeceeef7a9fcaeee0a84a171590"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">SVF::CFLGraphBuilder::label2KindMap</a></div><div class="ttdeci">Map< std::string, Kind > label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00048">CFLGraphBuilder.h:48</a></div></div>
|
|
340
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a461ff21d73f60cf96a3e36672d4c6a6c"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">SVF::CFLGraphBuilder::kind2LabelMap</a></div><div class="ttdeci">Map< Kind, std::string > kind2LabelMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00049">CFLGraphBuilder.h:49</a></div></div>
|
|
341
341
|
<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>
|
|
342
|
-
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a91f1f0e8abc8d781eaf8b1a4f025c18e"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">SVF::CFLGraphBuilder::externMap</a></div><div class="ttdeci">bool externMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#
|
|
342
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a91f1f0e8abc8d781eaf8b1a4f025c18e"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">SVF::CFLGraphBuilder::externMap</a></div><div class="ttdeci">bool externMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00051">CFLGraphBuilder.h:51</a></div></div>
|
|
343
343
|
</div><!-- fragment -->
|
|
344
344
|
</div>
|
|
345
345
|
</div>
|
|
@@ -374,12 +374,12 @@ template<class N , class E > </div>
|
|
|
374
374
|
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8cpp_source.html#l00059">59</a> of file <a class="el" href="CFLGraphBuilder_8cpp_source.html">CFLGraphBuilder.cpp</a>.</p>
|
|
375
375
|
<div class="fragment"><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>  CFLGraph *cflGraph = <span class="keyword">new</span> CFLGraph(grammar->getStartKind());</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">externMap</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getTerminals())</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</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> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getNonterminals())</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</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>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</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_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</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>  std::cout << <span class="stringliteral">"Building CFL Graph from dot file: "</span> << fileName << <span class="stringliteral">"..\n"</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lineString;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  std::ifstream inputFile(fileName);</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>  std::regex reg(<span class="stringliteral">"Node(\\w+)\\s*->\\s*Node(\\w+)\\s*\\[.*label=(.*)\\]"</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  std::cout << std::boolalpha;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lineNum = 0 ;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#aad408d6ecb776fd763c9b9221a1bed18">current</a> = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.size();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">while</span> (getline(inputFile, lineString))</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>  lineNum += 1;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  std::smatch matches;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (std::regex_search(lineString, matches, reg))</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  CFLNode *src, *dst;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> (cflGraph->hasGNode(std::stoul(matches.str(1), <span class="keyword">nullptr</span>, 16))==<span class="keyword">false</span>)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  src = <span class="keyword">new</span> CFLNode(std::stoul(matches.str(1), <span class="keyword">nullptr</span>, 16));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  cflGraph->addCFLNode(src->getId(), src);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">else</span></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>  src = cflGraph->getGNode(std::stoul(matches.str(1), <span class="keyword">nullptr</span>, 16));</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>  <span class="keywordflow">if</span> (cflGraph->hasGNode(std::stoul(matches.str(2), <span class="keyword">nullptr</span>, 16))==<span class="keyword">false</span>)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  dst = <span class="keyword">new</span> CFLNode(std::stoul(matches.str(2), <span class="keyword">nullptr</span>, 16));</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  cflGraph->addCFLNode(dst->getId(), dst);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  dst = cflGraph->getGNode(std::stoul(matches.str(2), <span class="keyword">nullptr</span>, 16));</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="keywordflow">if</span> (externMap == <span class="keyword">false</span>)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(matches.str(3)) != <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  cflGraph->addCFLEdge(src, dst, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[matches.str(3)]);</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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert({matches.str(3), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#aad408d6ecb776fd763c9b9221a1bed18">current</a>++});</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  cflGraph->addCFLEdge(src, dst, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[matches.str(3)]);</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>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(matches.str(3)) != <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  cflGraph->addCFLEdge(src, dst, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[matches.str(3)]);</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">else</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a79dff5235e82e1313fa4b053f866f357">Options::FlexSymMap</a> == <span class="keyword">true</span>)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert({matches.str(3), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#aad408d6ecb776fd763c9b9221a1bed18">current</a>++});</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  cflGraph->addCFLEdge(src, dst, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[matches.str(3)]);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg = <span class="stringliteral">"In line "</span> + std::to_string(lineNum) + <span class="stringliteral">" sym can not find in grammar, please correct the input dot or set --flexsymmap."</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">SVFUtil::errMsg</a>(msg);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  std::cout << msg;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  abort();</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</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"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  inputFile.close();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> cflGraph;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> }</div><div class="ttc" id="classSVF_1_1Options_html_a79dff5235e82e1313fa4b053f866f357"><div class="ttname"><a href="classSVF_1_1Options.html#a79dff5235e82e1313fa4b053f866f357">SVF::Options::FlexSymMap</a></div><div class="ttdeci">static const llvm::cl::opt< bool > FlexSymMap</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00255">Options.h:255</a></div></div>
|
|
376
376
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
377
|
-
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a7117dbeceeef7a9fcaeee0a84a171590"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">SVF::CFLGraphBuilder::label2KindMap</a></div><div class="ttdeci">Map< std::string, Kind > label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#
|
|
378
|
-
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_aad408d6ecb776fd763c9b9221a1bed18"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#aad408d6ecb776fd763c9b9221a1bed18">SVF::CFLGraphBuilder::current</a></div><div class="ttdeci">Kind current</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#
|
|
379
|
-
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a461ff21d73f60cf96a3e36672d4c6a6c"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">SVF::CFLGraphBuilder::kind2LabelMap</a></div><div class="ttdeci">Map< Kind, std::string > kind2LabelMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#
|
|
377
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a7117dbeceeef7a9fcaeee0a84a171590"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">SVF::CFLGraphBuilder::label2KindMap</a></div><div class="ttdeci">Map< std::string, Kind > label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00048">CFLGraphBuilder.h:48</a></div></div>
|
|
378
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_aad408d6ecb776fd763c9b9221a1bed18"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#aad408d6ecb776fd763c9b9221a1bed18">SVF::CFLGraphBuilder::current</a></div><div class="ttdeci">Kind current</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00052">CFLGraphBuilder.h:52</a></div></div>
|
|
379
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a461ff21d73f60cf96a3e36672d4c6a6c"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">SVF::CFLGraphBuilder::kind2LabelMap</a></div><div class="ttdeci">Map< Kind, std::string > kind2LabelMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00049">CFLGraphBuilder.h:49</a></div></div>
|
|
380
380
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5d4bb92f5df30417f414397f8e58cf01"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">SVF::SVFUtil::errMsg</a></div><div class="ttdeci">std::string errMsg(std::string msg)</div><div class="ttdoc">Print error message by converting a string into red string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00076">SVFUtil.cpp:76</a></div></div>
|
|
381
381
|
<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>
|
|
382
|
-
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a91f1f0e8abc8d781eaf8b1a4f025c18e"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">SVF::CFLGraphBuilder::externMap</a></div><div class="ttdeci">bool externMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#
|
|
382
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a91f1f0e8abc8d781eaf8b1a4f025c18e"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">SVF::CFLGraphBuilder::externMap</a></div><div class="ttdeci">bool externMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00051">CFLGraphBuilder.h:51</a></div></div>
|
|
383
383
|
</div><!-- fragment -->
|
|
384
384
|
</div>
|
|
385
385
|
</div>
|
|
@@ -406,8 +406,8 @@ template<class N , class E > </div>
|
|
|
406
406
|
</table>
|
|
407
407
|
</div><div class="memdoc">
|
|
408
408
|
|
|
409
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
410
|
-
<div class="fragment"><div class="line"><a name="
|
|
409
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00141">141</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
410
|
+
<div class="fragment"><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">return</span> this-><a class="code" href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">kind2AttrsMap</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a5159cea5bc8d69715782ac5f56965a90"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a5159cea5bc8d69715782ac5f56965a90">SVF::CFLGraphBuilder::kind2AttrsMap</a></div><div class="ttdeci">Map< CFLGrammar::Kind, Set< CFLGrammar::Attribute > > kind2AttrsMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00050">CFLGraphBuilder.h:50</a></div></div>
|
|
411
411
|
</div><!-- fragment -->
|
|
412
412
|
</div>
|
|
413
413
|
</div>
|
|
@@ -434,8 +434,8 @@ template<class N , class E > </div>
|
|
|
434
434
|
</table>
|
|
435
435
|
</div><div class="memdoc">
|
|
436
436
|
|
|
437
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
438
|
-
<div class="fragment"><div class="line"><a name="
|
|
437
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00136">136</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
438
|
+
<div class="fragment"><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> this-><a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a461ff21d73f60cf96a3e36672d4c6a6c"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">SVF::CFLGraphBuilder::kind2LabelMap</a></div><div class="ttdeci">Map< Kind, std::string > kind2LabelMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00049">CFLGraphBuilder.h:49</a></div></div>
|
|
439
439
|
</div><!-- fragment -->
|
|
440
440
|
</div>
|
|
441
441
|
</div>
|
|
@@ -462,8 +462,8 @@ template<class N , class E > </div>
|
|
|
462
462
|
</table>
|
|
463
463
|
</div><div class="memdoc">
|
|
464
464
|
|
|
465
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
466
|
-
<div class="fragment"><div class="line"><a name="
|
|
465
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00131">131</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
466
|
+
<div class="fragment"><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">return</span> this-><a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a7117dbeceeef7a9fcaeee0a84a171590"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">SVF::CFLGraphBuilder::label2KindMap</a></div><div class="ttdeci">Map< std::string, Kind > label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00048">CFLGraphBuilder.h:48</a></div></div>
|
|
467
467
|
</div><!-- fragment -->
|
|
468
468
|
</div>
|
|
469
469
|
</div>
|
|
@@ -488,7 +488,7 @@ template<class N , class E > </div>
|
|
|
488
488
|
</table>
|
|
489
489
|
</div><div class="memdoc">
|
|
490
490
|
|
|
491
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
491
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00052">52</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
492
492
|
|
|
493
493
|
</div>
|
|
494
494
|
</div>
|
|
@@ -512,7 +512,7 @@ template<class N , class E > </div>
|
|
|
512
512
|
</table>
|
|
513
513
|
</div><div class="memdoc">
|
|
514
514
|
|
|
515
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
515
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00051">51</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
516
516
|
|
|
517
517
|
</div>
|
|
518
518
|
</div>
|
|
@@ -536,7 +536,7 @@ template<class N , class E > </div>
|
|
|
536
536
|
</table>
|
|
537
537
|
</div><div class="memdoc">
|
|
538
538
|
|
|
539
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
539
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00050">50</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
540
540
|
|
|
541
541
|
</div>
|
|
542
542
|
</div>
|
|
@@ -560,7 +560,7 @@ template<class N , class E > </div>
|
|
|
560
560
|
</table>
|
|
561
561
|
</div><div class="memdoc">
|
|
562
562
|
|
|
563
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
563
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00049">49</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
564
564
|
|
|
565
565
|
</div>
|
|
566
566
|
</div>
|
|
@@ -584,7 +584,7 @@ template<class N , class E > </div>
|
|
|
584
584
|
</table>
|
|
585
585
|
</div><div class="memdoc">
|
|
586
586
|
|
|
587
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
587
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00048">48</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
588
588
|
|
|
589
589
|
</div>
|
|
590
590
|
</div>
|