Files
dl/document/html/dl__script__variable_8h_source.html
2026-09-16 14:07:40 +08:00

216 lines
36 KiB
HTML
Vendored
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.5"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>dl: dl/script/dl_script_variable.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">dl
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>首页</span></a></li>
<li><a href="pages.html"><span>相关页面</span></a></li>
<li><a href="namespaces.html"><span>命名空间</span></a></li>
<li><a href="annotated.html"><span></span></a></li>
<li class="current"><a href="files.html"><span>文件</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>文件列表</span></a></li>
<li><a href="globals.html"><span>文件成员</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_17297ffb27ce571941f5fb5008f01a1f.html">dl</a></li><li class="navelem"><a class="el" href="dir_ae580b0790a39e094811340565521cb8.html">script</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">dl_script_variable.h</div></div>
</div><!--header-->
<div class="contents">
<a href="dl__script__variable_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;variant&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &quot;<a class="code" href="dl__log_8h.html">io/dl_log.h</a>&quot;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacedl_1_1_script.html">dl::Script</a></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span>{</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">class </span>Variable;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="namespacedl_1_1_script.html#a79eade19ffef76c06dd0a81df3cc6846"> 21</a></span><span class="keyword">using </span><a class="code hl_typedef" href="namespacedl_1_1_script.html#a79eade19ffef76c06dd0a81df3cc6846">Function</a> = std::function&lt;int(std::vector&lt;Variable&gt;)&gt;;</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html"> 22</a></span><span class="keyword">class </span><a class="code hl_class" href="classdl_1_1_script_1_1_variable.html">Variable</a></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span>{</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271"> 25</a></span> <span class="keyword">enum class</span> <a class="code hl_enumeration" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271">Type</a></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> {</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271abc0b1e8b63f3f00318eee5aeabc14255">NIL</a>,</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a34f55eca38e0605a84f169ff61a2a396">NUMBER</a>,</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a63b588d5559f64f89a416e656880b949">STRING</a>,</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a6a72a6a776662a244f82d31e9274a07b">FUNCTION</a>,</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a34bbae0aee41ddd6a73697584a20afc6">TABLE</a>,</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a5c823efbd9fb10df52009409a21fcc7f">VAR_LOCAL</a></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> };</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#a57be3c612b232097c0aae754693a7f90"> 34</a></span> std::string_view <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#a57be3c612b232097c0aae754693a7f90">to_string</a>(<a class="code hl_enumeration" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271">Type</a> type)<span class="keyword"> const</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keywordflow">switch</span> (type)</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271abc0b1e8b63f3f00318eee5aeabc14255">Type::NIL</a>:</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;nil&quot;</span>;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a34f55eca38e0605a84f169ff61a2a396">Type::NUMBER</a>:</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;number&quot;</span>;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a63b588d5559f64f89a416e656880b949">Type::STRING</a>:</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;string&quot;</span>;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a6a72a6a776662a244f82d31e9274a07b">Type::FUNCTION</a>:</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;function&quot;</span>;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a34bbae0aee41ddd6a73697584a20afc6">Type::TABLE</a>:</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;table&quot;</span>;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> }</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> assert(0);</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;error&quot;</span>;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> }</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#aa1eb1084689201ec292dc6728b17bee5"> 53</a></span> <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#aa1eb1084689201ec292dc6728b17bee5">Variable</a>() :</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> _type{ <a class="code hl_enumeration" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271">Type</a>::<a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271abc0b1e8b63f3f00318eee5aeabc14255">NIL</a> },</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> _val{ 0 }</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> {}</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#a91c4343db47e1834c645b29a29dba5a2"> 57</a></span> <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#a91c4343db47e1834c645b29a29dba5a2">~Variable</a>() {}</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#a740d4024068e315ac9d29ae0597c42ae"> 58</a></span> <a class="code hl_class" href="classdl_1_1_script_1_1_variable.html">Variable</a>&amp; <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#a740d4024068e315ac9d29ae0597c42ae">operator=</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_script_1_1_variable.html">Variable</a>&amp; b)</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> {</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> _copy(b);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> }</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#a8a3c3d8bc36eb769d5601e9a07787a7d"> 63</a></span> <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#a8a3c3d8bc36eb769d5601e9a07787a7d">Variable</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_script_1_1_variable.html">Variable</a>&amp; b)</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> _copy(b);</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> }</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#ab8a693d32dbcffaeba900db6832912a4"> 67</a></span> <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#ab8a693d32dbcffaeba900db6832912a4">Variable</a>(<span class="keyword">const</span> std::string&amp; str) :</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> _type{ <a class="code hl_enumeration" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271">Type</a>::<a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a63b588d5559f64f89a416e656880b949">STRING</a> },</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> _val{ str }</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> {}</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#a50b6de3c839e70039c67fc56c45e8c02"> 71</a></span> <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#a50b6de3c839e70039c67fc56c45e8c02">Variable</a>(std::string_view str) :</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> _type{ <a class="code hl_enumeration" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271">Type</a>::<a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a63b588d5559f64f89a416e656880b949">STRING</a> },</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> _val{ std::string{str} }</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> {}</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#a26f0781ef3eca4d99adcfba669cf7a13"> 75</a></span> <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#a26f0781ef3eca4d99adcfba669cf7a13">Variable</a>(<a class="code hl_typedef" href="namespacedl_1_1_script.html#a79eade19ffef76c06dd0a81df3cc6846">Function</a> func) :</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> _type{ <a class="code hl_enumeration" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271">Type</a>::<a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a6a72a6a776662a244f82d31e9274a07b">FUNCTION</a> },</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> _val{ func }</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> {}</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#a5046bb2580354156ea081e4da042368c"> 79</a></span> <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#a5046bb2580354156ea081e4da042368c">Variable</a>(<span class="keywordtype">int</span> tag, std::string_view str) :</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> _type{ <a class="code hl_enumeration" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271">Type</a>::<a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a5c823efbd9fb10df52009409a21fcc7f">VAR_LOCAL</a> },</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> _val{ std::string{str} }</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> {}</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#af3b0cd4a98ee516fc7fd865c2c02dd20"> 84</a></span> <span class="keyword">operator</span> std::string_view()<span class="keyword"> const</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">if</span> (_type != <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a63b588d5559f64f89a416e656880b949">Type::STRING</a>)</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> {</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <a class="code hl_define" href="dl__log_8h.html#abc86a6b34614cb6484cdf935d9350abd">log_err</a>(<span class="stringliteral">&quot;类型不是字符串,当前为{}&quot;</span>, <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#a57be3c612b232097c0aae754693a7f90">to_string</a>(_type));</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> }</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">return</span> std::get&lt;std::string&gt;(_val);</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> }</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#a075b79523eac1578525fe10d9a074d4d"> 93</a></span> <span class="keyword">operator</span> <a class="code hl_typedef" href="namespacedl_1_1_script.html#a79eade19ffef76c06dd0a81df3cc6846">Function</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">if</span> (_type != <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a6a72a6a776662a244f82d31e9274a07b">Type::FUNCTION</a>)</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_define" href="dl__log_8h.html#abc86a6b34614cb6484cdf935d9350abd">log_err</a>(<span class="stringliteral">&quot;类型不是函数,当前为{}&quot;</span>, <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#a57be3c612b232097c0aae754693a7f90">to_string</a>(_type));</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> }</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">return</span> std::get&lt;Function&gt;(_val);</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> }</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#a12ce31fd29bcb6a70975249e4bf1d0e0"> 103</a></span> <a class="code hl_enumeration" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271">Type</a> <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#a12ce31fd29bcb6a70975249e4bf1d0e0">GetType</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">return</span> _type;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> }</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="classdl_1_1_script_1_1_variable.html#a333da67d5811a4dde6e0a0bf78b50789"> 108</a></span> std::string <a class="code hl_function" href="classdl_1_1_script_1_1_variable.html#a333da67d5811a4dde6e0a0bf78b50789">GetString</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">switch</span> (_type)</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271abc0b1e8b63f3f00318eee5aeabc14255">dl::Script::Variable::Type::NIL</a>:</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;nil&quot;</span>;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a34f55eca38e0605a84f169ff61a2a396">dl::Script::Variable::Type::NUMBER</a>:</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;12345&quot;</span>;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a63b588d5559f64f89a416e656880b949">dl::Script::Variable::Type::STRING</a>:</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a5c823efbd9fb10df52009409a21fcc7f">dl::Script::Variable::Type::VAR_LOCAL</a>:</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">return</span> std::get&lt;std::string&gt;(_val);</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a6a72a6a776662a244f82d31e9274a07b">dl::Script::Variable::Type::FUNCTION</a>:</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="comment">//Function func = std::get&lt;Function&gt;(_val);</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;function_xx&quot;</span>;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a34bbae0aee41ddd6a73697584a20afc6">dl::Script::Variable::Type::TABLE</a>:</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;table_xx&quot;</span>;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> }</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> assert(0);</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">return</span> <span class="stringliteral">&quot;error&quot;</span>;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> }</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> std::variant&lt;int, std::string, Function&gt; _val;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <a class="code hl_enumeration" href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271">Type</a> _type;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordtype">void</span> _copy(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_script_1_1_variable.html">Variable</a>&amp; b)</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> {</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> _type = b._type;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> _val = b._val;</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> }</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span>};</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span>}</div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html">dl::Script::Variable</a></div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00022">dl_script_variable.h:23</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_a12ce31fd29bcb6a70975249e4bf1d0e0"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#a12ce31fd29bcb6a70975249e4bf1d0e0">dl::Script::Variable::GetType</a></div><div class="ttdeci">Type GetType() const</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00103">dl_script_variable.h:103</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_a26f0781ef3eca4d99adcfba669cf7a13"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#a26f0781ef3eca4d99adcfba669cf7a13">dl::Script::Variable::Variable</a></div><div class="ttdeci">Variable(Function func)</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00075">dl_script_variable.h:75</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_a333da67d5811a4dde6e0a0bf78b50789"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#a333da67d5811a4dde6e0a0bf78b50789">dl::Script::Variable::GetString</a></div><div class="ttdeci">std::string GetString() const</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00108">dl_script_variable.h:108</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_a5046bb2580354156ea081e4da042368c"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#a5046bb2580354156ea081e4da042368c">dl::Script::Variable::Variable</a></div><div class="ttdeci">Variable(int tag, std::string_view str)</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00079">dl_script_variable.h:79</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_a50b6de3c839e70039c67fc56c45e8c02"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#a50b6de3c839e70039c67fc56c45e8c02">dl::Script::Variable::Variable</a></div><div class="ttdeci">Variable(std::string_view str)</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00071">dl_script_variable.h:71</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_a57be3c612b232097c0aae754693a7f90"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#a57be3c612b232097c0aae754693a7f90">dl::Script::Variable::to_string</a></div><div class="ttdeci">std::string_view to_string(Type type) const</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00034">dl_script_variable.h:34</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_a740d4024068e315ac9d29ae0597c42ae"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#a740d4024068e315ac9d29ae0597c42ae">dl::Script::Variable::operator=</a></div><div class="ttdeci">Variable &amp; operator=(const Variable &amp;b)</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00058">dl_script_variable.h:58</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_a8a3c3d8bc36eb769d5601e9a07787a7d"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#a8a3c3d8bc36eb769d5601e9a07787a7d">dl::Script::Variable::Variable</a></div><div class="ttdeci">Variable(const Variable &amp;b)</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00063">dl_script_variable.h:63</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_a91c4343db47e1834c645b29a29dba5a2"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#a91c4343db47e1834c645b29a29dba5a2">dl::Script::Variable::~Variable</a></div><div class="ttdeci">~Variable()</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00057">dl_script_variable.h:57</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_aa1eb1084689201ec292dc6728b17bee5"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#aa1eb1084689201ec292dc6728b17bee5">dl::Script::Variable::Variable</a></div><div class="ttdeci">Variable()</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00053">dl_script_variable.h:53</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_ab87f24d2546c397d9ecf3641a34a5271"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271">dl::Script::Variable::Type</a></div><div class="ttdeci">Type</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00025">dl_script_variable.h:26</a></div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_ab87f24d2546c397d9ecf3641a34a5271a34bbae0aee41ddd6a73697584a20afc6"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a34bbae0aee41ddd6a73697584a20afc6">dl::Script::Variable::Type::TABLE</a></div><div class="ttdeci">@ TABLE</div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_ab87f24d2546c397d9ecf3641a34a5271a34f55eca38e0605a84f169ff61a2a396"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a34f55eca38e0605a84f169ff61a2a396">dl::Script::Variable::Type::NUMBER</a></div><div class="ttdeci">@ NUMBER</div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_ab87f24d2546c397d9ecf3641a34a5271a5c823efbd9fb10df52009409a21fcc7f"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a5c823efbd9fb10df52009409a21fcc7f">dl::Script::Variable::Type::VAR_LOCAL</a></div><div class="ttdeci">@ VAR_LOCAL</div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_ab87f24d2546c397d9ecf3641a34a5271a63b588d5559f64f89a416e656880b949"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a63b588d5559f64f89a416e656880b949">dl::Script::Variable::Type::STRING</a></div><div class="ttdeci">@ STRING</div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_ab87f24d2546c397d9ecf3641a34a5271a6a72a6a776662a244f82d31e9274a07b"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271a6a72a6a776662a244f82d31e9274a07b">dl::Script::Variable::Type::FUNCTION</a></div><div class="ttdeci">@ FUNCTION</div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_ab87f24d2546c397d9ecf3641a34a5271abc0b1e8b63f3f00318eee5aeabc14255"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#ab87f24d2546c397d9ecf3641a34a5271abc0b1e8b63f3f00318eee5aeabc14255">dl::Script::Variable::Type::NIL</a></div><div class="ttdeci">@ NIL</div></div>
<div class="ttc" id="aclassdl_1_1_script_1_1_variable_html_ab8a693d32dbcffaeba900db6832912a4"><div class="ttname"><a href="classdl_1_1_script_1_1_variable.html#ab8a693d32dbcffaeba900db6832912a4">dl::Script::Variable::Variable</a></div><div class="ttdeci">Variable(const std::string &amp;str)</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00067">dl_script_variable.h:67</a></div></div>
<div class="ttc" id="adl__log_8h_html"><div class="ttname"><a href="dl__log_8h.html">dl_log.h</a></div><div class="ttdoc">日志系统</div></div>
<div class="ttc" id="adl__log_8h_html_abc86a6b34614cb6484cdf935d9350abd"><div class="ttname"><a href="dl__log_8h.html#abc86a6b34614cb6484cdf935d9350abd">log_err</a></div><div class="ttdeci">#define log_err(...)</div><div class="ttdef"><b>Definition:</b> <a href="dl__log_8h_source.html#l00243">dl_log.h:243</a></div></div>
<div class="ttc" id="anamespacedl_1_1_script_html"><div class="ttname"><a href="namespacedl_1_1_script.html">dl::Script</a></div><div class="ttdef"><b>Definition:</b> <a href="dl__script_8h_source.html#l00026">dl_script.h:27</a></div></div>
<div class="ttc" id="anamespacedl_1_1_script_html_a79eade19ffef76c06dd0a81df3cc6846"><div class="ttname"><a href="namespacedl_1_1_script.html#a79eade19ffef76c06dd0a81df3cc6846">dl::Script::Function</a></div><div class="ttdeci">std::function&lt; int(std::vector&lt; Variable &gt;)&gt; Function</div><div class="ttdef"><b>Definition:</b> <a href="dl__script__variable_8h_source.html#l00021">dl_script_variable.h:21</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5
</small></address>
</body>
</html>