Built mkdocs

This commit is contained in:
Leonetienne
2021-06-06 15:32:19 +02:00
parent 6166e43d31
commit 78e7f14b22
200 changed files with 1662 additions and 1472 deletions

View File

@@ -96,6 +96,7 @@ Index</h1>
<li><a href="#abbreviations">Abbreviations</a></li>
<li><a href="#constraints">Constraints</a></li>
<li><a href="#automatic-parameter-documentation">Automatic parameter documentation</a></li>
<li><a href="#descriptive-error-messages">Descriptive error messages</a></li>
<li><a href="#more-examples">More examples?</a></li>
<li><a href="#what-is-not-supported">What is not supported?</a></li>
<li><a href="#further-notes">Further notes</a></li>
@@ -143,7 +144,7 @@ Minimal working example</h1>
<p>So what's the simplest way to use Hazelnupp to work with command-line parameters? See: </p><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>&quot;</span></div>
<div class="line"><span class="keyword">using namespace </span><a class="code" href="namespaceHazelnp.html">Hazelnp</a>;</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> <a class="code" href="main_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line">{</div>
<div class="line"> <a class="code" href="classHazelnp_1_1Hazelnupp.html">Hazelnupp</a> args(argc, argv);</div>
<div class="line"> </div>
@@ -157,7 +158,7 @@ Minimal working example</h1>
</div><!-- fragment --><p>Looks super easy! But what about actual values? </p><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>&quot;</span></div>
<div class="line"><span class="keyword">using namespace </span><a class="code" href="namespaceHazelnp.html">Hazelnp</a>;</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> <a class="code" href="main_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line">{</div>
<div class="line"> <a class="code" href="classHazelnp_1_1Hazelnupp.html">Hazelnupp</a> args(argc, argv);</div>
<div class="line"> </div>
@@ -178,7 +179,7 @@ Minimal working example</h1>
</div><!-- fragment --><p>What about lists? </p><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>&quot;</span></div>
<div class="line"><span class="keyword">using namespace </span><a class="code" href="namespaceHazelnp.html">Hazelnp</a>;</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> <a class="code" href="main_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line">{</div>
<div class="line"> <a class="code" href="classHazelnp_1_1Hazelnupp.html">Hazelnupp</a> args(argc, argv);</div>
<div class="line"> </div>
@@ -198,7 +199,7 @@ Abbreviations</h1>
<p>Abbreviations are a very important part of command line arguments. Like, typing <code>-f</code> instead of <code>--force</code>. Here's how to use them in Hazelnupp: </p><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>&quot;</span></div>
<div class="line"><span class="keyword">using namespace </span><a class="code" href="namespaceHazelnp.html">Hazelnp</a>;</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> <a class="code" href="main_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line">{</div>
<div class="line"> <a class="code" href="classHazelnp_1_1Hazelnupp.html">Hazelnupp</a> args;</div>
<div class="line"> </div>
@@ -232,7 +233,7 @@ Requiring data</h2>
<p>Minimal working example: </p><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>&quot;</span></div>
<div class="line"><span class="keyword">using namespace </span><a class="code" href="namespaceHazelnp.html">Hazelnp</a>;</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> <a class="code" href="main_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line">{</div>
<div class="line"> <a class="code" href="classHazelnp_1_1Hazelnupp.html">Hazelnupp</a> args;</div>
<div class="line"> </div>
@@ -264,12 +265,12 @@ Type safety</h2>
<p>Minimal working example: </p><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>&quot;</span></div>
<div class="line"><span class="keyword">using namespace </span><a class="code" href="namespaceHazelnp.html">Hazelnp</a>;</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> <a class="code" href="main_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div>
<div class="line">{</div>
<div class="line"> <a class="code" href="classHazelnp_1_1Hazelnupp.html">Hazelnupp</a> args;</div>
<div class="line"> </div>
<div class="line"> <span class="comment">// Register constraints</span></div>
<div class="line"> args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#add731b65fb0741e4fb0b8fc8a601a11d">RegisterConstraint</a>(<span class="stringliteral">&quot;--this-must-be-int&quot;</span>, <a class="code" href="structHazelnp_1_1ParamConstraint.html#a15a860c63388ea3164e3d7b35b352e9a">ParamConstraint::TypeSafety</a>(<a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa53f93baa3057821107c750323892fa92">DATA_TYPE::INT</a>));</div>
<div class="line"> args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#add731b65fb0741e4fb0b8fc8a601a11d">RegisterConstraint</a>(<span class="stringliteral">&quot;--this-must-be-int&quot;</span>, <a class="code" href="structHazelnp_1_1ParamConstraint.html#a7df61dbc8dbaff4bc596fdf2c0532d5b">ParamConstraint::TypeSafety</a>(<a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa53f93baa3057821107c750323892fa92">DATA_TYPE::INT</a>));</div>
<div class="line"> </div>
<div class="line"> <span class="comment">// Parse</span></div>
<div class="line"> args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#a1ccb88faca1a8deb77161888479c300b">Parse</a>(argc, argv);</div>
@@ -280,12 +281,12 @@ Type safety</h2>
<hr />
<p> Note that you can also combine these two constraint-types by populating the struct yourself: </p><div class="fragment"><div class="line">ParamConstraint pc;</div>
<div class="line">pc.constrainType = <span class="keyword">true</span>;</div>
<div class="line">pc.wantedType = DATA_TYPE::STRING;</div>
<div class="line">pc.requiredType = DATA_TYPE::STRING;</div>
<div class="line">pc.defaultValue = {}; <span class="comment">// no default value</span></div>
<div class="line">pc.required = <span class="keyword">true</span>;</div>
<div class="line"> </div>
<div class="line">args.RegisterConstraints(<span class="stringliteral">&quot;--my-key&quot;</span>, pc);</div>
</div><!-- fragment --><p>What doesn't work is inserting multiple constraints for one key. It will just discard the oldest one. But that's okay because one can describe all possible constraints for a single key in <b>one</b> struct.</p>
<div class="line">args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#add731b65fb0741e4fb0b8fc8a601a11d">RegisterConstraint</a>(<span class="stringliteral">&quot;--my-key&quot;</span>, pc);</div>
</div><!-- fragment --><p>What doesn't work is inserting multiple constraints for one key. It will just discard the older one. But that's okay because one can describe all possible constraints for a single key in <b>one</b> struct.</p>
<p><span id="automatic-parameter-documentation"></span> </p>
<h1><a class="anchor" id="autotoc_md11"></a>
Automatic parameter documentation</h1>
@@ -315,13 +316,29 @@ Automatic parameter documentation</h1>
</div><!-- fragment --><p>Additionally you can provide a brief description of your application to be added right above the parameter list. </p><div class="fragment"><div class="line">Hazelnupp args;</div>
<div class="line">args.SetBriefDescription(<span class="stringliteral">&quot;This is the testing application for Hazelnupp.&quot;</span>);</div>
</div><!-- fragment --><p>If you want to display this information somewhere else, you can always access it as a string via <code>args.GenerateDocumentation()</code>.</p>
<p><span id="more-examples"></span> </p>
<p><span id="descriptive-error-messages"></span> </p>
<h1><a class="anchor" id="autotoc_md12"></a>
Descriptive error messages</h1>
<p>Given that you did not disable crash-on-error, Hazelnupps default behaviour on user error is to terminate the process with a descriptive error message to stderr.</p>
<p>Here's how they look like:</p>
<p>Type mismatch: </p><div class="fragment"><div class="line">$ a.out --width &quot;about 3 meters&quot;</div>
<div class="line">&lt;&lt; --help page gets printed here aswell &gt;&gt;</div>
<div class="line"> </div>
<div class="line">Parameter error: Cannot convert parameter --width to type FLOAT. You supplied type: VOID.</div>
<div class="line">--width =&gt; The width of something...</div>
</div><!-- fragment --><p>Missing required parameter: </p><div class="fragment"><div class="line">$ a.out&quot;</div>
<div class="line">&lt;&lt; --help page gets printed here aswell &gt;&gt;</div>
<div class="line"> </div>
<div class="line">Parameter error: Missing required parameter --width.</div>
<div class="line">--width =&gt; The width of something...</div>
</div><!-- fragment --><p>This assumes that you've set a description for, in this example, <code>--width</code>. If a description is not set, the last line will simply be omitted.</p>
<p><span id="more-examples"></span> </p>
<h1><a class="anchor" id="autotoc_md13"></a>
More examples?</h1>
<p>Check out the <a href="https://github.com/Leonetienne/Hazelnupp/tree/master/Test_Hazelnupp">tests</a>! They may help you out! <br />
Also make sure to check out the <a href="https://leonetienne.github.io/Hazelnupp/">doxygen docs</a>!</p>
<p><span id="what-is-not-supported"></span> </p>
<h1><a class="anchor" id="autotoc_md13"></a>
<h1><a class="anchor" id="autotoc_md14"></a>
What is not supported?</h1>
<p>Chaining abbreviated parameters, like this: </p><div class="fragment"><div class="line"># This is not supported. It would think -ltr is one parameter.</div>
<div class="line">$ a.out -ltr</div>
@@ -335,17 +352,17 @@ What is not supported?</h1>
<div class="line"># Instead do this</div>
<div class="line">$ a.out -i hello.txt shoe.txt somsang.txt</div>
</div><!-- fragment --><p><span id="further-notes"></span> </p>
<h1><a class="anchor" id="autotoc_md14"></a>
<h1><a class="anchor" id="autotoc_md15"></a>
Further notes</h1>
<p>This is still in alpha! There is no guarantee at all that this actually works. <br />
Whilst i did my best do make sure it does, i bet there are still a few flaws i've overlooked. <br />
Whilst i did my best to make sure it does, i bet there are still a few flaws i've overlooked. <br />
Please know that i am not obliged to work on fixes. I do have other stuff to do. This does not mean that i won't, but i'm not sure when. <br />
Feel free to submit a PR if you think you improved it in any way :)</p>
<p><span id="#contributing"></span> </p>
<h1><a class="anchor" id="autotoc_md15"></a>
<h1><a class="anchor" id="autotoc_md16"></a>
Contributing</h1>
<p>If you want to contribute, feel free to fork the repository, and submit a pull request. <br />
Bugfixes and tests are almost certain to be accepted, features should agreed upon and come with tests. <br />
Bugfixes and tests are almost certain to be accepted, features should be agreed upon and come with tests. <br />
Just create an issue with the tag <code>feature request</code>. Don't forget to update the UML (<code>Hazelnupp.vpp</code>)! The (free) modelling software used is <a href="https://www.visual-paradigm.com">Visual Paradigm</a>. <br />
</p>
<p>Any code added must match the existing style!</p><ul>
@@ -353,7 +370,7 @@ Contributing</h1>
<li>Classifiers and Functions/Methods begin with an uppercase initial</li>
<li>Classifiers are camel-case</li>
<li>Classifiers get documented via <code>/** */</code> for doxygen. See existing classifiers</li>
<li>Members (methods and objects) get documented via <code>//!</code> for doxygen. See existing definitions.</li>
<li>Members (methods and objects) get documented via <code>//!</code> for doxygen. See existing definitions</li>
<li><code>{</code> always gets a new line</li>
<li>Enumerations (and their values) and macros are all-upper case snake-case</li>
<li>No <code>using namespace std</code></li>
@@ -361,7 +378,7 @@ Contributing</h1>
<li>Files outside the project (like STL) have to be included with <code>#include &lt;&gt;</code>. Not <code>""</code></li>
</ul>
<p><span id="license"></span> </p>
<h1><a class="anchor" id="autotoc_md16"></a>
<h1><a class="anchor" id="autotoc_md17"></a>
LICENSE</h1>
<div class="fragment"><div class="line">Copyright (c) 2021, Leon Etienne</div>
<div class="line"> </div>
@@ -374,21 +391,20 @@ LICENSE</h1>
</div><!-- fragment --> </div></div><!-- PageDoc -->
</div><!-- contents -->
<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_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_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#l00029">HazelnuppException.h:29</a></div></div>
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html">Hazelnp::Hazelnupp</a></div><div class="ttdoc">The main class to interface with.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8h_source.html#l00011">Hazelnupp.h:11</a></div></div>
<div class="ttc" id="amain_8cpp_html_a3c04138a5bfe5d72780bb7e82a18e627"><div class="ttname"><a href="main_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a></div><div class="ttdeci">int main(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00007">main.cpp:7</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_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#l00334">Hazelnupp.cpp:334</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="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_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#l00567">Hazelnupp.cpp:567</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_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_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#l00598">Hazelnupp.cpp:598</a></div></div>
<div class="ttc" id="astructHazelnp_1_1ParamConstraint_html_a7df61dbc8dbaff4bc596fdf2c0532d5b"><div class="ttname"><a href="structHazelnp_1_1ParamConstraint.html#a7df61dbc8dbaff4bc596fdf2c0532d5b">Hazelnp::ParamConstraint::TypeSafety</a></div><div class="ttdeci">static ParamConstraint TypeSafety(DATA_TYPE requiredType, bool constrainType=true)</div><div class="ttdoc">Constructs a type-safety constraint.</div><div class="ttdef"><b>Definition:</b> <a href="ParamConstraint_8h_source.html#l00026">ParamConstraint.h:26</a></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="astructHazelnp_1_1ParamConstraint_html_a926e12fcb2fd0d031452c4bcc950bd6c"><div class="ttname"><a href="structHazelnp_1_1ParamConstraint.html#a926e12fcb2fd0d031452c4bcc950bd6c">Hazelnp::ParamConstraint::Require</a></div><div class="ttdeci">static ParamConstraint Require(const std::vector&lt; std::string &gt; &amp;defaultValue={}, bool required=true)</div><div class="ttdoc">Constructs a require constraint.</div><div class="ttdef"><b>Definition:</b> <a href="ParamConstraint_8h_source.html#l00016">ParamConstraint.h:16</a></div></div>
<div class="ttc" id="astructHazelnp_1_1ParamConstraint_html_a15a860c63388ea3164e3d7b35b352e9a"><div class="ttname"><a href="structHazelnp_1_1ParamConstraint.html#a15a860c63388ea3164e3d7b35b352e9a">Hazelnp::ParamConstraint::TypeSafety</a></div><div class="ttdeci">static ParamConstraint TypeSafety(DATA_TYPE wantedType, bool constrainType=true)</div><div class="ttdoc">Constructs a type-safety constraint.</div><div class="ttdef"><b>Definition:</b> <a href="ParamConstraint_8h_source.html#l00026">ParamConstraint.h:26</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Jun 5 2021 12:40:12 for Leonetienne/Hazelnupp by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Sun Jun 6 2021 15:32:08 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>