Built doxygen
This commit is contained in:
@@ -125,10 +125,11 @@ What's the concept?</h1>
|
||||
<h1><a class="anchor" id="autotoc_md4"></a>
|
||||
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 "<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>"</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">{</div>
|
||||
<div class="line"> Hazelnupp args(argc, argv);</div>
|
||||
<div class="line"> <a class="code" href="classHazelnp_1_1Hazelnupp.html">Hazelnupp</a> args(argc, argv);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="keywordflow">if</span> (args.HasParam(<span class="stringliteral">"--force"</span>))</div>
|
||||
<div class="line"> <span class="comment">// do forced</span></div>
|
||||
@@ -138,19 +139,20 @@ Minimal working example</h1>
|
||||
<div class="line"> <span class="keywordflow">return</span> 0;</div>
|
||||
<div class="line">}</div>
|
||||
</div><!-- fragment --><p>Looks super easy! But what about actual values? </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>"</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">{</div>
|
||||
<div class="line"> Hazelnupp args(argc, argv);</div>
|
||||
<div class="line"> <a class="code" href="classHazelnp_1_1Hazelnupp.html">Hazelnupp</a> args(argc, argv);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// Either check via HasParam(), or do a try-catch</span></div>
|
||||
<div class="line"> <span class="keywordflow">try</span></div>
|
||||
<div class="line"> {</div>
|
||||
<div class="line"> <span class="keywordtype">int</span> myInt = args[<span class="stringliteral">"--my-int"</span>].GetInt32();</div>
|
||||
<div class="line"> <span class="keywordtype">double</span> myInt = args[<span class="stringliteral">"--my-float"</span>].GetFloat32();</div>
|
||||
<div class="line"> <span class="keywordtype">double</span> myFlt = args[<span class="stringliteral">"--my-float"</span>].GetFloat32();</div>
|
||||
<div class="line"> std::string myStr = args[<span class="stringliteral">"--my-string"</span>].GetString();</div>
|
||||
<div class="line"> }</div>
|
||||
<div class="line"> <span class="keywordflow">catch</span> (HazelnuppInvalidKeyException&)</div>
|
||||
<div class="line"> <span class="keywordflow">catch</span> (<a class="code" href="classHazelnp_1_1HazelnuppInvalidKeyException.html">HazelnuppInvalidKeyException</a>&)</div>
|
||||
<div class="line"> {</div>
|
||||
<div class="line"> <span class="keywordflow">return</span> -1;</div>
|
||||
<div class="line"> }</div>
|
||||
@@ -158,10 +160,11 @@ Minimal working example</h1>
|
||||
<div class="line"> <span class="keywordflow">return</span> 0;</div>
|
||||
<div class="line">}</div>
|
||||
</div><!-- fragment --><p>What about lists? </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>"</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">{</div>
|
||||
<div class="line"> Hazelnupp args(argc, argv);</div>
|
||||
<div class="line"> <a class="code" href="classHazelnp_1_1Hazelnupp.html">Hazelnupp</a> args(argc, argv);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="keyword">const</span> <span class="keyword">auto</span>& myList = args[<span class="stringliteral">"--my-list"</span>].GetList(); <span class="comment">// std::vector<Value*></span></div>
|
||||
<div class="line"> </div>
|
||||
@@ -176,18 +179,19 @@ Minimal working example</h1>
|
||||
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md5"></a>
|
||||
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 "<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>"</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">{</div>
|
||||
<div class="line"> Hazelnupp args;</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 abbreviations</span></div>
|
||||
<div class="line"> args.RegisterAbbreviation(<span class="stringliteral">"-f"</span>, <span class="stringliteral">"--force"</span>);</div>
|
||||
<div class="line"> args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#abf1e0ebf0207ca2327fcde81f7372124">RegisterAbbreviation</a>(<span class="stringliteral">"-f"</span>, <span class="stringliteral">"--force"</span>);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// Parse</span></div>
|
||||
<div class="line"> args.Parse(argc, argv);</div>
|
||||
<div class="line"> args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#a1ccb88faca1a8deb77161888479c300b">Parse</a>(argc, argv);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="keywordflow">if</span> (args.HasParam(<span class="stringliteral">"--force"</span>)) <span class="comment">// This key will be present, even if the user passed '-f'</span></div>
|
||||
<div class="line"> <span class="keywordflow">if</span> (args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040">HasParam</a>(<span class="stringliteral">"--force"</span>)) <span class="comment">// This key will be present, even if the user passed '-f'</span></div>
|
||||
<div class="line"> <span class="comment">// do forced</span></div>
|
||||
<div class="line"> <span class="keywordflow">else</span></div>
|
||||
<div class="line"> <span class="comment">// be gentle</span></div>
|
||||
@@ -208,19 +212,20 @@ Requiring data</h2>
|
||||
<li>If a parameter is not present, and has no default value, an exception will be thrown.</li>
|
||||
</ul>
|
||||
<p>Minimal working example: </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>"</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">{</div>
|
||||
<div class="line"> Hazelnupp args;</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.RegisterConstraints({</div>
|
||||
<div class="line"> ParamConstraint::Require(<span class="stringliteral">"--this-is-required"</span>), <span class="comment">// This missing throws an exception</span></div>
|
||||
<div class="line"> ParamConstraint::Require(<span class="stringliteral">"--also-required-but-defaulted"</span>, {<span class="stringliteral">"122"</span>}), <span class="comment">// This will default to 122</span></div>
|
||||
<div class="line"> args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#a8a3331836b9ea1f920e77f6d332019d5">RegisterConstraints</a>({</div>
|
||||
<div class="line"> <a class="code" href="structHazelnp_1_1ParamConstraint.html#afbcc75c428381ab3a292d3f55945eb32">ParamConstraint::Require</a>(<span class="stringliteral">"--this-is-required"</span>), <span class="comment">// This missing throws an exception</span></div>
|
||||
<div class="line"> <a class="code" href="structHazelnp_1_1ParamConstraint.html#afbcc75c428381ab3a292d3f55945eb32">ParamConstraint::Require</a>(<span class="stringliteral">"--also-required-but-defaulted"</span>, {<span class="stringliteral">"122"</span>}), <span class="comment">// This will default to 122</span></div>
|
||||
<div class="line"> });</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// Parse</span></div>
|
||||
<div class="line"> args.Parse(argc, argv);</div>
|
||||
<div class="line"> args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#a1ccb88faca1a8deb77161888479c300b">Parse</a>(argc, argv);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="keywordflow">return</span> 0;</div>
|
||||
<div class="line">}</div>
|
||||
@@ -240,18 +245,19 @@ Type safety</h2>
|
||||
<p>The conversions <code>*->list</code> just create a list with a single entry (except for <code>void->list</code> which produces an empty list). <br />
|
||||
The <code>*->void</code> conversions just drop their value.</p>
|
||||
<p>Minimal working example: </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="Hazelnupp_8h.html">Hazelnupp.h</a>"</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">{</div>
|
||||
<div class="line"> Hazelnupp args;</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.RegisterConstraints({</div>
|
||||
<div class="line"> ParamConstraint::TypeSafety(<span class="stringliteral">"--this-must-be-int"</span>, DATA_TYPE::INT)</div>
|
||||
<div class="line"> args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#a8a3331836b9ea1f920e77f6d332019d5">RegisterConstraints</a>({</div>
|
||||
<div class="line"> <a class="code" href="structHazelnp_1_1ParamConstraint.html#ab85210bb37bbace962ff08fcccdafaf2">ParamConstraint::TypeSafety</a>(<span class="stringliteral">"--this-must-be-int"</span>, <a class="code" href="namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa53f93baa3057821107c750323892fa92">DATA_TYPE::INT</a>)</div>
|
||||
<div class="line"> });</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="comment">// Parse</span></div>
|
||||
<div class="line"> args.Parse(argc, argv);</div>
|
||||
<div class="line"> args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#a1ccb88faca1a8deb77161888479c300b">Parse</a>(argc, argv);</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"> <span class="keywordflow">return</span> 0;</div>
|
||||
<div class="line">}</div>
|
||||
@@ -264,7 +270,7 @@ Type safety</h2>
|
||||
<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({pc});</div>
|
||||
<div class="line">args.<a class="code" href="classHazelnp_1_1Hazelnupp.html#a8a3331836b9ea1f920e77f6d332019d5">RegisterConstraints</a>({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>
|
||||
<h1><a class="anchor" id="autotoc_md10"></a>
|
||||
More examples?</h1>
|
||||
@@ -295,11 +301,21 @@ LICENSE</h1>
|
||||
<div class="line">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</div>
|
||||
</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#l00003">DataType.h:3</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"><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_a8b79a79d40420ae748c108c691111040"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040">Hazelnp::Hazelnupp::HasParam</a></div><div class="ttdeci">bool HasParam(const std::string &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#l00153">Hazelnupp.cpp:153</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#l00035">Hazelnupp.cpp:35</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 &abbrev, const std::string &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#l00332">Hazelnupp.cpp:332</a></div></div>
|
||||
<div class="ttc" id="aclassHazelnp_1_1Hazelnupp_html_a8a3331836b9ea1f920e77f6d332019d5"><div class="ttname"><a href="classHazelnp_1_1Hazelnupp.html#a8a3331836b9ea1f920e77f6d332019d5">Hazelnp::Hazelnupp::RegisterConstraints</a></div><div class="ttdeci">void RegisterConstraints(const std::vector< ParamConstraint > &constraints)</div><div class="ttdoc">Will register parameter constraints.</div><div class="ttdef"><b>Definition:</b> <a href="Hazelnupp_8cpp_source.html#l00354">Hazelnupp.cpp:354</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="astructHazelnp_1_1ParamConstraint_html_afbcc75c428381ab3a292d3f55945eb32"><div class="ttname"><a href="structHazelnp_1_1ParamConstraint.html#afbcc75c428381ab3a292d3f55945eb32">Hazelnp::ParamConstraint::Require</a></div><div class="ttdeci">static ParamConstraint Require(const std::string &key, const std::vector< std::string > &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="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_ab85210bb37bbace962ff08fcccdafaf2"><div class="ttname"><a href="structHazelnp_1_1ParamConstraint.html#ab85210bb37bbace962ff08fcccdafaf2">Hazelnp::ParamConstraint::TypeSafety</a></div><div class="ttdeci">static ParamConstraint TypeSafety(const std::string &key, 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#l00027">ParamConstraint.h:27</a></div></div>
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Thu Jun 3 2021 13:42:55 for Leonetienne/Hazelnupp by  <a href="http://www.doxygen.org/index.html">
|
||||
Generated on Thu Jun 3 2021 16:39:51 for Leonetienne/Hazelnupp by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.17
|
||||
</small></address>
|
||||
|
Reference in New Issue
Block a user