Hazelnupp/docs/Hazelnupp_8cpp_source.html
2021-06-05 12:40:24 +02:00

737 lines
116 KiB
HTML
Raw 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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Leonetienne/Hazelnupp: Hazelnupp/Hazelnupp.cpp Source File</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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.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 style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="nupp_small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Leonetienne/Hazelnupp
</div>
<div id="projectbrief">Simple, easy to use, command line parameter interface</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_0202e1e26df2e040f4dc3d434eecf04c.html">Hazelnupp</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Hazelnupp.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="Hazelnupp_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>&quot;</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="VoidValue_8h.html">VoidValue.h</a>&quot;</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="IntValue_8h.html">IntValue.h</a>&quot;</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="FloatValue_8h.html">FloatValue.h</a>&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="StringValue_8h.html">StringValue.h</a>&quot;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ListValue_8h.html">ListValue.h</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="HazelnuppException_8h.html">HazelnuppException.h</a>&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Placeholders_8h.html">Placeholders.h</a>&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="StringTools_8h.html">StringTools.h</a>&quot;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; </div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceHazelnp.html">Hazelnp</a>;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a20ac0ebcfd4df7f320a7bbcaeed6e54d"> 15</a></span>&#160;<a class="code" href="classHazelnp_1_1Hazelnupp.html#a20ac0ebcfd4df7f320a7bbcaeed6e54d">Hazelnupp::Hazelnupp</a>()</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;}</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a6d14c60f03b571f5f794c3549e75e435"> 20</a></span>&#160;<a class="code" href="classHazelnp_1_1Hazelnupp.html#a20ac0ebcfd4df7f320a7bbcaeed6e54d">Hazelnupp::Hazelnupp</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> argc, <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span>* argv)</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <a class="code" href="classHazelnp_1_1Hazelnupp.html#a1ccb88faca1a8deb77161888479c300b">Parse</a>(argc, argv);</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a25f8810d24d647b6a57e2dd00ead42be"> 26</a></span>&#160;<a class="code" href="classHazelnp_1_1Hazelnupp.html#a25f8810d24d647b6a57e2dd00ead42be">Hazelnupp::~Hazelnupp</a>()</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; it : parameters)</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">delete</span> it.second;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; parameters.clear();</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a1ccb88faca1a8deb77161888479c300b"> 36</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a1ccb88faca1a8deb77161888479c300b">Hazelnupp::Parse</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> argc, <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span>* argv)</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// Populate raw arguments</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; PopulateRawArgs(argc, argv);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Expand abbreviations</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; ExpandAbbreviations();</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; executableName = std::string(rawArgs[0]);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; </div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; std::size_t i = 1;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">while</span> (i &lt; rawArgs.size())</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> ((rawArgs[i].length() &gt; 2) &amp;&amp; (rawArgs[i].substr(0, 2) == <span class="stringliteral">&quot;--&quot;</span>))</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classHazelnp_1_1Parameter.html">Parameter</a>* param = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; i = ParseNextParameter(i, param);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; parameters.insert(std::pair&lt;std::string, Parameter*&gt;(param-&gt;<a class="code" href="classHazelnp_1_1Parameter.html#a7acd68ce06eec06ab286b1a062f9c8d6">Key</a>(), param));</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; i++;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Apply constraints such as default values, and required parameters.</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// Types have already been enforced.</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// Dont apply constraints when we are just printind the param docs</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span> ((!catchHelp) || (!<a class="code" href="classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040">HasParam</a>(<span class="stringliteral">&quot;--help&quot;</span>)))</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; ApplyConstraints();</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html">HazelnuppConstraintTypeMissmatch</a>&amp; hctm)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span> (crashOnFail)</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; std::cout &lt;&lt; <a class="code" href="classHazelnp_1_1Hazelnupp.html#a7b1bf5e700d8a0d8e90c5750e54749de">GenerateDocumentation</a>() &lt;&lt; std::endl;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;Fatal error: Command-line parameter value-type mismatch at \&quot;&quot;</span> &lt;&lt; hctm.<a class="code" href="classHazelnp_1_1HazelnuppException.html#aa86c415a0f2b4ea5f11892145d1ea83e">What</a>() &lt;&lt; <span class="stringliteral">&quot;\&quot;!&quot;</span>;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; quick_exit(-1009);</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">throw</span> hctm; <span class="comment">// yeet</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="classHazelnp_1_1HazelnuppConstraintMissingValue.html">HazelnuppConstraintMissingValue</a>&amp; hctm)</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span> (crashOnFail)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; std::cout &lt;&lt; <a class="code" href="classHazelnp_1_1Hazelnupp.html#a7b1bf5e700d8a0d8e90c5750e54749de">GenerateDocumentation</a>() &lt;&lt; std::endl;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; std::cerr &lt;&lt; <span class="stringliteral">&quot;Fatal error: Missing required command-line parameter \&quot;&quot;</span> &lt;&lt; hctm.<a class="code" href="classHazelnp_1_1HazelnuppException.html#aa86c415a0f2b4ea5f11892145d1ea83e">What</a>() &lt;&lt; <span class="stringliteral">&quot;\&quot;!&quot;</span>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; quick_exit(-1010);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">throw</span> hctm; <span class="comment">// yeet</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// Catch --help parameter</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> ((catchHelp) &amp;&amp; (<a class="code" href="classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040">HasParam</a>(<span class="stringliteral">&quot;--help&quot;</span>)))</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; std::cout &lt;&lt; <a class="code" href="classHazelnp_1_1Hazelnupp.html#a7b1bf5e700d8a0d8e90c5750e54749de">GenerateDocumentation</a>() &lt;&lt; std::endl;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; quick_exit(0);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;std::size_t Hazelnupp::ParseNextParameter(<span class="keyword">const</span> std::size_t parIndex, <a class="code" href="classHazelnp_1_1Parameter.html">Parameter</a>*&amp; out_Par)</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;{</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; std::size_t i = parIndex;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">const</span> std::string key = rawArgs[parIndex];</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; std::vector&lt;std::string&gt; values;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; </div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">// Get values</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">for</span> (i++; i &lt; rawArgs.size(); i++)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">// If not another parameter</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span> ((rawArgs[i].length() &lt; 2) || (rawArgs[i].substr(0, 2) != <span class="stringliteral">&quot;--&quot;</span>))</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; values.emplace_back(rawArgs[i]);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// Fetch constraint info</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <a class="code" href="structHazelnp_1_1ParamConstraint.html">ParamConstraint</a>* pcn = GetConstraintForKey(key);</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classHazelnp_1_1Value.html">Value</a>* parsedVal = ParseValue(values, pcn);</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (parsedVal != <span class="keyword">nullptr</span>)</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; out_Par = <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1Parameter.html">Parameter</a>(key, parsedVal);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">delete</span> parsedVal;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; parsedVal = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;Unable to parse parameter!&quot;</span>);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> i;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keywordtype">void</span> Hazelnupp::PopulateRawArgs(<span class="keyword">const</span> <span class="keywordtype">int</span> argc, <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span>* argv)</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; rawArgs.clear();</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; rawArgs.reserve(argc);</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; i++)</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; rawArgs.emplace_back(std::string(argv[i]));</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; </div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;}</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="keywordtype">void</span> Hazelnupp::ExpandAbbreviations()</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// Abort if no abbreviations</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span> (parameterAbreviations.size() == 0)</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">for</span> (std::string&amp; arg : rawArgs)</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">// Is arg registered as an abbreviation?</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">auto</span> abbr = parameterAbreviations.find(arg);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (abbr != parameterAbreviations.end())</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// Yes: replace arg with the long form</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; arg = abbr-&gt;second;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; </div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; </div>
<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040"> 165</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040">Hazelnupp::HasParam</a>(<span class="keyword">const</span> std::string&amp; key)<span class="keyword"> const</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> parameters.find(key) != parameters.end();</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<a class="code" href="classHazelnp_1_1Value.html">Value</a>* Hazelnupp::ParseValue(<span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; values, <span class="keyword">const</span> <a class="code" href="structHazelnp_1_1ParamConstraint.html">ParamConstraint</a>* constraint)</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">// Constraint values</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> constrainType = (constraint != <span class="keyword">nullptr</span>) &amp;&amp; (constraint-&gt;<a class="code" href="structHazelnp_1_1ParamConstraint.html#a88a4a4c215723259c71853992d09acac">constrainType</a>);</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; </div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">// Void-type</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (values.size() == 0)</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; {</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// Is a list forced via a constraint? If yes, return an empty list</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> ((constrainType) &amp;&amp;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; (constraint-&gt;<a class="code" href="structHazelnp_1_1ParamConstraint.html#ac07a0c0555431d4b1e0bc6afdba41329">wantedType</a> == <a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa298cb25408234de02baf2085803a464a">DATA_TYPE::LIST</a>))</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1ListValue.html">ListValue</a>();</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; </div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="comment">// Is a string forced via a constraint? If yes, return an empty string</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> ((constrainType) &amp;&amp;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; (constraint-&gt;<a class="code" href="structHazelnp_1_1ParamConstraint.html#ac07a0c0555431d4b1e0bc6afdba41329">wantedType</a> == <a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa63b588d5559f64f89a416e656880b949">DATA_TYPE::STRING</a>))</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1StringValue.html">StringValue</a>(<span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; </div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="comment">// Else, just return the void type</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1VoidValue.html">VoidValue</a>;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; </div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">// Force void type by constraint</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span> ((constrainType) &amp;&amp;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; (constraint-&gt;<a class="code" href="structHazelnp_1_1ParamConstraint.html#ac07a0c0555431d4b1e0bc6afdba41329">wantedType</a> == <a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa6d0c9fc747131795e6e5d0c5119f12cb">DATA_TYPE::VOID</a>))</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1VoidValue.html">VoidValue</a>;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; </div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// List-type</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (values.size() &gt; 1)</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; {</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="comment">// Should the type be something other than list?</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span> ((constrainType) &amp;&amp;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; (constraint-&gt;<a class="code" href="structHazelnp_1_1ParamConstraint.html#ac07a0c0555431d4b1e0bc6afdba41329">wantedType</a> != <a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa298cb25408234de02baf2085803a464a">DATA_TYPE::LIST</a>))</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html">HazelnuppConstraintTypeMissmatch</a>(values[0] + <span class="stringliteral">&quot; &quot;</span> + values[1]);</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classHazelnp_1_1ListValue.html">ListValue</a>* newList = <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1ListValue.html">ListValue</a>();</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> std::string&amp; val : values)</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classHazelnp_1_1Value.html">Value</a>* tmp = ParseValue({ val });</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; newList-&gt;<a class="code" href="classHazelnp_1_1ListValue.html#af8787d266aa353d3f96e2c76cce76c41">AddValue</a>(tmp);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">delete</span> tmp;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> newList;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// Now we&#39;re only dealing with a single value</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keyword">const</span> std::string&amp; val = values[0];</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// String</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classHazelnp_1_1StringTools.html#a6cd093feaca2d978c23774cf87d86e68">StringTools::IsNumeric</a>(val, <span class="keyword">true</span>))</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="comment">// Is the type not supposed to be a string?</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">// void and list are already sorted out</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> ((constrainType) &amp;&amp;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; (constraint-&gt;<a class="code" href="structHazelnp_1_1ParamConstraint.html#ac07a0c0555431d4b1e0bc6afdba41329">wantedType</a> != <a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa63b588d5559f64f89a416e656880b949">DATA_TYPE::STRING</a>))</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// We can only force a list-value from here</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (constraint-&gt;<a class="code" href="structHazelnp_1_1ParamConstraint.html#ac07a0c0555431d4b1e0bc6afdba41329">wantedType</a> == <a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa298cb25408234de02baf2085803a464a">DATA_TYPE::LIST</a>)</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; {</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classHazelnp_1_1ListValue.html">ListValue</a>* list = <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1ListValue.html">ListValue</a>();</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classHazelnp_1_1Value.html">Value</a>* tmp = ParseValue({ val });</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; list-&gt;<a class="code" href="classHazelnp_1_1ListValue.html#af8787d266aa353d3f96e2c76cce76c41">AddValue</a>(tmp);</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keyword">delete</span> tmp;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; tmp = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> list;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// Else it not possible to convert to a numeric</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html">HazelnuppConstraintTypeMissmatch</a>(val);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1StringValue.html">StringValue</a>(val);</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="comment">// In this case we have a numeric value.</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">// We should still produce a string if requested</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">if</span> ((constrainType) &amp;&amp;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; (constraint-&gt;<a class="code" href="structHazelnp_1_1ParamConstraint.html#ac07a0c0555431d4b1e0bc6afdba41329">wantedType</a> == <a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa63b588d5559f64f89a416e656880b949">DATA_TYPE::STRING</a>))</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1StringValue.html">StringValue</a>(val);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; </div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// Numeric</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordtype">bool</span> isInt;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordtype">long</span> <span class="keywordtype">double</span> num;</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classHazelnp_1_1StringTools.html#ab661223da5bbbb75039e168409466c82">StringTools::ParseNumber</a>(val, isInt, num))</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="comment">// Is the type constrained?</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// (only int and float left)</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (constrainType)</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// Must it be an integer?</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (constraint-&gt;<a class="code" href="structHazelnp_1_1ParamConstraint.html#ac07a0c0555431d4b1e0bc6afdba41329">wantedType</a> == <a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa53f93baa3057821107c750323892fa92">DATA_TYPE::INT</a>)</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1IntValue.html">IntValue</a>((<span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span>)num);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="comment">// Must it be a floating point?</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (constraint-&gt;<a class="code" href="structHazelnp_1_1ParamConstraint.html#ac07a0c0555431d4b1e0bc6afdba41329">wantedType</a> == <a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fae738c26bf4ce1037fa81b039a915cbf6">DATA_TYPE::FLOAT</a>)</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1FloatValue.html">FloatValue</a>(num);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">// Else it must be a List</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classHazelnp_1_1ListValue.html">ListValue</a>* list = <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1ListValue.html">ListValue</a>();</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="classHazelnp_1_1Value.html">Value</a>* tmp = ParseValue({ val });</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; list-&gt;<a class="code" href="classHazelnp_1_1ListValue.html#af8787d266aa353d3f96e2c76cce76c41">AddValue</a>(tmp);</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">delete</span> tmp;</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; tmp = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> list;</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="comment">// Type is not constrained</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// Integer</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (isInt)</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1IntValue.html">IntValue</a>((<span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span>)num);</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; </div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// Double</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1FloatValue.html">FloatValue</a>(num);</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; </div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="comment">// Failed</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;}</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
<div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a1b810cc7db2cf64aecaa70c686b14bb7"> 297</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a1b810cc7db2cf64aecaa70c686b14bb7">Hazelnupp::GetCrashOnFail</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> crashOnFail;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;}</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; </div>
<div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a60e0a51cd92014a87e44322158e45872"> 302</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a60e0a51cd92014a87e44322158e45872">Hazelnupp::SetCatchHelp</a>(<span class="keywordtype">bool</span> catchHelp)</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;{</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; this-&gt;catchHelp = catchHelp;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;}</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; </div>
<div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a05a3d112bcc00cdeade76f3643ba9e94"> 308</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a05a3d112bcc00cdeade76f3643ba9e94">Hazelnupp::GetCatchHelp</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">return</span> catchHelp;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;}</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; </div>
<div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a037f84b32c7a2420c387dd46445291ac"> 313</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a037f84b32c7a2420c387dd46445291ac">Hazelnupp::SetBriefDescription</a>(<span class="keyword">const</span> std::string&amp; description)</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;{</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; briefDescription = description;</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;}</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; </div>
<div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a1d32c3047a8c58650476d1ae7e9fb582"> 319</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classHazelnp_1_1Hazelnupp.html#a1d32c3047a8c58650476d1ae7e9fb582">Hazelnupp::GetBriefDescription</a>()</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;{</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> briefDescription;</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;}</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
<div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a17883db87e97caad4a0f114f9f850f5e"> 324</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a17883db87e97caad4a0f114f9f850f5e">Hazelnp::Hazelnupp::RegisterDescription</a>(<span class="keyword">const</span> std::string&amp; parameter, <span class="keyword">const</span> std::string&amp; description)</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;{</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; parameterDescriptions[parameter] = description;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;}</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a300e55438cb0983b02347fdc3653e32c"> 330</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classHazelnp_1_1Hazelnupp.html#a300e55438cb0983b02347fdc3653e32c">Hazelnp::Hazelnupp::GetDescription</a>(<span class="keyword">const</span> std::string&amp; parameter)<span class="keyword"> const</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">// Do we already have a description for this parameter?</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span> (!HasDescription(parameter))</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">// No? Then return &quot;&quot;</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceHazelnp_1_1Placeholders.html#a90536f0cd5261b18da736e954c6b8b79">Placeholders::g_emptyString</a>;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; </div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="comment">// We do? Then return it</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> parameterDescriptions.find(parameter)-&gt;second;</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;}</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; </div>
<div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#aabab94412ff5eecf95b97a4e21eb9cf6"> 341</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#aabab94412ff5eecf95b97a4e21eb9cf6">Hazelnupp::HasDescription</a>(<span class="keyword">const</span> std::string&amp; parameter)<span class="keyword"> const</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> parameterDescriptions.find(parameter) != parameterDescriptions.end();</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;}</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; </div>
<div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a26eaac65949072b659531444d32c4cbf"> 346</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a26eaac65949072b659531444d32c4cbf">Hazelnupp::ClearDescription</a>(<span class="keyword">const</span> std::string&amp; parameter)</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;{</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="comment">// This will just do nothing if the entry does not exist</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; parameterDescriptions.erase(parameter);</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;}</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; </div>
<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#ae266cfb3526b9223fc05beb01646fb42"> 353</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#ae266cfb3526b9223fc05beb01646fb42">Hazelnp::Hazelnupp::ClearDescriptions</a>()</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;{</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; parameterDescriptions.clear();</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;}</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; </div>
<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a7b1bf5e700d8a0d8e90c5750e54749de"> 359</a></span>&#160;std::string <a class="code" href="classHazelnp_1_1Hazelnupp.html#a7b1bf5e700d8a0d8e90c5750e54749de">Hazelnupp::GenerateDocumentation</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; std::stringstream ss;</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; </div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">// Add brief, if available</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">if</span> (briefDescription.length() &gt; 0)</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; ss &lt;&lt; briefDescription &lt;&lt; std::endl;</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; </div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="comment">// Collect parameter information</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">struct </span>ParamDocEntry</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; std::string abbreviation;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; std::string description;</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; std::string type;</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordtype">bool</span> required = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordtype">bool</span> typeIsForced = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; std::string defaultVal;</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; };</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; std::unordered_map&lt;std::string, ParamDocEntry&gt; paramInfos;</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; </div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="comment">// Collect descriptions</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; it : parameterDescriptions)</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">// Do we already have that param in the paramInfo set?</span></div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> (paramInfos.find(it.first) == paramInfos.end())</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="comment">// No? Create it.</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; paramInfos[it.first] = ParamDocEntry();</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; </div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; paramInfos[it.first].description = it.second;</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; </div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="comment">// Collect abbreviations</span></div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="comment">// first value is abbreviation, second is long form</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; it : parameterAbreviations)</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="comment">// Do we already have that param in the paramInfo set?</span></div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">if</span> (paramInfos.find(it.second) == paramInfos.end())</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="comment">// No? Create it.</span></div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; paramInfos[it.second] = ParamDocEntry();</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; </div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; paramInfos[it.second].abbreviation = it.first;</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; </div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="comment">// Collect constraints</span></div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; it : parameterConstraints)</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="comment">// Do we already have that param in the paramInfo set?</span></div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">if</span> (paramInfos.find(it.first) == paramInfos.end())</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="comment">// No? Create it.</span></div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; paramInfos[it.first] = ParamDocEntry();</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; </div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; ParamDocEntry&amp; cached = paramInfos[it.first];</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; cached.required = it.second.required;</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; cached.typeIsForced = it.second.constrainType;</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; cached.type = <a class="code" href="namespaceHazelnp.html#a7fb1e5ad9e2ecb6c0025beb19f11621b">DataTypeToString</a>(it.second.wantedType);</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; </div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; std::stringstream defaultValueSs;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> std::string&amp; s : it.second.defaultValue)</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; defaultValueSs &lt;&lt; <span class="charliteral">&#39;\&#39;&#39;</span> &lt;&lt; s &lt;&lt; <span class="charliteral">&#39;\&#39;&#39;</span>;</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; </div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">// Add a space if we are not at the last entry</span></div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">void</span>*)&amp;s != (<span class="keywordtype">void</span>*)&amp;it.second.defaultValue.back())</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; defaultValueSs &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; cached.defaultVal = defaultValueSs.str();</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; </div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="comment">// Now generate the documentatino body</span></div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span> (paramInfos.size() &gt; 0)</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; ss &lt;&lt; std::endl </div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; &lt;&lt; <span class="stringliteral">&quot;==== AVAILABLE PARAMETERS ====&quot;</span> </div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; &lt;&lt; std::endl &lt;&lt; std::endl;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; </div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; it : paramInfos)</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; {</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">const</span> ParamDocEntry&amp; pde = it.second;</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; </div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="comment">// Put name</span></div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; ss &lt;&lt; it.first &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; </div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="comment">// Put abbreviation</span></div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (pde.abbreviation.length() &gt; 0)</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; ss &lt;&lt; pde.abbreviation &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; </div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="comment">// Put type</span></div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span> (pde.typeIsForced)</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; ss &lt;&lt; pde.type &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; </div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="comment">// Put default value</span></div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">if</span> (pde.defaultVal.length() &gt; 0)</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;default=[&quot;</span> &lt;&lt; pde.defaultVal &lt;&lt; <span class="stringliteral">&quot;] &quot;</span>;</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; </div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="comment">// Put required tag, but only if no default value</span></div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">if</span> ((pde.required) &amp;&amp; (pde.defaultVal.length() == 0))</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;[[REQUIRED]] &quot;</span>;</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; </div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment">// Put brief description</span></div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span> (pde.description.length() &gt; 0)</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; ss &lt;&lt; pde.description;</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; </div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; ss &lt;&lt; std::endl &lt;&lt; std::endl;</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">return</span> ss.str();</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;}</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; </div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="keywordtype">void</span> Hazelnupp::ApplyConstraints()</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;{</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="comment">// Enforce required parameters / default values</span></div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pc : parameterConstraints)</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="comment">// Parameter in question is not supplied</span></div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040">HasParam</a>(pc.second.key))</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">// Do we have a default value?</span></div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">if</span> (pc.second.defaultValue.size() &gt; 0)</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="comment">// Then create it now, by its default value</span></div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; </div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="classHazelnp_1_1Value.html">Value</a>* tmp = ParseValue(pc.second.defaultValue, &amp;pc.second);</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; parameters.insert(std::pair&lt;std::string, Parameter*&gt;(</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; pc.second.key,</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">new</span> <a class="code" href="classHazelnp_1_1Parameter.html">Parameter</a>(pc.second.key, tmp)</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; ));</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; </div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keyword">delete</span> tmp;</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; tmp = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="comment">// So we do not have a default value...</span></div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; {</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="comment">// Is it important to have the missing parameter?</span></div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (pc.second.required)</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="comment">// Throw an error message then</span></div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classHazelnp_1_1HazelnuppConstraintMissingValue.html">HazelnuppConstraintMissingValue</a>(pc.second.key);</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; </div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;}</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; </div>
<div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#acaec2780d800113ffc2d72a6b865955c"> 502</a></span>&#160;<a class="code" href="structHazelnp_1_1ParamConstraint.html">ParamConstraint</a> <a class="code" href="classHazelnp_1_1Hazelnupp.html#acaec2780d800113ffc2d72a6b865955c">Hazelnupp::GetConstraint</a>(<span class="keyword">const</span> std::string&amp; parameter)<span class="keyword"> const</span></div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">return</span> parameterConstraints.find(parameter)-&gt;second;</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;}</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; </div>
<div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a63d6bdfc0d6255b5d663f3a786077eb4"> 507</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a63d6bdfc0d6255b5d663f3a786077eb4">Hazelnupp::ClearConstraint</a>(<span class="keyword">const</span> std::string&amp; parameter)</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;{</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; parameterConstraints.erase(parameter);</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;}</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; </div>
<div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#af6bb41fb079131f8b91fe981f63f7469"> 513</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classHazelnp_1_1Hazelnupp.html#af6bb41fb079131f8b91fe981f63f7469">Hazelnupp::GetExecutableName</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> executableName;</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;}</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; </div>
<div class="line"><a name="l00518"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a419ccdc6bad00b0fc3e17ed9b41f5dc5"> 518</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classHazelnp_1_1Value.html">Value</a>&amp; <a class="code" href="classHazelnp_1_1Hazelnupp.html#a419ccdc6bad00b0fc3e17ed9b41f5dc5">Hazelnupp::operator[]</a>(<span class="keyword">const</span> std::string&amp; key)<span class="keyword"> const</span></div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="comment">// Throw exception if param is unknown</span></div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040">HasParam</a>(key))</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classHazelnp_1_1HazelnuppInvalidKeyException.html">HazelnuppInvalidKeyException</a>();</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; </div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">return</span> *parameters.find(key)-&gt;second-&gt;GetValue();</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;}</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; </div>
<div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#abf1e0ebf0207ca2327fcde81f7372124"> 527</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#abf1e0ebf0207ca2327fcde81f7372124">Hazelnupp::RegisterAbbreviation</a>(<span class="keyword">const</span> std::string&amp; abbrev, <span class="keyword">const</span> std::string&amp; target)</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;{</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; parameterAbreviations.insert(std::pair&lt;std::string, std::string&gt;(abbrev, target));</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;}</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; </div>
<div class="line"><a name="l00533"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a579e78129f19cb9f17a6075366ababe5"> 533</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classHazelnp_1_1Hazelnupp.html#a579e78129f19cb9f17a6075366ababe5">Hazelnupp::GetAbbreviation</a>(<span class="keyword">const</span> std::string&amp; abbrev)<span class="keyword"> const</span></div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classHazelnp_1_1Hazelnupp.html#a46df7d396fb56e30351c9a7308792200">HasAbbreviation</a>(abbrev))</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceHazelnp_1_1Placeholders.html#a90536f0cd5261b18da736e954c6b8b79">Placeholders::g_emptyString</a>;</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; </div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">return</span> parameterAbreviations.find(abbrev)-&gt;second;</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;}</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; </div>
<div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a46df7d396fb56e30351c9a7308792200"> 541</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a46df7d396fb56e30351c9a7308792200">Hazelnupp::HasAbbreviation</a>(<span class="keyword">const</span> std::string&amp; abbrev)<span class="keyword"> const</span></div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> parameterAbreviations.find(abbrev) != parameterAbreviations.end();</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;}</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; </div>
<div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a05d1decbb08d1f9368bc9a0d3dfd6398"> 546</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a05d1decbb08d1f9368bc9a0d3dfd6398">Hazelnupp::ClearAbbreviation</a>(<span class="keyword">const</span> std::string&amp; abbrevation)</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;{</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; parameterAbreviations.erase(abbrevation);</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;}</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; </div>
<div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a5175869b025468324cefad487081e91d"> 552</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a5175869b025468324cefad487081e91d">Hazelnupp::ClearAbbreviations</a>()</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;{</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; parameterAbreviations.clear();</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;}</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; </div>
<div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#add731b65fb0741e4fb0b8fc8a601a11d"> 558</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#add731b65fb0741e4fb0b8fc8a601a11d">Hazelnupp::RegisterConstraint</a>(<span class="keyword">const</span> std::string&amp; key, <span class="keyword">const</span> <a class="code" href="structHazelnp_1_1ParamConstraint.html">ParamConstraint</a>&amp; constraint)</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;{</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">// Magic syntax, wooo</span></div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; (parameterConstraints[key] = constraint).key = key;</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;}</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; </div>
<div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a3970b74583def49c6632fe08a4499809"> 565</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a3970b74583def49c6632fe08a4499809">Hazelnupp::ClearConstraints</a>()</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;{</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; parameterConstraints.clear();</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;}</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; </div>
<div class="line"><a name="l00571"></a><span class="lineno"><a class="line" href="classHazelnp_1_1Hazelnupp.html#a17845623ca686caa51f3c8254e85551e"> 571</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHazelnp_1_1Hazelnupp.html#a17845623ca686caa51f3c8254e85551e">Hazelnupp::SetCrashOnFail</a>(<span class="keywordtype">bool</span> crashOnFail)</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;{</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; this-&gt;crashOnFail = crashOnFail;</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;}</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; </div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="keyword">const</span> <a class="code" href="structHazelnp_1_1ParamConstraint.html">ParamConstraint</a>* Hazelnupp::GetConstraintForKey(<span class="keyword">const</span> std::string&amp; key)<span class="keyword"> const</span></div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> constraint = parameterConstraints.find(key);</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; </div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">if</span> (constraint == parameterConstraints.end())</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; </div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">return</span> &amp;constraint-&gt;second;</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aHazelnuppException_8h_html"><div class="ttname"><a href="HazelnuppException_8h.html">HazelnuppException.h</a></div></div>
<div class="ttc" id="anamespaceHazelnp_html"><div class="ttname"><a href="namespaceHazelnp.html">Hazelnp</a></div><div class="ttdef"><b>Definition:</b> <a href="DataType_8h_source.html#l00004">DataType.h:4</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1IntValue_html"><div class="ttname"><a href="classHazelnp_1_1IntValue.html">Hazelnp::IntValue</a></div><div class="ttdoc">Specializations for integer values (uses long long int)</div><div class="ttdef"><b>Definition:</b> <a href="IntValue_8h_source.html#l00008">IntValue.h:8</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1StringTools_html_a6cd093feaca2d978c23774cf87d86e68"><div class="ttname"><a href="classHazelnp_1_1StringTools.html#a6cd093feaca2d978c23774cf87d86e68">Hazelnp::StringTools::IsNumeric</a></div><div class="ttdeci">static bool IsNumeric(const std::string &amp;str, const bool allowDecimalPoint=false)</div><div class="ttdoc">Will return true if the given string consists only of digits (including signage)</div><div class="ttdef"><b>Definition:</b> <a href="StringTools_8cpp_source.html#l00056">StringTools.cpp:56</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1StringTools_html_ab661223da5bbbb75039e168409466c82"><div class="ttname"><a href="classHazelnp_1_1StringTools.html#ab661223da5bbbb75039e168409466c82">Hazelnp::StringTools::ParseNumber</a></div><div class="ttdeci">static bool ParseNumber(const std::string &amp;str, bool &amp;out_isInt, long double &amp;out_number)</div><div class="ttdoc">Will convert the number in str to a number.</div><div class="ttdef"><b>Definition:</b> <a href="StringTools_8cpp_source.html#l00082">StringTools.cpp:82</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a1d32c3047a8c58650476d1ae7e9fb582"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a1d32c3047a8c58650476d1ae7e9fb582">Hazelnp::Hazelnupp::GetBriefDescription</a></div><div class="ttdeci">const std::string &amp; GetBriefDescription()</div><div class="ttdoc">Returns the brief description of the application to be automatically added to the documentation.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00319">Hazelnupp.cpp:319</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a3970b74583def49c6632fe08a4499809"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a3970b74583def49c6632fe08a4499809">Hazelnp::Hazelnupp::ClearConstraints</a></div><div class="ttdeci">void ClearConstraints()</div><div class="ttdoc">Will delete all constraints.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00565">Hazelnupp.cpp:565</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1HazelnuppInvalidKeyException_html"><div class="ttname"><a href="classHazelnp_1_1HazelnuppInvalidKeyException.html">Hazelnp::HazelnuppInvalidKeyException</a></div><div class="ttdoc">Gets thrown when an non-existent key gets dereferenced.</div><div class="ttdef"><b>Definition:</b> <a href="HazelnuppException_8h_source.html#l00026">HazelnuppException.h:26</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_af6bb41fb079131f8b91fe981f63f7469"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#af6bb41fb079131f8b91fe981f63f7469">Hazelnp::Hazelnupp::GetExecutableName</a></div><div class="ttdeci">const std::string &amp; GetExecutableName() const</div><div class="ttdoc">Will return argv[0], the name of the executable.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00513">Hazelnupp.cpp:513</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a7b1bf5e700d8a0d8e90c5750e54749de"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a7b1bf5e700d8a0d8e90c5750e54749de">Hazelnp::Hazelnupp::GenerateDocumentation</a></div><div class="ttdeci">std::string GenerateDocumentation() const</div><div class="ttdoc">Will generate a text-based documentation suited to show the user, for example on help.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00359">Hazelnupp.cpp:359</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_acaec2780d800113ffc2d72a6b865955c"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#acaec2780d800113ffc2d72a6b865955c">Hazelnp::Hazelnupp::GetConstraint</a></div><div class="ttdeci">ParamConstraint GetConstraint(const std::string &amp;parameter) const</div><div class="ttdoc">Will return the constraint information for a specific parameter.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00502">Hazelnupp.cpp:502</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a25f8810d24d647b6a57e2dd00ead42be"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a25f8810d24d647b6a57e2dd00ead42be">Hazelnp::Hazelnupp::~Hazelnupp</a></div><div class="ttdeci">~Hazelnupp()</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00026">Hazelnupp.cpp:26</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a419ccdc6bad00b0fc3e17ed9b41f5dc5"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a419ccdc6bad00b0fc3e17ed9b41f5dc5">Hazelnp::Hazelnupp::operator[]</a></div><div class="ttdeci">const Value &amp; operator[](const std::string &amp;key) const</div><div class="ttdoc">Will return the value given a key.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00518">Hazelnupp.cpp:518</a></div></div>
<div class="ttc" id="aStringValue_8h_html"><div class="ttname"><a href="StringValue_8h.html">StringValue.h</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1HazelnuppException_html_aa86c415a0f2b4ea5f11892145d1ea83e"><div class="ttname"><a href="classHazelnp_1_1HazelnuppException.html#aa86c415a0f2b4ea5f11892145d1ea83e">Hazelnp::HazelnuppException::What</a></div><div class="ttdeci">const std::string &amp; What() const</div><div class="ttdoc">Will return an error message.</div><div class="ttdef"><b>Definition:</b> <a href="HazelnuppException_8h_source.html#l00015">HazelnuppException.h:15</a></div></div>
<div class="ttc" id="aIntValue_8h_html"><div class="ttname"><a href="IntValue_8h.html">IntValue.h</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a20ac0ebcfd4df7f320a7bbcaeed6e54d"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a20ac0ebcfd4df7f320a7bbcaeed6e54d">Hazelnp::Hazelnupp::Hazelnupp</a></div><div class="ttdeci">Hazelnupp()</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00015">Hazelnupp.cpp:15</a></div></div>
<div class="ttc" id="aPlaceholders_8h_html"><div class="ttname"><a href="Placeholders_8h.html">Placeholders.h</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a5175869b025468324cefad487081e91d"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a5175869b025468324cefad487081e91d">Hazelnp::Hazelnupp::ClearAbbreviations</a></div><div class="ttdeci">void ClearAbbreviations()</div><div class="ttdoc">Will delete all abbreviations.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00552">Hazelnupp.cpp:552</a></div></div>
<div class="ttc" id="anamespaceHazelnp_html_a07b61ac22ce9cd97eceebdf9487f803fa6d0c9fc747131795e6e5d0c5119f12cb"><div class="ttname"><a href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa6d0c9fc747131795e6e5d0c5119f12cb">Hazelnp::DATA_TYPE::VOID</a></div><div class="ttdeci">@ VOID</div></div>
<div class="ttc" id="aclassHazelnp_1_1FloatValue_html"><div class="ttname"><a href="classHazelnp_1_1FloatValue.html">Hazelnp::FloatValue</a></div><div class="ttdoc">Specializations for floating point values (uses long double)</div><div class="ttdef"><b>Definition:</b> <a href="FloatValue_8h_source.html#l00009">FloatValue.h:9</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a037f84b32c7a2420c387dd46445291ac"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a037f84b32c7a2420c387dd46445291ac">Hazelnp::Hazelnupp::SetBriefDescription</a></div><div class="ttdeci">void SetBriefDescription(const std::string &amp;description)</div><div class="ttdoc">Sets a brief description of the application to be automatically added to the documentation.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00313">Hazelnupp.cpp:313</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Value_html"><div class="ttname"><a href="classHazelnp_1_1Value.html">Hazelnp::Value</a></div><div class="ttdoc">Abstract class for values.</div><div class="ttdef"><b>Definition:</b> <a href="Value_8h_source.html#l00010">Value.h:10</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a1b810cc7db2cf64aecaa70c686b14bb7"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a1b810cc7db2cf64aecaa70c686b14bb7">Hazelnp::Hazelnupp::GetCrashOnFail</a></div><div class="ttdeci">bool GetCrashOnFail() const</div><div class="ttdoc">Gets whether the application crashes on an exception whilst parsing, and prints to stderr.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00297">Hazelnupp.cpp:297</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_aabab94412ff5eecf95b97a4e21eb9cf6"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#aabab94412ff5eecf95b97a4e21eb9cf6">Hazelnp::Hazelnupp::HasDescription</a></div><div class="ttdeci">bool HasDescription(const std::string &amp;parameter) const</div><div class="ttdoc">Returns whether or not a given parameter has a registered description.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00341">Hazelnupp.cpp:341</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a60e0a51cd92014a87e44322158e45872"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a60e0a51cd92014a87e44322158e45872">Hazelnp::Hazelnupp::SetCatchHelp</a></div><div class="ttdeci">void SetCatchHelp(bool catchHelp)</div><div class="ttdoc">Sets whether the Hazelnupp should automatically catch the help parameter, print the parameter docume...</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00302">Hazelnupp.cpp:302</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a05a3d112bcc00cdeade76f3643ba9e94"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a05a3d112bcc00cdeade76f3643ba9e94">Hazelnp::Hazelnupp::GetCatchHelp</a></div><div class="ttdeci">bool GetCatchHelp() const</div><div class="ttdoc">Retruns whether the Hazelnupp should automatically catch the help parameter, print the parameter doc...</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00308">Hazelnupp.cpp:308</a></div></div>
<div class="ttc" id="anamespaceHazelnp_html_a07b61ac22ce9cd97eceebdf9487f803fa298cb25408234de02baf2085803a464a"><div class="ttname"><a href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa298cb25408234de02baf2085803a464a">Hazelnp::DATA_TYPE::LIST</a></div><div class="ttdeci">@ LIST</div></div>
<div class="ttc" id="aclassHazelnp_1_1Parameter_html"><div class="ttname"><a href="classHazelnp_1_1Parameter.html">Hazelnp::Parameter</a></div><div class="ttdef"><b>Definition:</b> <a href="Parameter_8h_source.html#l00008">Parameter.h:8</a></div></div>
<div class="ttc" id="astructHazelnp_1_1ParamConstraint_html_ac07a0c0555431d4b1e0bc6afdba41329"><div class="ttname"><a href="structHazelnp_1_1ParamConstraint.html#ac07a0c0555431d4b1e0bc6afdba41329">Hazelnp::ParamConstraint::wantedType</a></div><div class="ttdeci">DATA_TYPE wantedType</div><div class="ttdoc">Constrain the parameter to this value. Requires constrainType to be set to true.</div><div class="ttdef"><b>Definition:</b> <a href="ParamConstraint_8h_source.html#l00051">ParamConstraint.h:51</a></div></div>
<div class="ttc" id="astructHazelnp_1_1ParamConstraint_html"><div class="ttname"><a href="structHazelnp_1_1ParamConstraint.html">Hazelnp::ParamConstraint</a></div><div class="ttdef"><b>Definition:</b> <a href="ParamConstraint_8h_source.html#l00008">ParamConstraint.h:8</a></div></div>
<div class="ttc" id="anamespaceHazelnp_1_1Placeholders_html_a90536f0cd5261b18da736e954c6b8b79"><div class="ttname"><a href="namespaceHazelnp_1_1Placeholders.html#a90536f0cd5261b18da736e954c6b8b79">Hazelnp::Placeholders::g_emptyString</a></div><div class="ttdeci">static const std::string g_emptyString</div><div class="ttdoc">The only purpose of this is to provide the ability to return an empty string as an error for std::str...</div><div class="ttdef"><b>Definition:</b> <a href="Placeholders_8h_source.html#l00009">Placeholders.h:9</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a8b79a79d40420ae748c108c691111040"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040">Hazelnp::Hazelnupp::HasParam</a></div><div class="ttdeci">bool HasParam(const std::string &amp;key) const</div><div class="ttdoc">Will check wether a parameter exists given a key, or not.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00165">Hazelnupp.cpp:165</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a1ccb88faca1a8deb77161888479c300b"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a1ccb88faca1a8deb77161888479c300b">Hazelnp::Hazelnupp::Parse</a></div><div class="ttdeci">void Parse(const int argc, const char *const *argv)</div><div class="ttdoc">Will parse command line arguments.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00036">Hazelnupp.cpp:36</a></div></div>
<div class="ttc" id="aListValue_8h_html"><div class="ttname"><a href="ListValue_8h.html">ListValue.h</a></div></div>
<div class="ttc" id="astructHazelnp_1_1ParamConstraint_html_a88a4a4c215723259c71853992d09acac"><div class="ttname"><a href="structHazelnp_1_1ParamConstraint.html#a88a4a4c215723259c71853992d09acac">Hazelnp::ParamConstraint::constrainType</a></div><div class="ttdeci">bool constrainType</div><div class="ttdoc">Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...</div><div class="ttdef"><b>Definition:</b> <a href="ParamConstraint_8h_source.html#l00048">ParamConstraint.h:48</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a26eaac65949072b659531444d32c4cbf"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a26eaac65949072b659531444d32c4cbf">Hazelnp::Hazelnupp::ClearDescription</a></div><div class="ttdeci">void ClearDescription(const std::string &amp;parameter)</div><div class="ttdoc">Will delete the description of a parameter if it exists.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00346">Hazelnupp.cpp:346</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Parameter_html_a7acd68ce06eec06ab286b1a062f9c8d6"><div class="ttname"><a href="classHazelnp_1_1Parameter.html#a7acd68ce06eec06ab286b1a062f9c8d6">Hazelnp::Parameter::Key</a></div><div class="ttdeci">const std::string &amp; Key() const</div><div class="ttdoc">Will return the key of this parameter.</div><div class="ttdef"><b>Definition:</b> <a href="Parameter_8cpp_source.html#l00021">Parameter.cpp:21</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1HazelnuppConstraintMissingValue_html"><div class="ttname"><a href="classHazelnp_1_1HazelnuppConstraintMissingValue.html">Hazelnp::HazelnuppConstraintMissingValue</a></div><div class="ttdoc">Gets thrown when a parameter constrained to be required is not provided, and has no default value set...</div><div class="ttdef"><b>Definition:</b> <a href="HazelnuppException_8h_source.html#l00062">HazelnuppException.h:62</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_abf1e0ebf0207ca2327fcde81f7372124"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#abf1e0ebf0207ca2327fcde81f7372124">Hazelnp::Hazelnupp::RegisterAbbreviation</a></div><div class="ttdeci">void RegisterAbbreviation(const std::string &amp;abbrev, const std::string &amp;target)</div><div class="ttdoc">Will register an abbreviation (like -f for force)</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00527">Hazelnupp.cpp:527</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1HazelnuppConstraintTypeMissmatch_html"><div class="ttname"><a href="classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html">Hazelnp::HazelnuppConstraintTypeMissmatch</a></div><div class="ttdoc">Gets thrown when a parameter is of a type that does not match the required type, and is not convertib...</div><div class="ttdef"><b>Definition:</b> <a href="HazelnuppException_8h_source.html#l00053">HazelnuppException.h:53</a></div></div>
<div class="ttc" id="aVoidValue_8h_html"><div class="ttname"><a href="VoidValue_8h.html">VoidValue.h</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a579e78129f19cb9f17a6075366ababe5"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a579e78129f19cb9f17a6075366ababe5">Hazelnp::Hazelnupp::GetAbbreviation</a></div><div class="ttdeci">const std::string &amp; GetAbbreviation(const std::string &amp;abbrev) const</div><div class="ttdoc">Will return the long form of an abbreviation (like force for -f) Returns &quot;&quot; if no match is found.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00533">Hazelnupp.cpp:533</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_ae266cfb3526b9223fc05beb01646fb42"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#ae266cfb3526b9223fc05beb01646fb42">Hazelnp::Hazelnupp::ClearDescriptions</a></div><div class="ttdeci">void ClearDescriptions()</div><div class="ttdoc">Will delete all parameter descriptions.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00353">Hazelnupp.cpp:353</a></div></div>
<div class="ttc" id="aHazelnupp_8h_html"><div class="ttname"><a href="Hazelnupp_8h.html">Hazelnupp.h</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1ListValue_html_af8787d266aa353d3f96e2c76cce76c41"><div class="ttname"><a href="classHazelnp_1_1ListValue.html#af8787d266aa353d3f96e2c76cce76c41">Hazelnp::ListValue::AddValue</a></div><div class="ttdeci">void AddValue(const Value *value)</div><div class="ttdoc">Will add this value to the list.</div><div class="ttdef"><b>Definition:</b> <a href="ListValue_8cpp_source.html#l00033">ListValue.cpp:33</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_add731b65fb0741e4fb0b8fc8a601a11d"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#add731b65fb0741e4fb0b8fc8a601a11d">Hazelnp::Hazelnupp::RegisterConstraint</a></div><div class="ttdeci">void RegisterConstraint(const std::string &amp;key, const ParamConstraint &amp;constraint)</div><div class="ttdoc">Will register a constraint for a parameter.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00558">Hazelnupp.cpp:558</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1VoidValue_html"><div class="ttname"><a href="classHazelnp_1_1VoidValue.html">Hazelnp::VoidValue</a></div><div class="ttdoc">Specializations for void values.</div><div class="ttdef"><b>Definition:</b> <a href="VoidValue_8h_source.html#l00008">VoidValue.h:8</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a300e55438cb0983b02347fdc3653e32c"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a300e55438cb0983b02347fdc3653e32c">Hazelnp::Hazelnupp::GetDescription</a></div><div class="ttdeci">const std::string &amp; GetDescription(const std::string &amp;parameter) const</div><div class="ttdoc">Will return a short description for a parameter, if it exists.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00330">Hazelnupp.cpp:330</a></div></div>
<div class="ttc" id="anamespaceHazelnp_html_a07b61ac22ce9cd97eceebdf9487f803fae738c26bf4ce1037fa81b039a915cbf6"><div class="ttname"><a href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fae738c26bf4ce1037fa81b039a915cbf6">Hazelnp::DATA_TYPE::FLOAT</a></div><div class="ttdeci">@ FLOAT</div></div>
<div class="ttc" id="anamespaceHazelnp_html_a07b61ac22ce9cd97eceebdf9487f803fa53f93baa3057821107c750323892fa92"><div class="ttname"><a href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa53f93baa3057821107c750323892fa92">Hazelnp::DATA_TYPE::INT</a></div><div class="ttdeci">@ INT</div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a63d6bdfc0d6255b5d663f3a786077eb4"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a63d6bdfc0d6255b5d663f3a786077eb4">Hazelnp::Hazelnupp::ClearConstraint</a></div><div class="ttdeci">void ClearConstraint(const std::string &amp;parameter)</div><div class="ttdoc">Will the constraint of a specific parameter.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00507">Hazelnupp.cpp:507</a></div></div>
<div class="ttc" id="aFloatValue_8h_html"><div class="ttname"><a href="FloatValue_8h.html">FloatValue.h</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a46df7d396fb56e30351c9a7308792200"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a46df7d396fb56e30351c9a7308792200">Hazelnp::Hazelnupp::HasAbbreviation</a></div><div class="ttdeci">bool HasAbbreviation(const std::string &amp;abbrev) const</div><div class="ttdoc">Will check wether or not an abbreviation is registered.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00541">Hazelnupp.cpp:541</a></div></div>
<div class="ttc" id="anamespaceHazelnp_html_a07b61ac22ce9cd97eceebdf9487f803fa63b588d5559f64f89a416e656880b949"><div class="ttname"><a href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa63b588d5559f64f89a416e656880b949">Hazelnp::DATA_TYPE::STRING</a></div><div class="ttdeci">@ STRING</div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a17845623ca686caa51f3c8254e85551e"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a17845623ca686caa51f3c8254e85551e">Hazelnp::Hazelnupp::SetCrashOnFail</a></div><div class="ttdeci">void SetCrashOnFail(bool crashOnFail)</div><div class="ttdoc">Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00571">Hazelnupp.cpp:571</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a17883db87e97caad4a0f114f9f850f5e"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a17883db87e97caad4a0f114f9f850f5e">Hazelnp::Hazelnupp::RegisterDescription</a></div><div class="ttdeci">void RegisterDescription(const std::string &amp;parameter, const std::string &amp;description)</div><div class="ttdoc">Willl register a short description for a parameter.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00324">Hazelnupp.cpp:324</a></div></div>
<div class="ttc" id="anamespaceHazelnp_html_a7fb1e5ad9e2ecb6c0025beb19f11621b"><div class="ttname"><a href="namespaceHazelnp.html#a7fb1e5ad9e2ecb6c0025beb19f11621b">Hazelnp::DataTypeToString</a></div><div class="ttdeci">static std::string DataTypeToString(DATA_TYPE type)</div><div class="ttdef"><b>Definition:</b> <a href="DataType_8h_source.html#l00017">DataType.h:17</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a05d1decbb08d1f9368bc9a0d3dfd6398"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a05d1decbb08d1f9368bc9a0d3dfd6398">Hazelnp::Hazelnupp::ClearAbbreviation</a></div><div class="ttdeci">void ClearAbbreviation(const std::string &amp;abbrevation)</div><div class="ttdoc">Will delete the abbreviation for a given parameter.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00546">Hazelnupp.cpp:546</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1ListValue_html"><div class="ttname"><a href="classHazelnp_1_1ListValue.html">Hazelnp::ListValue</a></div><div class="ttdoc">Specializations for list values (uses std::vector&lt;Value*&gt;)</div><div class="ttdef"><b>Definition:</b> <a href="ListValue_8h_source.html#l00009">ListValue.h:9</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1StringValue_html"><div class="ttname"><a href="classHazelnp_1_1StringValue.html">Hazelnp::StringValue</a></div><div class="ttdoc">Specializations for string values (uses std::string)</div><div class="ttdef"><b>Definition:</b> <a href="StringValue_8h_source.html#l00009">StringValue.h:9</a></div></div>
<div class="ttc" id="aStringTools_8h_html"><div class="ttname"><a href="StringTools_8h.html">StringTools.h</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Jun 5 2021 12:40:11 for Leonetienne/Hazelnupp by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>