2021-06-03 12:22:37 +02:00
<!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&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&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 >   < span class = "preprocessor" > #include " < a class = "code" href = "Hazelnupp_8h.html" > Hazelnupp.h</ a > " </ span ></ div >
< div class = "line" >< a name = "l00002" ></ a >< span class = "lineno" > 2</ span >   < span class = "preprocessor" > #include " < a class = "code" href = "VoidValue_8h.html" > VoidValue.h</ a > " </ span ></ div >
< div class = "line" >< a name = "l00003" ></ a >< span class = "lineno" > 3</ span >   < span class = "preprocessor" > #include " < a class = "code" href = "IntValue_8h.html" > IntValue.h</ a > " </ span ></ div >
< div class = "line" >< a name = "l00004" ></ a >< span class = "lineno" > 4</ span >   < span class = "preprocessor" > #include " < a class = "code" href = "FloatValue_8h.html" > FloatValue.h</ a > " </ span ></ div >
< div class = "line" >< a name = "l00005" ></ a >< span class = "lineno" > 5</ span >   < span class = "preprocessor" > #include " < a class = "code" href = "StringValue_8h.html" > StringValue.h</ a > " </ span ></ div >
< div class = "line" >< a name = "l00006" ></ a >< span class = "lineno" > 6</ span >   < span class = "preprocessor" > #include " < a class = "code" href = "ListValue_8h.html" > ListValue.h</ a > " </ span ></ div >
< div class = "line" >< a name = "l00007" ></ a >< span class = "lineno" > 7</ span >   < span class = "preprocessor" > #include " < a class = "code" href = "HazelnuppException_8h.html" > HazelnuppException.h</ a > " </ span ></ div >
< div class = "line" >< a name = "l00008" ></ a >< span class = "lineno" > 8</ span >   < span class = "preprocessor" > #include " < a class = "code" href = "StringTools_8h.html" > StringTools.h</ a > " </ span ></ div >
< div class = "line" >< a name = "l00009" ></ a >< span class = "lineno" > 9</ span >   < span class = "preprocessor" > #include < iostream> </ span ></ div >
< div class = "line" >< a name = "l00010" ></ a >< span class = "lineno" > 10</ span >   < span class = "preprocessor" > #include < cstdlib> </ span ></ div >
< div class = "line" >< a name = "l00011" ></ a >< span class = "lineno" > 11</ span >   </ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00012" ></ a >< span class = "lineno" > 12</ span >   < span class = "keyword" > using namespace </ span >< a class = "code" href = "namespaceHazelnp.html" > Hazelnp</ a > ;</ div >
< div class = "line" >< a name = "l00013" ></ a >< span class = "lineno" > 13</ span >   </ div >
< div class = "line" >< a name = "l00014" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a20ac0ebcfd4df7f320a7bbcaeed6e54d" > 14</ a ></ span >   < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a20ac0ebcfd4df7f320a7bbcaeed6e54d" > Hazelnupp::Hazelnupp</ a > ()</ div >
< div class = "line" >< a name = "l00015" ></ a >< span class = "lineno" > 15</ span >   {</ div >
< div class = "line" >< a name = "l00016" ></ a >< span class = "lineno" > 16</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00017" ></ a >< span class = "lineno" > 17</ span >   }</ div >
< div class = "line" >< a name = "l00018" ></ a >< span class = "lineno" > 18</ span >   </ div >
< div class = "line" >< a name = "l00019" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a6d14c60f03b571f5f794c3549e75e435" > 19</ a ></ span >   < 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 = "l00020" ></ a >< span class = "lineno" > 20</ span >   {</ div >
< div class = "line" >< a name = "l00021" ></ a >< span class = "lineno" > 21</ span >   < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a1ccb88faca1a8deb77161888479c300b" > Parse</ a > (argc, argv);</ div >
< div class = "line" >< a name = "l00022" ></ a >< span class = "lineno" > 22</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00023" ></ a >< span class = "lineno" > 23</ span >   }</ div >
< div class = "line" >< a name = "l00024" ></ a >< span class = "lineno" > 24</ span >   </ div >
< div class = "line" >< a name = "l00025" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a25f8810d24d647b6a57e2dd00ead42be" > 25</ a ></ span >   < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a25f8810d24d647b6a57e2dd00ead42be" > Hazelnupp::~Hazelnupp</ a > ()</ div >
< div class = "line" >< a name = "l00026" ></ a >< span class = "lineno" > 26</ span >   {</ div >
< div class = "line" >< a name = "l00027" ></ a >< span class = "lineno" > 27</ span >   < span class = "keywordflow" > for</ span > (< span class = "keyword" > auto</ span > & it : parameters)</ div >
< div class = "line" >< a name = "l00028" ></ a >< span class = "lineno" > 28</ span >   < span class = "keyword" > delete</ span > it.second;</ div >
2021-06-03 12:22:37 +02:00
< div class = "line" >< a name = "l00029" ></ a >< span class = "lineno" > 29</ span >   </ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00030" ></ a >< span class = "lineno" > 30</ span >   parameters.clear();</ div >
< div class = "line" >< a name = "l00031" ></ a >< span class = "lineno" > 31</ span >   </ div >
< div class = "line" >< a name = "l00032" ></ a >< span class = "lineno" > 32</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00033" ></ a >< span class = "lineno" > 33</ span >   }</ div >
< div class = "line" >< a name = "l00034" ></ a >< span class = "lineno" > 34</ span >   </ div >
< div class = "line" >< a name = "l00035" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a1ccb88faca1a8deb77161888479c300b" > 35</ a ></ span >   < 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 = "l00036" ></ a >< span class = "lineno" > 36</ span >   {</ div >
< div class = "line" >< a name = "l00037" ></ a >< span class = "lineno" > 37</ span >   < span class = "keywordflow" > try</ span ></ div >
< div class = "line" >< a name = "l00038" ></ a >< span class = "lineno" > 38</ span >   {</ div >
< div class = "line" >< a name = "l00039" ></ a >< span class = "lineno" > 39</ span >   < span class = "comment" > // Populate raw arguments</ span ></ div >
< div class = "line" >< a name = "l00040" ></ a >< span class = "lineno" > 40</ span >   PopulateRawArgs(argc, argv);</ div >
< div class = "line" >< a name = "l00041" ></ a >< span class = "lineno" > 41</ span >   </ div >
< div class = "line" >< a name = "l00042" ></ a >< span class = "lineno" > 42</ span >   < span class = "comment" > // Expand abbreviations</ span ></ div >
< div class = "line" >< a name = "l00043" ></ a >< span class = "lineno" > 43</ span >   ExpandAbbreviations();</ div >
2021-06-03 12:22:37 +02:00
< div class = "line" >< a name = "l00044" ></ a >< span class = "lineno" > 44</ span >   </ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00045" ></ a >< span class = "lineno" > 45</ span >   executableName = std::string(rawArgs[0]);</ div >
< div class = "line" >< a name = "l00046" ></ a >< span class = "lineno" > 46</ span >   </ div >
< div class = "line" >< a name = "l00047" ></ a >< span class = "lineno" > 47</ span >   std::size_t i = 1;</ div >
< div class = "line" >< a name = "l00048" ></ a >< span class = "lineno" > 48</ span >   < span class = "keywordflow" > while</ span > (i < rawArgs.size())</ div >
< div class = "line" >< a name = "l00049" ></ a >< span class = "lineno" > 49</ span >   {</ div >
< div class = "line" >< a name = "l00050" ></ a >< span class = "lineno" > 50</ span >   < span class = "keywordflow" > if</ span > ((rawArgs[i].length() > 2) && (rawArgs[i].substr(0, 2) == < span class = "stringliteral" > " --" </ span > ))</ div >
< div class = "line" >< a name = "l00051" ></ a >< span class = "lineno" > 51</ span >   {</ div >
< div class = "line" >< a name = "l00052" ></ a >< span class = "lineno" > 52</ span >   < a class = "code" href = "classHazelnp_1_1Parameter.html" > Parameter</ a > * param = < span class = "keyword" > nullptr</ span > ;</ div >
< div class = "line" >< a name = "l00053" ></ a >< span class = "lineno" > 53</ span >   i = ParseNextParameter(i, param);</ div >
< div class = "line" >< a name = "l00054" ></ a >< span class = "lineno" > 54</ span >   </ div >
< div class = "line" >< a name = "l00055" ></ a >< span class = "lineno" > 55</ span >   parameters.insert(std::pair< std::string, Parameter*> (param-> < a class = "code" href = "classHazelnp_1_1Parameter.html#a7acd68ce06eec06ab286b1a062f9c8d6" > Key</ a > (), param));</ div >
< div class = "line" >< a name = "l00056" ></ a >< span class = "lineno" > 56</ span >   }</ div >
< div class = "line" >< a name = "l00057" ></ a >< span class = "lineno" > 57</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00058" ></ a >< span class = "lineno" > 58</ span >   i++;</ div >
< div class = "line" >< a name = "l00059" ></ a >< span class = "lineno" > 59</ span >   }</ div >
< div class = "line" >< a name = "l00060" ></ a >< span class = "lineno" > 60</ span >   </ div >
< div class = "line" >< a name = "l00061" ></ a >< span class = "lineno" > 61</ span >   < span class = "comment" > // Apply constraints such as default values, and required parameters.</ span ></ div >
< div class = "line" >< a name = "l00062" ></ a >< span class = "lineno" > 62</ span >   < span class = "comment" > // Types have already been enforced.</ span ></ div >
2021-06-04 02:30:58 +02:00
< div class = "line" >< a name = "l00063" ></ a >< span class = "lineno" > 63</ span >   < span class = "comment" > // Dont apply constraints when we are just printind the param docs</ span ></ div >
< div class = "line" >< a name = "l00064" ></ a >< span class = "lineno" > 64</ span >   < span class = "keywordflow" > if</ span > ((!catchHelp) || (!< a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040" > HasParam</ a > (< span class = "stringliteral" > " --help" </ span > )))</ div >
< div class = "line" >< a name = "l00065" ></ a >< span class = "lineno" > 65</ span >   ApplyConstraints();</ div >
< div class = "line" >< a name = "l00066" ></ a >< span class = "lineno" > 66</ span >   }</ div >
< div class = "line" >< a name = "l00067" ></ a >< span class = "lineno" > 67</ span >   < span class = "keywordflow" > catch</ span > (< span class = "keyword" > const</ span > < a class = "code" href = "classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html" > HazelnuppConstraintTypeMissmatch</ a > & hctm)</ div >
< div class = "line" >< a name = "l00068" ></ a >< span class = "lineno" > 68</ span >   {</ div >
< div class = "line" >< a name = "l00069" ></ a >< span class = "lineno" > 69</ span >   < span class = "keywordflow" > if</ span > (crashOnFail)</ div >
< div class = "line" >< a name = "l00070" ></ a >< span class = "lineno" > 70</ span >   {</ div >
< div class = "line" >< a name = "l00071" ></ a >< span class = "lineno" > 71</ span >   std::cout << < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a7b1bf5e700d8a0d8e90c5750e54749de" > GenerateDocumentation</ a > () << std::endl;</ div >
< div class = "line" >< a name = "l00072" ></ a >< span class = "lineno" > 72</ span >   std::cerr << < span class = "stringliteral" > " Fatal error: Command-line parameter value-type mismatch at \"" </ span > << hctm.< a class = "code" href = "classHazelnp_1_1HazelnuppException.html#aa86c415a0f2b4ea5f11892145d1ea83e" > What</ a > () << < span class = "stringliteral" > " \" !" </ span > ;</ div >
< div class = "line" >< a name = "l00073" ></ a >< span class = "lineno" > 73</ span >   quick_exit(-1009);</ div >
< div class = "line" >< a name = "l00074" ></ a >< span class = "lineno" > 74</ span >   }</ div >
< div class = "line" >< a name = "l00075" ></ a >< span class = "lineno" > 75</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00076" ></ a >< span class = "lineno" > 76</ span >   < span class = "keywordflow" > throw</ span > hctm; < span class = "comment" > // yeet</ span ></ div >
< div class = "line" >< a name = "l00077" ></ a >< span class = "lineno" > 77</ span >   }</ div >
< div class = "line" >< a name = "l00078" ></ a >< span class = "lineno" > 78</ span >   < span class = "keywordflow" > catch</ span > (< span class = "keyword" > const</ span > < a class = "code" href = "classHazelnp_1_1HazelnuppConstraintMissingValue.html" > HazelnuppConstraintMissingValue</ a > & hctm)</ div >
< div class = "line" >< a name = "l00079" ></ a >< span class = "lineno" > 79</ span >   {</ div >
< div class = "line" >< a name = "l00080" ></ a >< span class = "lineno" > 80</ span >   < span class = "keywordflow" > if</ span > (crashOnFail)</ div >
< div class = "line" >< a name = "l00081" ></ a >< span class = "lineno" > 81</ span >   {</ div >
< div class = "line" >< a name = "l00082" ></ a >< span class = "lineno" > 82</ span >   std::cout << < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a7b1bf5e700d8a0d8e90c5750e54749de" > GenerateDocumentation</ a > () << std::endl;</ div >
< div class = "line" >< a name = "l00083" ></ a >< span class = "lineno" > 83</ span >   std::cerr << < span class = "stringliteral" > " Fatal error: Missing required command-line parameter \"" </ span > << hctm.< a class = "code" href = "classHazelnp_1_1HazelnuppException.html#aa86c415a0f2b4ea5f11892145d1ea83e" > What</ a > () << < span class = "stringliteral" > " \" !" </ span > ;</ div >
< div class = "line" >< a name = "l00084" ></ a >< span class = "lineno" > 84</ span >   quick_exit(-1010);</ div >
< div class = "line" >< a name = "l00085" ></ a >< span class = "lineno" > 85</ span >   }</ div >
< div class = "line" >< a name = "l00086" ></ a >< span class = "lineno" > 86</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00087" ></ a >< span class = "lineno" > 87</ span >   < span class = "keywordflow" > throw</ span > hctm; < span class = "comment" > // yeet</ span ></ div >
< div class = "line" >< a name = "l00088" ></ a >< span class = "lineno" > 88</ span >   }</ div >
< div class = "line" >< a name = "l00089" ></ a >< span class = "lineno" > 89</ span >   </ div >
< div class = "line" >< a name = "l00090" ></ a >< span class = "lineno" > 90</ span >   < span class = "comment" > // Catch --help parameter</ span ></ div >
< div class = "line" >< a name = "l00091" ></ a >< span class = "lineno" > 91</ span >   < span class = "keywordflow" > if</ span > ((catchHelp) && (< a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040" > HasParam</ a > (< span class = "stringliteral" > " --help" </ span > )))</ div >
< div class = "line" >< a name = "l00092" ></ a >< span class = "lineno" > 92</ span >   {</ div >
< div class = "line" >< a name = "l00093" ></ a >< span class = "lineno" > 93</ span >   std::cout << < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a7b1bf5e700d8a0d8e90c5750e54749de" > GenerateDocumentation</ a > () << std::endl;</ div >
< div class = "line" >< a name = "l00094" ></ a >< span class = "lineno" > 94</ span >   quick_exit(0);</ div >
< div class = "line" >< a name = "l00095" ></ a >< span class = "lineno" > 95</ span >   }</ div >
< div class = "line" >< a name = "l00096" ></ a >< span class = "lineno" > 96</ span >   </ div >
< div class = "line" >< a name = "l00097" ></ a >< span class = "lineno" > 97</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00098" ></ a >< span class = "lineno" > 98</ span >   }</ div >
< div class = "line" >< a name = "l00099" ></ a >< span class = "lineno" > 99</ span >   </ div >
< div class = "line" >< a name = "l00100" ></ a >< span class = "lineno" > 100</ span >   std::size_t Hazelnupp::ParseNextParameter(< span class = "keyword" > const</ span > std::size_t parIndex, < a class = "code" href = "classHazelnp_1_1Parameter.html" > Parameter</ a > *& out_Par)</ div >
< div class = "line" >< a name = "l00101" ></ a >< span class = "lineno" > 101</ span >   {</ div >
< div class = "line" >< a name = "l00102" ></ a >< span class = "lineno" > 102</ span >   std::size_t i = parIndex;</ div >
< div class = "line" >< a name = "l00103" ></ a >< span class = "lineno" > 103</ span >   < span class = "keyword" > const</ span > std::string key = rawArgs[parIndex];</ div >
< div class = "line" >< a name = "l00104" ></ a >< span class = "lineno" > 104</ span >   std::vector< std::string> values;</ div >
< div class = "line" >< a name = "l00105" ></ a >< span class = "lineno" > 105</ span >   </ div >
< div class = "line" >< a name = "l00106" ></ a >< span class = "lineno" > 106</ span >   < span class = "comment" > // Get values</ span ></ div >
< div class = "line" >< a name = "l00107" ></ a >< span class = "lineno" > 107</ span >   < span class = "keywordflow" > for</ span > (i++; i < rawArgs.size(); i++)</ div >
< div class = "line" >< a name = "l00108" ></ a >< span class = "lineno" > 108</ span >   < span class = "comment" > // If not another parameter</ span ></ div >
< div class = "line" >< a name = "l00109" ></ a >< span class = "lineno" > 109</ span >   < span class = "keywordflow" > if</ span > ((rawArgs[i].length() < 2) || (rawArgs[i].substr(0, 2) != < span class = "stringliteral" > " --" </ span > ))</ div >
< div class = "line" >< a name = "l00110" ></ a >< span class = "lineno" > 110</ span >   values.emplace_back(rawArgs[i]);</ div >
< div class = "line" >< a name = "l00111" ></ a >< span class = "lineno" > 111</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00112" ></ a >< span class = "lineno" > 112</ span >   {</ div >
< div class = "line" >< a name = "l00113" ></ a >< span class = "lineno" > 113</ span >   < span class = "keywordflow" > break</ span > ;</ div >
< div class = "line" >< a name = "l00114" ></ a >< span class = "lineno" > 114</ span >   }</ div >
< div class = "line" >< a name = "l00115" ></ a >< span class = "lineno" > 115</ span >   </ div >
< div class = "line" >< a name = "l00116" ></ a >< span class = "lineno" > 116</ span >   < span class = "comment" > // Fetch constraint info</ span ></ div >
< div class = "line" >< a name = "l00117" ></ a >< span class = "lineno" > 117</ span >   < span class = "keyword" > const</ span > < a class = "code" href = "structHazelnp_1_1ParamConstraint.html" > ParamConstraint</ a > * pcn = GetConstraintForKey(key);</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00118" ></ a >< span class = "lineno" > 118</ span >   </ div >
2021-06-04 02:30:58 +02:00
< div class = "line" >< a name = "l00119" ></ a >< span class = "lineno" > 119</ span >   < a class = "code" href = "classHazelnp_1_1Value.html" > Value</ a > * parsedVal = ParseValue(values, pcn);</ div >
< div class = "line" >< a name = "l00120" ></ a >< span class = "lineno" > 120</ span >   < span class = "keywordflow" > if</ span > (parsedVal != < span class = "keyword" > nullptr</ span > )</ div >
< div class = "line" >< a name = "l00121" ></ a >< span class = "lineno" > 121</ span >   {</ div >
< div class = "line" >< a name = "l00122" ></ a >< span class = "lineno" > 122</ span >   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 = "l00123" ></ a >< span class = "lineno" > 123</ span >   </ div >
< div class = "line" >< a name = "l00124" ></ a >< span class = "lineno" > 124</ span >   < span class = "keyword" > delete</ span > parsedVal;</ div >
< div class = "line" >< a name = "l00125" ></ a >< span class = "lineno" > 125</ span >   parsedVal = < span class = "keyword" > nullptr</ span > ;</ div >
< div class = "line" >< a name = "l00126" ></ a >< span class = "lineno" > 126</ span >   }</ div >
< div class = "line" >< a name = "l00127" ></ a >< span class = "lineno" > 127</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00128" ></ a >< span class = "lineno" > 128</ span >   < span class = "keywordflow" > throw</ span > std::runtime_error(< span class = "stringliteral" > " Unable to parse parameter!" </ span > );</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00129" ></ a >< span class = "lineno" > 129</ span >   </ div >
2021-06-04 02:30:58 +02:00
< div class = "line" >< a name = "l00130" ></ a >< span class = "lineno" > 130</ span >   < span class = "keywordflow" > return</ span > i;</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00131" ></ a >< span class = "lineno" > 131</ span >   }</ div >
< div class = "line" >< a name = "l00132" ></ a >< span class = "lineno" > 132</ span >   </ div >
2021-06-04 02:30:58 +02:00
< div class = "line" >< a name = "l00133" ></ a >< span class = "lineno" > 133</ span >   < 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 >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00134" ></ a >< span class = "lineno" > 134</ span >   {</ div >
2021-06-04 02:30:58 +02:00
< div class = "line" >< a name = "l00135" ></ a >< span class = "lineno" > 135</ span >   rawArgs.clear();</ div >
< div class = "line" >< a name = "l00136" ></ a >< span class = "lineno" > 136</ span >   rawArgs.reserve(argc);</ div >
< div class = "line" >< a name = "l00137" ></ a >< span class = "lineno" > 137</ span >   </ div >
< div class = "line" >< a name = "l00138" ></ a >< span class = "lineno" > 138</ span >   < span class = "keywordflow" > for</ span > (< span class = "keywordtype" > int</ span > i = 0; i < argc; i++)</ div >
< div class = "line" >< a name = "l00139" ></ a >< span class = "lineno" > 139</ span >   rawArgs.emplace_back(std::string(argv[i]));</ div >
< div class = "line" >< a name = "l00140" ></ a >< span class = "lineno" > 140</ span >   </ div >
< div class = "line" >< a name = "l00141" ></ a >< span class = "lineno" > 141</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00142" ></ a >< span class = "lineno" > 142</ span >   }</ div >
< div class = "line" >< a name = "l00143" ></ a >< span class = "lineno" > 143</ span >   </ div >
< div class = "line" >< a name = "l00144" ></ a >< span class = "lineno" > 144</ span >   < span class = "keywordtype" > void</ span > Hazelnupp::ExpandAbbreviations()</ div >
< div class = "line" >< a name = "l00145" ></ a >< span class = "lineno" > 145</ span >   {</ div >
< div class = "line" >< a name = "l00146" ></ a >< span class = "lineno" > 146</ span >   < span class = "comment" > // Abort if no abbreviations</ span ></ div >
< div class = "line" >< a name = "l00147" ></ a >< span class = "lineno" > 147</ span >   < span class = "keywordflow" > if</ span > (abbreviations.size() == 0)</ div >
< div class = "line" >< a name = "l00148" ></ a >< span class = "lineno" > 148</ span >   < span class = "keywordflow" > return</ span > ;</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00149" ></ a >< span class = "lineno" > 149</ span >   </ div >
2021-06-04 02:30:58 +02:00
< div class = "line" >< a name = "l00150" ></ a >< span class = "lineno" > 150</ span >   < span class = "keywordflow" > for</ span > (std::string& arg : rawArgs)</ div >
< div class = "line" >< a name = "l00151" ></ a >< span class = "lineno" > 151</ span >   {</ div >
< div class = "line" >< a name = "l00152" ></ a >< span class = "lineno" > 152</ span >   < span class = "comment" > // Is arg registered as an abbreviation?</ span ></ div >
< div class = "line" >< a name = "l00153" ></ a >< span class = "lineno" > 153</ span >   < span class = "keyword" > auto</ span > abbr = abbreviations.find(arg);</ div >
< div class = "line" >< a name = "l00154" ></ a >< span class = "lineno" > 154</ span >   < span class = "keywordflow" > if</ span > (abbr != abbreviations.end())</ div >
< div class = "line" >< a name = "l00155" ></ a >< span class = "lineno" > 155</ span >   {</ div >
< div class = "line" >< a name = "l00156" ></ a >< span class = "lineno" > 156</ span >   < span class = "comment" > // Yes: replace arg with the long form</ span ></ div >
< div class = "line" >< a name = "l00157" ></ a >< span class = "lineno" > 157</ span >   arg = abbr-> second;</ div >
< div class = "line" >< a name = "l00158" ></ a >< span class = "lineno" > 158</ span >   }</ div >
< div class = "line" >< a name = "l00159" ></ a >< span class = "lineno" > 159</ span >   }</ div >
< div class = "line" >< a name = "l00160" ></ a >< span class = "lineno" > 160</ span >   </ div >
< div class = "line" >< a name = "l00161" ></ a >< span class = "lineno" > 161</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00162" ></ a >< span class = "lineno" > 162</ span >   }</ div >
< div class = "line" >< a name = "l00163" ></ a >< span class = "lineno" > 163</ span >   </ div >
< div class = "line" >< a name = "l00164" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040" > 164</ a ></ span >   < span class = "keywordtype" > bool</ span > < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040" > Hazelnupp::HasParam</ a > (< span class = "keyword" > const</ span > std::string& key)< span class = "keyword" > const</ span ></ div >
< div class = "line" >< a name = "l00165" ></ a >< span class = "lineno" > 165</ span >   < span class = "keyword" ></ span > {</ div >
< div class = "line" >< a name = "l00166" ></ a >< span class = "lineno" > 166</ span >   < span class = "keywordflow" > return</ span > parameters.find(key) != parameters.end();</ div >
< div class = "line" >< a name = "l00167" ></ a >< span class = "lineno" > 167</ span >   }</ div >
< div class = "line" >< a name = "l00168" ></ a >< span class = "lineno" > 168</ span >   </ div >
< div class = "line" >< a name = "l00169" ></ a >< span class = "lineno" > 169</ span >   < a class = "code" href = "classHazelnp_1_1Value.html" > Value</ a > * Hazelnupp::ParseValue(< span class = "keyword" > const</ span > std::vector< std::string>& values, < span class = "keyword" > const</ span > < a class = "code" href = "structHazelnp_1_1ParamConstraint.html" > ParamConstraint</ a > * constraint)</ div >
< div class = "line" >< a name = "l00170" ></ a >< span class = "lineno" > 170</ span >   {</ div >
< div class = "line" >< a name = "l00171" ></ a >< span class = "lineno" > 171</ span >   < span class = "comment" > // Constraint values</ span ></ div >
< div class = "line" >< a name = "l00172" ></ a >< span class = "lineno" > 172</ span >   < span class = "keyword" > const</ span > < span class = "keywordtype" > bool</ span > constrainType = (constraint != < span class = "keyword" > nullptr</ span > ) && (constraint-> < a class = "code" href = "structHazelnp_1_1ParamConstraint.html#a88a4a4c215723259c71853992d09acac" > constrainType</ a > );</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00173" ></ a >< span class = "lineno" > 173</ span >   </ div >
2021-06-04 02:30:58 +02:00
< div class = "line" >< a name = "l00174" ></ a >< span class = "lineno" > 174</ span >   < span class = "comment" > // Void-type</ span ></ div >
< div class = "line" >< a name = "l00175" ></ a >< span class = "lineno" > 175</ span >   < span class = "keywordflow" > if</ span > (values.size() == 0)</ div >
< div class = "line" >< a name = "l00176" ></ a >< span class = "lineno" > 176</ span >   {</ div >
< div class = "line" >< a name = "l00177" ></ a >< span class = "lineno" > 177</ span >   < span class = "comment" > // Is a list forced via a constraint? If yes, return an empty list</ span ></ div >
< div class = "line" >< a name = "l00178" ></ a >< span class = "lineno" > 178</ span >   < span class = "keywordflow" > if</ span > ((constrainType) && </ div >
< div class = "line" >< a name = "l00179" ></ a >< span class = "lineno" > 179</ span >   (constraint-> < 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 = "l00180" ></ a >< span class = "lineno" > 180</ span >   < 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 = "l00181" ></ a >< span class = "lineno" > 181</ span >   </ div >
< div class = "line" >< a name = "l00182" ></ a >< span class = "lineno" > 182</ span >   < 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 = "l00183" ></ a >< span class = "lineno" > 183</ span >   }</ div >
< div class = "line" >< a name = "l00184" ></ a >< span class = "lineno" > 184</ span >   </ div >
< div class = "line" >< a name = "l00185" ></ a >< span class = "lineno" > 185</ span >   < span class = "comment" > // Force void type by constraint</ span ></ div >
< div class = "line" >< a name = "l00186" ></ a >< span class = "lineno" > 186</ span >   < span class = "keywordflow" > if</ span > ((constrainType) && </ div >
< div class = "line" >< a name = "l00187" ></ a >< span class = "lineno" > 187</ span >   (constraint-> < 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 = "l00188" ></ a >< span class = "lineno" > 188</ span >   {</ div >
< div class = "line" >< a name = "l00189" ></ a >< span class = "lineno" > 189</ span >   < 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 >   }</ div >
< div class = "line" >< a name = "l00191" ></ a >< span class = "lineno" > 191</ span >   </ div >
< div class = "line" >< a name = "l00192" ></ a >< span class = "lineno" > 192</ span >   < span class = "comment" > // List-type</ span ></ div >
< div class = "line" >< a name = "l00193" ></ a >< span class = "lineno" > 193</ span >   < span class = "keywordflow" > else</ span > < span class = "keywordflow" > if</ span > (values.size() > 1)</ div >
< div class = "line" >< a name = "l00194" ></ a >< span class = "lineno" > 194</ span >   {</ div >
< div class = "line" >< a name = "l00195" ></ a >< span class = "lineno" > 195</ span >   < span class = "comment" > // Should the type be something other than list?</ span ></ div >
< div class = "line" >< a name = "l00196" ></ a >< span class = "lineno" > 196</ span >   < span class = "keywordflow" > if</ span > ((constrainType) && </ div >
< div class = "line" >< a name = "l00197" ></ a >< span class = "lineno" > 197</ span >   (constraint-> < 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 = "l00198" ></ a >< span class = "lineno" > 198</ span >   {</ div >
< div class = "line" >< a name = "l00199" ></ a >< span class = "lineno" > 199</ span >   < span class = "keywordflow" > throw</ span > < a class = "code" href = "classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html" > HazelnuppConstraintTypeMissmatch</ a > (values[0] + < span class = "stringliteral" > " " </ span > + values[1]);</ div >
< div class = "line" >< a name = "l00200" ></ a >< span class = "lineno" > 200</ span >   }</ div >
< div class = "line" >< a name = "l00201" ></ a >< span class = "lineno" > 201</ span >   </ div >
< div class = "line" >< a name = "l00202" ></ a >< span class = "lineno" > 202</ span >   < 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 = "l00203" ></ a >< span class = "lineno" > 203</ span >   < span class = "keywordflow" > for</ span > (< span class = "keyword" > const</ span > std::string& val : values)</ div >
< div class = "line" >< a name = "l00204" ></ a >< span class = "lineno" > 204</ span >   {</ div >
< div class = "line" >< a name = "l00205" ></ a >< span class = "lineno" > 205</ span >   < a class = "code" href = "classHazelnp_1_1Value.html" > Value</ a > * tmp = ParseValue({ val });</ div >
< div class = "line" >< a name = "l00206" ></ a >< span class = "lineno" > 206</ span >   newList-> < a class = "code" href = "classHazelnp_1_1ListValue.html#af8787d266aa353d3f96e2c76cce76c41" > AddValue</ a > (tmp);</ div >
< div class = "line" >< a name = "l00207" ></ a >< span class = "lineno" > 207</ span >   < span class = "keyword" > delete</ span > tmp;</ div >
< div class = "line" >< a name = "l00208" ></ a >< span class = "lineno" > 208</ span >   }</ div >
< div class = "line" >< a name = "l00209" ></ a >< span class = "lineno" > 209</ span >   < span class = "keywordflow" > return</ span > newList;</ div >
< div class = "line" >< a name = "l00210" ></ a >< span class = "lineno" > 210</ span >   }</ div >
< div class = "line" >< a name = "l00211" ></ a >< span class = "lineno" > 211</ span >   </ div >
< div class = "line" >< a name = "l00212" ></ a >< span class = "lineno" > 212</ span >   < span class = "comment" > // Now we' re only dealing with a single value</ span ></ div >
< div class = "line" >< a name = "l00213" ></ a >< span class = "lineno" > 213</ span >   < span class = "keyword" > const</ span > std::string& val = values[0];</ div >
< div class = "line" >< a name = "l00214" ></ a >< span class = "lineno" > 214</ span >   </ div >
< div class = "line" >< a name = "l00215" ></ a >< span class = "lineno" > 215</ span >   < span class = "comment" > // String</ span ></ div >
< div class = "line" >< a name = "l00216" ></ a >< span class = "lineno" > 216</ span >   < 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 = "l00217" ></ a >< span class = "lineno" > 217</ span >   {</ div >
< div class = "line" >< a name = "l00218" ></ a >< span class = "lineno" > 218</ span >   < span class = "comment" > // Is the type not supposed to be a string?</ span ></ div >
< div class = "line" >< a name = "l00219" ></ a >< span class = "lineno" > 219</ span >   < span class = "comment" > // void and list are already sorted out</ span ></ div >
< div class = "line" >< a name = "l00220" ></ a >< span class = "lineno" > 220</ span >   < span class = "keywordflow" > if</ span > ((constrainType) && </ div >
< div class = "line" >< a name = "l00221" ></ a >< span class = "lineno" > 221</ span >   (constraint-> < 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 = "l00222" ></ a >< span class = "lineno" > 222</ span >   {</ div >
< div class = "line" >< a name = "l00223" ></ a >< span class = "lineno" > 223</ span >   < span class = "comment" > // We can only force a list-value from here</ span ></ div >
< div class = "line" >< a name = "l00224" ></ a >< span class = "lineno" > 224</ span >   < span class = "keywordflow" > if</ span > (constraint-> < 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 = "l00225" ></ a >< span class = "lineno" > 225</ span >   {</ div >
< div class = "line" >< a name = "l00226" ></ a >< span class = "lineno" > 226</ span >   < 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 = "l00227" ></ a >< span class = "lineno" > 227</ span >   < a class = "code" href = "classHazelnp_1_1Value.html" > Value</ a > * tmp = ParseValue({ val });</ div >
< div class = "line" >< a name = "l00228" ></ a >< span class = "lineno" > 228</ span >   list-> < a class = "code" href = "classHazelnp_1_1ListValue.html#af8787d266aa353d3f96e2c76cce76c41" > AddValue</ a > (tmp);</ div >
< div class = "line" >< a name = "l00229" ></ a >< span class = "lineno" > 229</ span >   < span class = "keyword" > delete</ span > tmp;</ div >
< div class = "line" >< a name = "l00230" ></ a >< span class = "lineno" > 230</ span >   tmp = < span class = "keyword" > nullptr</ span > ;</ div >
< div class = "line" >< a name = "l00231" ></ a >< span class = "lineno" > 231</ span >   < span class = "keywordflow" > return</ span > list;</ div >
< div class = "line" >< a name = "l00232" ></ a >< span class = "lineno" > 232</ span >   }</ div >
< div class = "line" >< a name = "l00233" ></ a >< span class = "lineno" > 233</ span >   < span class = "comment" > // Else it not possible to convert to a numeric</ span ></ div >
< div class = "line" >< a name = "l00234" ></ a >< span class = "lineno" > 234</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00235" ></ a >< span class = "lineno" > 235</ span >   < span class = "keywordflow" > throw</ span > < a class = "code" href = "classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html" > HazelnuppConstraintTypeMissmatch</ a > (val);</ div >
< div class = "line" >< a name = "l00236" ></ a >< span class = "lineno" > 236</ span >   }</ div >
< div class = "line" >< a name = "l00237" ></ a >< span class = "lineno" > 237</ span >   </ div >
< div class = "line" >< a name = "l00238" ></ a >< span class = "lineno" > 238</ span >   < 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 = "l00239" ></ a >< span class = "lineno" > 239</ span >   }</ div >
< div class = "line" >< a name = "l00240" ></ a >< span class = "lineno" > 240</ span >   </ div >
< div class = "line" >< a name = "l00241" ></ a >< span class = "lineno" > 241</ span >   < span class = "comment" > // In this case we have a numeric value.</ span ></ div >
< div class = "line" >< a name = "l00242" ></ a >< span class = "lineno" > 242</ span >   < span class = "comment" > // We should still produce a string if requested</ span ></ div >
< div class = "line" >< a name = "l00243" ></ a >< span class = "lineno" > 243</ span >   < span class = "keywordflow" > if</ span > ((constrainType) && </ div >
< div class = "line" >< a name = "l00244" ></ a >< span class = "lineno" > 244</ span >   (constraint-> < 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 = "l00245" ></ a >< span class = "lineno" > 245</ span >   < 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 >   </ div >
< div class = "line" >< a name = "l00247" ></ a >< span class = "lineno" > 247</ span >   < span class = "comment" > // Numeric</ span ></ div >
< div class = "line" >< a name = "l00248" ></ a >< span class = "lineno" > 248</ span >   < span class = "keywordtype" > bool</ span > isInt;</ div >
< div class = "line" >< a name = "l00249" ></ a >< span class = "lineno" > 249</ span >   < span class = "keywordtype" > long</ span > < span class = "keywordtype" > double</ span > num;</ div >
< div class = "line" >< a name = "l00250" ></ a >< span class = "lineno" > 250</ span >   </ div >
< div class = "line" >< a name = "l00251" ></ a >< span class = "lineno" > 251</ span >   < 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 = "l00252" ></ a >< span class = "lineno" > 252</ span >   {</ div >
< div class = "line" >< a name = "l00253" ></ a >< span class = "lineno" > 253</ span >   < span class = "comment" > // Is the type constrained?</ span ></ div >
< div class = "line" >< a name = "l00254" ></ a >< span class = "lineno" > 254</ span >   < span class = "comment" > // (only int and float left)</ span ></ div >
< div class = "line" >< a name = "l00255" ></ a >< span class = "lineno" > 255</ span >   < span class = "keywordflow" > if</ span > (constrainType)</ div >
< div class = "line" >< a name = "l00256" ></ a >< span class = "lineno" > 256</ span >   {</ div >
< div class = "line" >< a name = "l00257" ></ a >< span class = "lineno" > 257</ span >   < span class = "comment" > // Must it be an integer?</ span ></ div >
< div class = "line" >< a name = "l00258" ></ a >< span class = "lineno" > 258</ span >   < span class = "keywordflow" > if</ span > (constraint-> < 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 = "l00259" ></ a >< span class = "lineno" > 259</ span >   < 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 = "l00260" ></ a >< span class = "lineno" > 260</ span >   < span class = "comment" > // Must it be a floating point?</ span ></ div >
< div class = "line" >< a name = "l00261" ></ a >< span class = "lineno" > 261</ span >   < span class = "keywordflow" > else</ span > < span class = "keywordflow" > if</ span > (constraint-> < 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 = "l00262" ></ a >< span class = "lineno" > 262</ span >   < 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 = "l00263" ></ a >< span class = "lineno" > 263</ span >   < span class = "comment" > // Else it must be a List</ span ></ div >
< div class = "line" >< a name = "l00264" ></ a >< span class = "lineno" > 264</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00265" ></ a >< span class = "lineno" > 265</ span >   {</ div >
< div class = "line" >< a name = "l00266" ></ a >< span class = "lineno" > 266</ span >   < 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 = "l00267" ></ a >< span class = "lineno" > 267</ span >   < a class = "code" href = "classHazelnp_1_1Value.html" > Value</ a > * tmp = ParseValue({ val });</ div >
< div class = "line" >< a name = "l00268" ></ a >< span class = "lineno" > 268</ span >   list-> < a class = "code" href = "classHazelnp_1_1ListValue.html#af8787d266aa353d3f96e2c76cce76c41" > AddValue</ a > (tmp);</ div >
< div class = "line" >< a name = "l00269" ></ a >< span class = "lineno" > 269</ span >   < span class = "keyword" > delete</ span > tmp;</ div >
< div class = "line" >< a name = "l00270" ></ a >< span class = "lineno" > 270</ span >   tmp = < span class = "keyword" > nullptr</ span > ;</ div >
< div class = "line" >< a name = "l00271" ></ a >< span class = "lineno" > 271</ span >   < span class = "keywordflow" > return</ span > list;</ div >
< div class = "line" >< a name = "l00272" ></ a >< span class = "lineno" > 272</ span >   }</ div >
< div class = "line" >< a name = "l00273" ></ a >< span class = "lineno" > 273</ span >   }</ div >
< div class = "line" >< a name = "l00274" ></ a >< span class = "lineno" > 274</ span >   < span class = "comment" > // Type is not constrained</ span ></ div >
< div class = "line" >< a name = "l00275" ></ a >< span class = "lineno" > 275</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00276" ></ a >< span class = "lineno" > 276</ span >   {</ div >
< div class = "line" >< a name = "l00277" ></ a >< span class = "lineno" > 277</ span >   < span class = "comment" > // Integer</ span ></ div >
< div class = "line" >< a name = "l00278" ></ a >< span class = "lineno" > 278</ span >   < span class = "keywordflow" > if</ span > (isInt)</ div >
< div class = "line" >< a name = "l00279" ></ a >< span class = "lineno" > 279</ span >   < 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 = "l00280" ></ a >< span class = "lineno" > 280</ span >   </ div >
< div class = "line" >< a name = "l00281" ></ a >< span class = "lineno" > 281</ span >   < span class = "comment" > // Double</ span ></ div >
< div class = "line" >< a name = "l00282" ></ a >< span class = "lineno" > 282</ span >   < 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 = "l00283" ></ a >< span class = "lineno" > 283</ span >   }</ div >
< div class = "line" >< a name = "l00284" ></ a >< span class = "lineno" > 284</ span >   }</ div >
< div class = "line" >< a name = "l00285" ></ a >< span class = "lineno" > 285</ span >   </ div >
< div class = "line" >< a name = "l00286" ></ a >< span class = "lineno" > 286</ span >   < span class = "comment" > // Failed</ span ></ div >
< div class = "line" >< a name = "l00287" ></ a >< span class = "lineno" > 287</ span >   < span class = "keywordflow" > return</ span > < span class = "keyword" > nullptr</ span > ;</ div >
< div class = "line" >< a name = "l00288" ></ a >< span class = "lineno" > 288</ span >   }</ div >
< div class = "line" >< a name = "l00289" ></ a >< span class = "lineno" > 289</ span >   </ div >
< div class = "line" >< a name = "l00290" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a1b810cc7db2cf64aecaa70c686b14bb7" > 290</ a ></ span >   < 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 = "l00291" ></ a >< span class = "lineno" > 291</ span >   < span class = "keyword" ></ span > {</ div >
< div class = "line" >< a name = "l00292" ></ a >< span class = "lineno" > 292</ span >   < span class = "keywordflow" > return</ span > crashOnFail;</ div >
< div class = "line" >< a name = "l00293" ></ a >< span class = "lineno" > 293</ span >   }</ div >
< div class = "line" >< a name = "l00294" ></ a >< span class = "lineno" > 294</ span >   </ div >
< div class = "line" >< a name = "l00295" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a60e0a51cd92014a87e44322158e45872" > 295</ a ></ span >   < 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 = "l00296" ></ a >< span class = "lineno" > 296</ span >   {</ div >
< div class = "line" >< a name = "l00297" ></ a >< span class = "lineno" > 297</ span >   this-> catchHelp = catchHelp;</ div >
< div class = "line" >< a name = "l00298" ></ a >< span class = "lineno" > 298</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00299" ></ a >< span class = "lineno" > 299</ span >   }</ div >
< div class = "line" >< a name = "l00300" ></ a >< span class = "lineno" > 300</ span >   </ div >
< div class = "line" >< a name = "l00301" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a05a3d112bcc00cdeade76f3643ba9e94" > 301</ a ></ span >   < 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 = "l00302" ></ a >< span class = "lineno" > 302</ span >   < span class = "keyword" ></ span > {</ div >
< div class = "line" >< a name = "l00303" ></ a >< span class = "lineno" > 303</ span >   < span class = "keywordflow" > return</ span > catchHelp;</ div >
< div class = "line" >< a name = "l00304" ></ a >< span class = "lineno" > 304</ span >   }</ div >
< div class = "line" >< a name = "l00305" ></ a >< span class = "lineno" > 305</ span >   </ div >
< div class = "line" >< a name = "l00306" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a037f84b32c7a2420c387dd46445291ac" > 306</ a ></ span >   < span class = "keywordtype" > void</ span > < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a037f84b32c7a2420c387dd46445291ac" > Hazelnupp::SetBriefDescription</ a > (< span class = "keyword" > const</ span > std::string& description)</ div >
< div class = "line" >< a name = "l00307" ></ a >< span class = "lineno" > 307</ span >   {</ div >
< div class = "line" >< a name = "l00308" ></ a >< span class = "lineno" > 308</ span >   briefDescription = description;</ div >
< div class = "line" >< a name = "l00309" ></ a >< span class = "lineno" > 309</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00310" ></ a >< span class = "lineno" > 310</ span >   }</ div >
< div class = "line" >< a name = "l00311" ></ a >< span class = "lineno" > 311</ span >   </ div >
< div class = "line" >< a name = "l00312" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a1d32c3047a8c58650476d1ae7e9fb582" > 312</ a ></ span >   < span class = "keyword" > const</ span > std::string& < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a1d32c3047a8c58650476d1ae7e9fb582" > Hazelnupp::GetBriefDescription</ a > ()</ div >
< div class = "line" >< a name = "l00313" ></ a >< span class = "lineno" > 313</ span >   {</ div >
< div class = "line" >< a name = "l00314" ></ a >< span class = "lineno" > 314</ span >   < span class = "keywordflow" > return</ span > briefDescription;</ div >
< div class = "line" >< a name = "l00315" ></ a >< span class = "lineno" > 315</ span >   }</ div >
< div class = "line" >< a name = "l00316" ></ a >< span class = "lineno" > 316</ span >   </ div >
< div class = "line" >< a name = "l00317" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a17883db87e97caad4a0f114f9f850f5e" > 317</ a ></ span >   < 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& parameter, < span class = "keyword" > const</ span > std::string& description)</ div >
< div class = "line" >< a name = "l00318" ></ a >< span class = "lineno" > 318</ span >   {</ div >
< div class = "line" >< a name = "l00319" ></ a >< span class = "lineno" > 319</ span >   parameterDescriptions[parameter] = description;</ div >
< div class = "line" >< a name = "l00320" ></ a >< span class = "lineno" > 320</ span >   < span class = "keywordflow" > return</ span > ;</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00321" ></ a >< span class = "lineno" > 321</ span >   }</ div >
< div class = "line" >< a name = "l00322" ></ a >< span class = "lineno" > 322</ span >   </ div >
2021-06-04 02:30:58 +02:00
< div class = "line" >< a name = "l00323" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a6637dc4b78871d7ecba1f2e1c8c28fb0" > 323</ a ></ span >   < span class = "keyword" > const</ span > std::string < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a6637dc4b78871d7ecba1f2e1c8c28fb0" > Hazelnp::Hazelnupp::GetDescription</ a > (< span class = "keyword" > const</ span > std::string& parameter)< span class = "keyword" > const</ span ></ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00324" ></ a >< span class = "lineno" > 324</ span >   < span class = "keyword" ></ span > {</ div >
2021-06-04 02:30:58 +02:00
< div class = "line" >< a name = "l00325" ></ a >< span class = "lineno" > 325</ span >   < span class = "comment" > // Do we already have a description for this parameter?</ span ></ div >
< div class = "line" >< a name = "l00326" ></ a >< span class = "lineno" > 326</ span >   < span class = "keyword" > const</ span > < span class = "keyword" > auto</ span > par = parameterDescriptions.find(parameter);</ div >
< div class = "line" >< a name = "l00327" ></ a >< span class = "lineno" > 327</ span >   < span class = "keywordflow" > if</ span > (par == parameterDescriptions.end())</ div >
< div class = "line" >< a name = "l00328" ></ a >< span class = "lineno" > 328</ span >   < span class = "comment" > // No? Then return "" </ span ></ div >
< div class = "line" >< a name = "l00329" ></ a >< span class = "lineno" > 329</ span >   < span class = "keywordflow" > return</ span > < span class = "stringliteral" > "" </ span > ;</ div >
< div class = "line" >< a name = "l00330" ></ a >< span class = "lineno" > 330</ span >   </ div >
< div class = "line" >< a name = "l00331" ></ a >< span class = "lineno" > 331</ span >   < span class = "comment" > // We do? Then return it</ span ></ div >
< div class = "line" >< a name = "l00332" ></ a >< span class = "lineno" > 332</ span >   < span class = "keywordflow" > return</ span > par-> second;</ div >
< div class = "line" >< a name = "l00333" ></ a >< span class = "lineno" > 333</ span >   }</ div >
< div class = "line" >< a name = "l00334" ></ a >< span class = "lineno" > 334</ span >   </ div >
< div class = "line" >< a name = "l00335" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a8490e0b10feee0b815c043e7cad454cb" > 335</ a ></ span >   < span class = "keywordtype" > void</ span > < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a8490e0b10feee0b815c043e7cad454cb" > Hazelnp::Hazelnupp::ClearDescription</ a > (< span class = "keyword" > const</ span > std::string& parameter)</ div >
< div class = "line" >< a name = "l00336" ></ a >< span class = "lineno" > 336</ span >   {</ div >
< div class = "line" >< a name = "l00337" ></ a >< span class = "lineno" > 337</ span >   < span class = "comment" > // This will just do nothing if the entry does not exist</ span ></ div >
< div class = "line" >< a name = "l00338" ></ a >< span class = "lineno" > 338</ span >   parameterDescriptions.erase(parameter);</ div >
< div class = "line" >< a name = "l00339" ></ a >< span class = "lineno" > 339</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00340" ></ a >< span class = "lineno" > 340</ span >   }</ div >
< div class = "line" >< a name = "l00341" ></ a >< span class = "lineno" > 341</ span >   </ div >
< div class = "line" >< a name = "l00342" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a7b1bf5e700d8a0d8e90c5750e54749de" > 342</ a ></ span >   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 = "l00343" ></ a >< span class = "lineno" > 343</ span >   < span class = "keyword" ></ span > {</ div >
< div class = "line" >< a name = "l00344" ></ a >< span class = "lineno" > 344</ span >   std::stringstream ss;</ div >
< div class = "line" >< a name = "l00345" ></ a >< span class = "lineno" > 345</ span >   </ div >
< div class = "line" >< a name = "l00346" ></ a >< span class = "lineno" > 346</ span >   < span class = "comment" > // Add brief, if available</ span ></ div >
< div class = "line" >< a name = "l00347" ></ a >< span class = "lineno" > 347</ span >   < span class = "keywordflow" > if</ span > (briefDescription.length() > 0)</ div >
< div class = "line" >< a name = "l00348" ></ a >< span class = "lineno" > 348</ span >   ss << briefDescription << std::endl;</ div >
< div class = "line" >< a name = "l00349" ></ a >< span class = "lineno" > 349</ span >   </ div >
< div class = "line" >< a name = "l00350" ></ a >< span class = "lineno" > 350</ span >   < span class = "comment" > // Collect parameter information</ span ></ div >
< div class = "line" >< a name = "l00351" ></ a >< span class = "lineno" > 351</ span >   < span class = "keyword" > struct </ span > ParamDocEntry</ div >
< div class = "line" >< a name = "l00352" ></ a >< span class = "lineno" > 352</ span >   {</ div >
< div class = "line" >< a name = "l00353" ></ a >< span class = "lineno" > 353</ span >   std::string abbreviation;</ div >
< div class = "line" >< a name = "l00354" ></ a >< span class = "lineno" > 354</ span >   std::string description;</ div >
< div class = "line" >< a name = "l00355" ></ a >< span class = "lineno" > 355</ span >   std::string type;</ div >
< div class = "line" >< a name = "l00356" ></ a >< span class = "lineno" > 356</ span >   < span class = "keywordtype" > bool</ span > required = < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00357" ></ a >< span class = "lineno" > 357</ span >   < span class = "keywordtype" > bool</ span > typeIsForced = < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00358" ></ a >< span class = "lineno" > 358</ span >   std::string defaultVal;</ div >
< div class = "line" >< a name = "l00359" ></ a >< span class = "lineno" > 359</ span >   };</ div >
< div class = "line" >< a name = "l00360" ></ a >< span class = "lineno" > 360</ span >   std::unordered_map< std::string, ParamDocEntry> paramInfos;</ div >
< div class = "line" >< a name = "l00361" ></ a >< span class = "lineno" > 361</ span >   </ div >
< div class = "line" >< a name = "l00362" ></ a >< span class = "lineno" > 362</ span >   < span class = "comment" > // Collect descriptions</ span ></ div >
< div class = "line" >< a name = "l00363" ></ a >< span class = "lineno" > 363</ span >   < span class = "keywordflow" > for</ span > (< span class = "keyword" > const</ span > < span class = "keyword" > auto</ span > & it : parameterDescriptions)</ div >
< div class = "line" >< a name = "l00364" ></ a >< span class = "lineno" > 364</ span >   {</ div >
< div class = "line" >< a name = "l00365" ></ a >< span class = "lineno" > 365</ span >   < span class = "comment" > // Do we already have that param in the paramInfo set?</ span ></ div >
< div class = "line" >< a name = "l00366" ></ a >< span class = "lineno" > 366</ span >   < span class = "keywordflow" > if</ span > (paramInfos.find(it.first) == paramInfos.end())</ div >
< div class = "line" >< a name = "l00367" ></ a >< span class = "lineno" > 367</ span >   < span class = "comment" > // No? Create it.</ span ></ div >
< div class = "line" >< a name = "l00368" ></ a >< span class = "lineno" > 368</ span >   paramInfos[it.first] = ParamDocEntry();</ div >
< div class = "line" >< a name = "l00369" ></ a >< span class = "lineno" > 369</ span >   </ div >
< div class = "line" >< a name = "l00370" ></ a >< span class = "lineno" > 370</ span >   paramInfos[it.first].description = it.second;</ div >
< div class = "line" >< a name = "l00371" ></ a >< span class = "lineno" > 371</ span >   }</ div >
< div class = "line" >< a name = "l00372" ></ a >< span class = "lineno" > 372</ span >   </ div >
< div class = "line" >< a name = "l00373" ></ a >< span class = "lineno" > 373</ span >   < span class = "comment" > // Collect abbreviations</ span ></ div >
< div class = "line" >< a name = "l00374" ></ a >< span class = "lineno" > 374</ span >   < span class = "comment" > // first value is abbreviation, second is long form</ span ></ div >
< div class = "line" >< a name = "l00375" ></ a >< span class = "lineno" > 375</ span >   < span class = "keywordflow" > for</ span > (< span class = "keyword" > const</ span > < span class = "keyword" > auto</ span > & it : abbreviations)</ div >
< div class = "line" >< a name = "l00376" ></ a >< span class = "lineno" > 376</ span >   {</ div >
< div class = "line" >< a name = "l00377" ></ a >< span class = "lineno" > 377</ span >   < span class = "comment" > // Do we already have that param in the paramInfo set?</ span ></ div >
< div class = "line" >< a name = "l00378" ></ a >< span class = "lineno" > 378</ span >   < span class = "keywordflow" > if</ span > (paramInfos.find(it.second) == paramInfos.end())</ div >
< div class = "line" >< a name = "l00379" ></ a >< span class = "lineno" > 379</ span >   < span class = "comment" > // No? Create it.</ span ></ div >
< div class = "line" >< a name = "l00380" ></ a >< span class = "lineno" > 380</ span >   paramInfos[it.second] = ParamDocEntry();</ div >
< div class = "line" >< a name = "l00381" ></ a >< span class = "lineno" > 381</ span >   </ div >
< div class = "line" >< a name = "l00382" ></ a >< span class = "lineno" > 382</ span >   paramInfos[it.second].abbreviation = it.first;</ div >
< div class = "line" >< a name = "l00383" ></ a >< span class = "lineno" > 383</ span >   }</ div >
< div class = "line" >< a name = "l00384" ></ a >< span class = "lineno" > 384</ span >   </ div >
< div class = "line" >< a name = "l00385" ></ a >< span class = "lineno" > 385</ span >   < span class = "comment" > // Collect constraints</ span ></ div >
< div class = "line" >< a name = "l00386" ></ a >< span class = "lineno" > 386</ span >   < span class = "keywordflow" > for</ span > (< span class = "keyword" > const</ span > < span class = "keyword" > auto</ span > & it : constraints)</ div >
< div class = "line" >< a name = "l00387" ></ a >< span class = "lineno" > 387</ span >   {</ div >
< div class = "line" >< a name = "l00388" ></ a >< span class = "lineno" > 388</ span >   < span class = "comment" > // Do we already have that param in the paramInfo set?</ span ></ div >
< div class = "line" >< a name = "l00389" ></ a >< span class = "lineno" > 389</ span >   < span class = "keywordflow" > if</ span > (paramInfos.find(it.first) == paramInfos.end())</ div >
< div class = "line" >< a name = "l00390" ></ a >< span class = "lineno" > 390</ span >   < span class = "comment" > // No? Create it.</ span ></ div >
< div class = "line" >< a name = "l00391" ></ a >< span class = "lineno" > 391</ span >   paramInfos[it.first] = ParamDocEntry();</ div >
< div class = "line" >< a name = "l00392" ></ a >< span class = "lineno" > 392</ span >   </ div >
< div class = "line" >< a name = "l00393" ></ a >< span class = "lineno" > 393</ span >   ParamDocEntry& cached = paramInfos[it.first];</ div >
< div class = "line" >< a name = "l00394" ></ a >< span class = "lineno" > 394</ span >   cached.required = it.second.required;</ div >
< div class = "line" >< a name = "l00395" ></ a >< span class = "lineno" > 395</ span >   cached.typeIsForced = it.second.constrainType;</ div >
< div class = "line" >< a name = "l00396" ></ a >< span class = "lineno" > 396</ span >   cached.type = < a class = "code" href = "namespaceHazelnp.html#a7fb1e5ad9e2ecb6c0025beb19f11621b" > DataTypeToString</ a > (it.second.wantedType);</ div >
< div class = "line" >< a name = "l00397" ></ a >< span class = "lineno" > 397</ span >   </ div >
< div class = "line" >< a name = "l00398" ></ a >< span class = "lineno" > 398</ span >   std::stringstream defaultValueSs;</ div >
< div class = "line" >< a name = "l00399" ></ a >< span class = "lineno" > 399</ span >   < span class = "keywordflow" > for</ span > (< span class = "keyword" > const</ span > std::string& s : it.second.defaultValue)</ div >
< div class = "line" >< a name = "l00400" ></ a >< span class = "lineno" > 400</ span >   {</ div >
< div class = "line" >< a name = "l00401" ></ a >< span class = "lineno" > 401</ span >   defaultValueSs << < span class = "charliteral" > ' \'' </ span > << s << < span class = "charliteral" > ' \'' </ span > ;</ div >
< div class = "line" >< a name = "l00402" ></ a >< span class = "lineno" > 402</ span >   </ div >
< div class = "line" >< a name = "l00403" ></ a >< span class = "lineno" > 403</ span >   < span class = "comment" > // Add a space if we are not at the last entry</ span ></ div >
< div class = "line" >< a name = "l00404" ></ a >< span class = "lineno" > 404</ span >   < span class = "keywordflow" > if</ span > ((< span class = "keywordtype" > void</ span > *)& s != (< span class = "keywordtype" > void</ span > *)& it.second.defaultValue.back())</ div >
< div class = "line" >< a name = "l00405" ></ a >< span class = "lineno" > 405</ span >   defaultValueSs << < span class = "stringliteral" > " " </ span > ;</ div >
< div class = "line" >< a name = "l00406" ></ a >< span class = "lineno" > 406</ span >   }</ div >
< div class = "line" >< a name = "l00407" ></ a >< span class = "lineno" > 407</ span >   cached.defaultVal = defaultValueSs.str();</ div >
< div class = "line" >< a name = "l00408" ></ a >< span class = "lineno" > 408</ span >   }</ div >
< div class = "line" >< a name = "l00409" ></ a >< span class = "lineno" > 409</ span >   </ div >
< div class = "line" >< a name = "l00410" ></ a >< span class = "lineno" > 410</ span >   < span class = "comment" > // Now generate the documentatino body</ span ></ div >
< div class = "line" >< a name = "l00411" ></ a >< span class = "lineno" > 411</ span >   < span class = "keywordflow" > if</ span > (paramInfos.size() > 0)</ div >
< div class = "line" >< a name = "l00412" ></ a >< span class = "lineno" > 412</ span >   {</ div >
< div class = "line" >< a name = "l00413" ></ a >< span class = "lineno" > 413</ span >   ss << std::endl </ div >
< div class = "line" >< a name = "l00414" ></ a >< span class = "lineno" > 414</ span >   << < span class = "stringliteral" > " ==== AVAILABLE PARAMETERS ====" </ span > </ div >
< div class = "line" >< a name = "l00415" ></ a >< span class = "lineno" > 415</ span >   << std::endl << std::endl;</ div >
< div class = "line" >< a name = "l00416" ></ a >< span class = "lineno" > 416</ span >   </ div >
< div class = "line" >< a name = "l00417" ></ a >< span class = "lineno" > 417</ span >   < span class = "keywordflow" > for</ span > (< span class = "keyword" > const</ span > < span class = "keyword" > auto</ span > & it : paramInfos)</ div >
< div class = "line" >< a name = "l00418" ></ a >< span class = "lineno" > 418</ span >   {</ div >
< div class = "line" >< a name = "l00419" ></ a >< span class = "lineno" > 419</ span >   < span class = "keyword" > const</ span > ParamDocEntry& pde = it.second;</ div >
< div class = "line" >< a name = "l00420" ></ a >< span class = "lineno" > 420</ span >   </ div >
< div class = "line" >< a name = "l00421" ></ a >< span class = "lineno" > 421</ span >   < span class = "comment" > // Put name</ span ></ div >
< div class = "line" >< a name = "l00422" ></ a >< span class = "lineno" > 422</ span >   ss << it.first << < span class = "stringliteral" > " " </ span > ;</ div >
< div class = "line" >< a name = "l00423" ></ a >< span class = "lineno" > 423</ span >   </ div >
< div class = "line" >< a name = "l00424" ></ a >< span class = "lineno" > 424</ span >   < span class = "comment" > // Put abbreviation</ span ></ div >
< div class = "line" >< a name = "l00425" ></ a >< span class = "lineno" > 425</ span >   < span class = "keywordflow" > if</ span > (pde.abbreviation.length() > 0)</ div >
< div class = "line" >< a name = "l00426" ></ a >< span class = "lineno" > 426</ span >   ss << pde.abbreviation << < span class = "stringliteral" > " " </ span > ;</ div >
< div class = "line" >< a name = "l00427" ></ a >< span class = "lineno" > 427</ span >   </ div >
< div class = "line" >< a name = "l00428" ></ a >< span class = "lineno" > 428</ span >   < span class = "comment" > // Put type</ span ></ div >
< div class = "line" >< a name = "l00429" ></ a >< span class = "lineno" > 429</ span >   < span class = "keywordflow" > if</ span > (pde.typeIsForced)</ div >
< div class = "line" >< a name = "l00430" ></ a >< span class = "lineno" > 430</ span >   ss << pde.type << < span class = "stringliteral" > " " </ span > ;</ div >
< div class = "line" >< a name = "l00431" ></ a >< span class = "lineno" > 431</ span >   </ div >
< div class = "line" >< a name = "l00432" ></ a >< span class = "lineno" > 432</ span >   < span class = "comment" > // Put default value</ span ></ div >
< div class = "line" >< a name = "l00433" ></ a >< span class = "lineno" > 433</ span >   < span class = "keywordflow" > if</ span > (pde.defaultVal.length() > 0)</ div >
< div class = "line" >< a name = "l00434" ></ a >< span class = "lineno" > 434</ span >   ss << < span class = "stringliteral" > " default=[" </ span > << pde.defaultVal << < span class = "stringliteral" > " ] " </ span > ;</ div >
< div class = "line" >< a name = "l00435" ></ a >< span class = "lineno" > 435</ span >   </ div >
< div class = "line" >< a name = "l00436" ></ a >< span class = "lineno" > 436</ span >   < span class = "comment" > // Put required tag, but only if no default value</ span ></ div >
< div class = "line" >< a name = "l00437" ></ a >< span class = "lineno" > 437</ span >   < span class = "keywordflow" > if</ span > ((pde.required) && (pde.defaultVal.length() == 0))</ div >
< div class = "line" >< a name = "l00438" ></ a >< span class = "lineno" > 438</ span >   ss << < span class = "stringliteral" > " [[REQUIRED]] " </ span > ;</ div >
< div class = "line" >< a name = "l00439" ></ a >< span class = "lineno" > 439</ span >   </ div >
< div class = "line" >< a name = "l00440" ></ a >< span class = "lineno" > 440</ span >   < span class = "comment" > // Put brief description</ span ></ div >
< div class = "line" >< a name = "l00441" ></ a >< span class = "lineno" > 441</ span >   < span class = "keywordflow" > if</ span > (pde.description.length() > 0)</ div >
< div class = "line" >< a name = "l00442" ></ a >< span class = "lineno" > 442</ span >   ss << pde.description;</ div >
< div class = "line" >< a name = "l00443" ></ a >< span class = "lineno" > 443</ span >   </ div >
< div class = "line" >< a name = "l00444" ></ a >< span class = "lineno" > 444</ span >   ss << std::endl << std::endl;</ div >
< div class = "line" >< a name = "l00445" ></ a >< span class = "lineno" > 445</ span >   }</ div >
< div class = "line" >< a name = "l00446" ></ a >< span class = "lineno" > 446</ span >   }</ div >
< div class = "line" >< a name = "l00447" ></ a >< span class = "lineno" > 447</ span >   </ div >
< div class = "line" >< a name = "l00448" ></ a >< span class = "lineno" > 448</ span >   < span class = "keywordflow" > return</ span > ss.str();</ div >
< div class = "line" >< a name = "l00449" ></ a >< span class = "lineno" > 449</ span >   }</ div >
< div class = "line" >< a name = "l00450" ></ a >< span class = "lineno" > 450</ span >   </ div >
< div class = "line" >< a name = "l00451" ></ a >< span class = "lineno" > 451</ span >   < span class = "keywordtype" > void</ span > Hazelnupp::ApplyConstraints()</ div >
< div class = "line" >< a name = "l00452" ></ a >< span class = "lineno" > 452</ span >   {</ div >
< div class = "line" >< a name = "l00453" ></ a >< span class = "lineno" > 453</ span >   < span class = "comment" > // Enforce required parameters / default values</ span ></ div >
< div class = "line" >< a name = "l00454" ></ a >< span class = "lineno" > 454</ span >   < span class = "keywordflow" > for</ span > (< span class = "keyword" > const</ span > < span class = "keyword" > auto</ span > & pc : constraints)</ div >
< div class = "line" >< a name = "l00455" ></ a >< span class = "lineno" > 455</ span >   < span class = "comment" > // Parameter in question is not supplied</ span ></ div >
< div class = "line" >< a name = "l00456" ></ a >< span class = "lineno" > 456</ span >   < 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 = "l00457" ></ a >< span class = "lineno" > 457</ span >   {</ div >
< div class = "line" >< a name = "l00458" ></ a >< span class = "lineno" > 458</ span >   < span class = "comment" > // Do we have a default value?</ span ></ div >
< div class = "line" >< a name = "l00459" ></ a >< span class = "lineno" > 459</ span >   < span class = "keywordflow" > if</ span > (pc.second.defaultValue.size() > 0)</ div >
< div class = "line" >< a name = "l00460" ></ a >< span class = "lineno" > 460</ span >   {</ div >
< div class = "line" >< a name = "l00461" ></ a >< span class = "lineno" > 461</ span >   < span class = "comment" > // Then create it now, by its default value</ span ></ div >
< div class = "line" >< a name = "l00462" ></ a >< span class = "lineno" > 462</ span >   </ div >
< div class = "line" >< a name = "l00463" ></ a >< span class = "lineno" > 463</ span >   < a class = "code" href = "classHazelnp_1_1Value.html" > Value</ a > * tmp = ParseValue(pc.second.defaultValue, & pc.second);</ div >
< div class = "line" >< a name = "l00464" ></ a >< span class = "lineno" > 464</ span >   parameters.insert(std::pair< std::string, Parameter*> (</ div >
< div class = "line" >< a name = "l00465" ></ a >< span class = "lineno" > 465</ span >   pc.second.key,</ div >
< div class = "line" >< a name = "l00466" ></ a >< span class = "lineno" > 466</ span >   < 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 = "l00467" ></ a >< span class = "lineno" > 467</ span >   ));</ div >
< div class = "line" >< a name = "l00468" ></ a >< span class = "lineno" > 468</ span >   </ div >
< div class = "line" >< a name = "l00469" ></ a >< span class = "lineno" > 469</ span >   < span class = "keyword" > delete</ span > tmp;</ div >
< div class = "line" >< a name = "l00470" ></ a >< span class = "lineno" > 470</ span >   tmp = < span class = "keyword" > nullptr</ span > ;</ div >
< div class = "line" >< a name = "l00471" ></ a >< span class = "lineno" > 471</ span >   }</ div >
< div class = "line" >< a name = "l00472" ></ a >< span class = "lineno" > 472</ span >   < span class = "comment" > // So we do not have a default value...</ span ></ div >
< div class = "line" >< a name = "l00473" ></ a >< span class = "lineno" > 473</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00474" ></ a >< span class = "lineno" > 474</ span >   {</ div >
< div class = "line" >< a name = "l00475" ></ a >< span class = "lineno" > 475</ span >   < span class = "comment" > // Is it important to have the missing parameter?</ span ></ div >
< div class = "line" >< a name = "l00476" ></ a >< span class = "lineno" > 476</ span >   < span class = "keywordflow" > if</ span > (pc.second.required)</ div >
< div class = "line" >< a name = "l00477" ></ a >< span class = "lineno" > 477</ span >   < span class = "comment" > // Throw an error message then</ span ></ div >
< div class = "line" >< a name = "l00478" ></ a >< span class = "lineno" > 478</ span >   < span class = "keywordflow" > throw</ span > < a class = "code" href = "classHazelnp_1_1HazelnuppConstraintMissingValue.html" > HazelnuppConstraintMissingValue</ a > (pc.second.key);</ div >
< div class = "line" >< a name = "l00479" ></ a >< span class = "lineno" > 479</ span >   }</ div >
< div class = "line" >< a name = "l00480" ></ a >< span class = "lineno" > 480</ span >   }</ div >
< div class = "line" >< a name = "l00481" ></ a >< span class = "lineno" > 481</ span >   </ div >
< div class = "line" >< a name = "l00482" ></ a >< span class = "lineno" > 482</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00483" ></ a >< span class = "lineno" > 483</ span >   }</ div >
< div class = "line" >< a name = "l00484" ></ a >< span class = "lineno" > 484</ span >   </ div >
< div class = "line" >< a name = "l00485" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#af6bb41fb079131f8b91fe981f63f7469" > 485</ a ></ span >   < span class = "keyword" > const</ span > std::string& < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#af6bb41fb079131f8b91fe981f63f7469" > Hazelnupp::GetExecutableName</ a > ()< span class = "keyword" > const</ span ></ div >
< div class = "line" >< a name = "l00486" ></ a >< span class = "lineno" > 486</ span >   < span class = "keyword" ></ span > {</ div >
< div class = "line" >< a name = "l00487" ></ a >< span class = "lineno" > 487</ span >   < span class = "keywordflow" > return</ span > executableName;</ div >
< div class = "line" >< a name = "l00488" ></ a >< span class = "lineno" > 488</ span >   }</ div >
< div class = "line" >< a name = "l00489" ></ a >< span class = "lineno" > 489</ span >   </ div >
< div class = "line" >< a name = "l00490" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a419ccdc6bad00b0fc3e17ed9b41f5dc5" > 490</ a ></ span >   < span class = "keyword" > const</ span > < a class = "code" href = "classHazelnp_1_1Value.html" > Value</ a > & < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a419ccdc6bad00b0fc3e17ed9b41f5dc5" > Hazelnupp::operator[]</ a > (< span class = "keyword" > const</ span > std::string& key)< span class = "keyword" > const</ span ></ div >
< div class = "line" >< a name = "l00491" ></ a >< span class = "lineno" > 491</ span >   < span class = "keyword" ></ span > {</ div >
< div class = "line" >< a name = "l00492" ></ a >< span class = "lineno" > 492</ span >   < span class = "comment" > // Throw exception if param is unknown</ span ></ div >
< div class = "line" >< a name = "l00493" ></ a >< span class = "lineno" > 493</ span >   < span class = "keywordflow" > if</ span > (!< a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a8b79a79d40420ae748c108c691111040" > HasParam</ a > (key))</ div >
< div class = "line" >< a name = "l00494" ></ a >< span class = "lineno" > 494</ span >   < span class = "keywordflow" > throw</ span > < a class = "code" href = "classHazelnp_1_1HazelnuppInvalidKeyException.html" > HazelnuppInvalidKeyException</ a > ();</ div >
< div class = "line" >< a name = "l00495" ></ a >< span class = "lineno" > 495</ span >   </ div >
< div class = "line" >< a name = "l00496" ></ a >< span class = "lineno" > 496</ span >   < span class = "keywordflow" > return</ span > *parameters.find(key)-> second-> GetValue();</ div >
< div class = "line" >< a name = "l00497" ></ a >< span class = "lineno" > 497</ span >   }</ div >
< div class = "line" >< a name = "l00498" ></ a >< span class = "lineno" > 498</ span >   </ div >
< div class = "line" >< a name = "l00499" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#abf1e0ebf0207ca2327fcde81f7372124" > 499</ a ></ span >   < span class = "keywordtype" > void</ span > < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#abf1e0ebf0207ca2327fcde81f7372124" > Hazelnupp::RegisterAbbreviation</ a > (< span class = "keyword" > const</ span > std::string& abbrev, < span class = "keyword" > const</ span > std::string& target)</ div >
< div class = "line" >< a name = "l00500" ></ a >< span class = "lineno" > 500</ span >   {</ div >
< div class = "line" >< a name = "l00501" ></ a >< span class = "lineno" > 501</ span >   abbreviations.insert(std::pair< std::string, std::string> (abbrev, target));</ div >
< div class = "line" >< a name = "l00502" ></ a >< span class = "lineno" > 502</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00503" ></ a >< span class = "lineno" > 503</ span >   }</ div >
< div class = "line" >< a name = "l00504" ></ a >< span class = "lineno" > 504</ span >   </ div >
< div class = "line" >< a name = "l00505" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a579e78129f19cb9f17a6075366ababe5" > 505</ a ></ span >   < span class = "keyword" > const</ span > std::string& < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a579e78129f19cb9f17a6075366ababe5" > Hazelnupp::GetAbbreviation</ a > (< span class = "keyword" > const</ span > std::string& abbrev)< span class = "keyword" > const</ span ></ div >
< div class = "line" >< a name = "l00506" ></ a >< span class = "lineno" > 506</ span >   < span class = "keyword" ></ span > {</ div >
< div class = "line" >< a name = "l00507" ></ a >< span class = "lineno" > 507</ span >   < span class = "keywordflow" > return</ span > abbreviations.find(abbrev)-> second;</ div >
< div class = "line" >< a name = "l00508" ></ a >< span class = "lineno" > 508</ span >   }</ div >
< div class = "line" >< a name = "l00509" ></ a >< span class = "lineno" > 509</ span >   </ div >
< div class = "line" >< a name = "l00510" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a46df7d396fb56e30351c9a7308792200" > 510</ a ></ span >   < span class = "keywordtype" > bool</ span > < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a46df7d396fb56e30351c9a7308792200" > Hazelnupp::HasAbbreviation</ a > (< span class = "keyword" > const</ span > std::string& abbrev)< span class = "keyword" > const</ span ></ div >
< div class = "line" >< a name = "l00511" ></ a >< span class = "lineno" > 511</ span >   < span class = "keyword" ></ span > {</ div >
< div class = "line" >< a name = "l00512" ></ a >< span class = "lineno" > 512</ span >   < span class = "keywordflow" > return</ span > abbreviations.find(abbrev) != abbreviations.end();</ div >
< div class = "line" >< a name = "l00513" ></ a >< span class = "lineno" > 513</ span >   }</ div >
< div class = "line" >< a name = "l00514" ></ a >< span class = "lineno" > 514</ span >   </ div >
< div class = "line" >< a name = "l00515" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a5175869b025468324cefad487081e91d" > 515</ a ></ span >   < span class = "keywordtype" > void</ span > < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a5175869b025468324cefad487081e91d" > Hazelnupp::ClearAbbreviations</ a > ()</ div >
< div class = "line" >< a name = "l00516" ></ a >< span class = "lineno" > 516</ span >   {</ div >
< div class = "line" >< a name = "l00517" ></ a >< span class = "lineno" > 517</ span >   abbreviations.clear();</ div >
< div class = "line" >< a name = "l00518" ></ a >< span class = "lineno" > 518</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00519" ></ a >< span class = "lineno" > 519</ span >   }</ div >
< div class = "line" >< a name = "l00520" ></ a >< span class = "lineno" > 520</ span >   </ div >
< div class = "line" >< a name = "l00521" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a8a3331836b9ea1f920e77f6d332019d5" > 521</ a ></ span >   < span class = "keywordtype" > void</ span > < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a8a3331836b9ea1f920e77f6d332019d5" > Hazelnupp::RegisterConstraints</ a > (< span class = "keyword" > const</ span > std::vector< ParamConstraint>& constraints)</ div >
< div class = "line" >< a name = "l00522" ></ a >< span class = "lineno" > 522</ span >   {</ div >
< div class = "line" >< a name = "l00523" ></ a >< span class = "lineno" > 523</ span >   < span class = "keywordflow" > for</ span > (< span class = "keyword" > const</ span > < a class = "code" href = "structHazelnp_1_1ParamConstraint.html" > ParamConstraint</ a > & pc : constraints)</ div >
< div class = "line" >< a name = "l00524" ></ a >< span class = "lineno" > 524</ span >   {</ div >
< div class = "line" >< a name = "l00525" ></ a >< span class = "lineno" > 525</ span >   < span class = "comment" > // Does this constraint already exist?</ span ></ div >
< div class = "line" >< a name = "l00526" ></ a >< span class = "lineno" > 526</ span >   < span class = "keyword" > const</ span > < span class = "keyword" > auto</ span > constraint = this-> constraints.find(pc.key);</ div >
< div class = "line" >< a name = "l00527" ></ a >< span class = "lineno" > 527</ span >   < span class = "comment" > // If yes, replace it.</ span ></ div >
< div class = "line" >< a name = "l00528" ></ a >< span class = "lineno" > 528</ span >   < span class = "keywordflow" > if</ span > (constraint != this-> constraints.end())</ div >
< div class = "line" >< a name = "l00529" ></ a >< span class = "lineno" > 529</ span >   constraint-> second = pc;</ div >
< div class = "line" >< a name = "l00530" ></ a >< span class = "lineno" > 530</ span >   </ div >
< div class = "line" >< a name = "l00531" ></ a >< span class = "lineno" > 531</ span >   < span class = "comment" > // Else, create a new pair</ span ></ div >
< div class = "line" >< a name = "l00532" ></ a >< span class = "lineno" > 532</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00533" ></ a >< span class = "lineno" > 533</ span >   this-> constraints.insert(std::pair< std::string, ParamConstraint> (</ div >
< div class = "line" >< a name = "l00534" ></ a >< span class = "lineno" > 534</ span >   pc.key,</ div >
< div class = "line" >< a name = "l00535" ></ a >< span class = "lineno" > 535</ span >   pc</ div >
< div class = "line" >< a name = "l00536" ></ a >< span class = "lineno" > 536</ span >   ));</ div >
< div class = "line" >< a name = "l00537" ></ a >< span class = "lineno" > 537</ span >   }</ div >
< div class = "line" >< a name = "l00538" ></ a >< span class = "lineno" > 538</ span >   </ div >
< div class = "line" >< a name = "l00539" ></ a >< span class = "lineno" > 539</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00540" ></ a >< span class = "lineno" > 540</ span >   }</ div >
< div class = "line" >< a name = "l00541" ></ a >< span class = "lineno" > 541</ span >   </ div >
< div class = "line" >< a name = "l00542" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a3970b74583def49c6632fe08a4499809" > 542</ a ></ span >   < span class = "keywordtype" > void</ span > < a class = "code" href = "classHazelnp_1_1Hazelnupp.html#a3970b74583def49c6632fe08a4499809" > Hazelnupp::ClearConstraints</ a > ()</ div >
< div class = "line" >< a name = "l00543" ></ a >< span class = "lineno" > 543</ span >   {</ div >
< div class = "line" >< a name = "l00544" ></ a >< span class = "lineno" > 544</ span >   constraints.clear();</ div >
< div class = "line" >< a name = "l00545" ></ a >< span class = "lineno" > 545</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00546" ></ a >< span class = "lineno" > 546</ span >   }</ div >
< div class = "line" >< a name = "l00547" ></ a >< span class = "lineno" > 547</ span >   </ div >
< div class = "line" >< a name = "l00548" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Hazelnupp.html#a17845623ca686caa51f3c8254e85551e" > 548</ a ></ span >   < 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 = "l00549" ></ a >< span class = "lineno" > 549</ span >   {</ div >
< div class = "line" >< a name = "l00550" ></ a >< span class = "lineno" > 550</ span >   this-> crashOnFail = crashOnFail;</ div >
< div class = "line" >< a name = "l00551" ></ a >< span class = "lineno" > 551</ span >   < span class = "keywordflow" > return</ span > ;</ div >
< div class = "line" >< a name = "l00552" ></ a >< span class = "lineno" > 552</ span >   }</ div >
< div class = "line" >< a name = "l00553" ></ a >< span class = "lineno" > 553</ span >   </ div >
< div class = "line" >< a name = "l00554" ></ a >< span class = "lineno" > 554</ span >   < span class = "keyword" > const</ span > < a class = "code" href = "structHazelnp_1_1ParamConstraint.html" > ParamConstraint</ a > * Hazelnupp::GetConstraintForKey(< span class = "keyword" > const</ span > std::string& key)< span class = "keyword" > const</ span ></ div >
< div class = "line" >< a name = "l00555" ></ a >< span class = "lineno" > 555</ span >   < span class = "keyword" ></ span > {</ div >
< div class = "line" >< a name = "l00556" ></ a >< span class = "lineno" > 556</ span >   < span class = "keyword" > const</ span > < span class = "keyword" > auto</ span > constraint = constraints.find(key);</ div >
< div class = "line" >< a name = "l00557" ></ a >< span class = "lineno" > 557</ span >   </ div >
< div class = "line" >< a name = "l00558" ></ a >< span class = "lineno" > 558</ span >   < span class = "keywordflow" > if</ span > (constraint == constraints.end())</ div >
< div class = "line" >< a name = "l00559" ></ a >< span class = "lineno" > 559</ span >   < span class = "keywordflow" > return</ span > < span class = "keyword" > nullptr</ span > ;</ div >
< div class = "line" >< a name = "l00560" ></ a >< span class = "lineno" > 560</ span >   </ div >
< div class = "line" >< a name = "l00561" ></ a >< span class = "lineno" > 561</ span >   < span class = "keywordflow" > return</ span > & constraint-> second;</ div >
< div class = "line" >< a name = "l00562" ></ a >< span class = "lineno" > 562</ span >   }</ div >
2021-06-03 12:22:37 +02:00
</ div > <!-- fragment --> </ div > <!-- contents -->
< div class = "ttc" id = "aHazelnuppException_8h_html" >< div class = "ttname" >< a href = "HazelnuppException_8h.html" > HazelnuppException.h</ a ></ div ></ div >
2021-06-04 02:30:58 +02:00
< 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 >
2021-06-03 13:43:05 +02:00
< 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 & 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 & str, bool & out_isInt, long double & 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 >
2021-06-04 02:30:58 +02:00
< 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 & 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#l00312" > Hazelnupp.cpp:312</ 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#l00542" > Hazelnupp.cpp:542</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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 >
2021-06-04 02:30:58 +02:00
< 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 & 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#l00485" > Hazelnupp.cpp:485</ 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#l00342" > Hazelnupp.cpp:342</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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#l00025" > Hazelnupp.cpp:25</ a ></ div ></ div >
2021-06-04 02:30:58 +02:00
< 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 & operator[](const std::string & 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#l00490" > Hazelnupp.cpp:490</ a ></ div ></ div >
2021-06-03 12:22:37 +02:00
< div class = "ttc" id = "aStringValue_8h_html" >< div class = "ttname" >< a href = "StringValue_8h.html" > StringValue.h</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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 & 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 >
2021-06-03 12:22:37 +02:00
< div class = "ttc" id = "aIntValue_8h_html" >< div class = "ttname" >< a href = "IntValue_8h.html" > IntValue.h</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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#l00014" > Hazelnupp.cpp:14</ a ></ div ></ div >
2021-06-04 02:30:58 +02:00
< 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#l00515" > Hazelnupp.cpp:515</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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 >
2021-06-04 02:30:58 +02:00
< 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 & 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#l00306" > Hazelnupp.cpp:306</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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 >
2021-06-04 02:30:58 +02:00
< 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#l00290" > Hazelnupp.cpp:290</ 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#l00295" > Hazelnupp.cpp:295</ 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#l00301" > Hazelnupp.cpp:301</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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#l00057" > ParamConstraint.h:57</ 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 >
2021-06-04 02:30:58 +02:00
< 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#l00164" > Hazelnupp.cpp:164</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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 >
2021-06-03 12:22:37 +02:00
< div class = "ttc" id = "aListValue_8h_html" >< div class = "ttname" >< a href = "ListValue_8h.html" > ListValue.h</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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#l00054" > ParamConstraint.h:54</ 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 & 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 >
2021-06-04 02:30:58 +02:00
< 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#l00499" > Hazelnupp.cpp:499</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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 >
2021-06-03 12:22:37 +02:00
< div class = "ttc" id = "aVoidValue_8h_html" >< div class = "ttname" >< a href = "VoidValue_8h.html" > VoidValue.h</ a ></ div ></ div >
2021-06-04 02:30:58 +02:00
< 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#l00521" > Hazelnupp.cpp:521</ 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 & GetAbbreviation(const std::string & abbrev) const</ div >< div class = "ttdoc" > Will return the long form of an abbreviation (like – force for -f)</ div >< div class = "ttdef" >< b > Definition:</ b > < a href = "Hazelnupp_8cpp_source.html#l00505" > Hazelnupp.cpp:505</ a ></ div ></ div >
2021-06-03 12:22:37 +02:00
< div class = "ttc" id = "aHazelnupp_8h_html" >< div class = "ttname" >< a href = "Hazelnupp_8h.html" > Hazelnupp.h</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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_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 = "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 >
2021-06-04 02:30:58 +02:00
< div class = "ttc" id = "aclassHazelnp_1_1Hazelnupp_html_a8490e0b10feee0b815c043e7cad454cb" >< div class = "ttname" >< a href = "classHazelnp_1_1Hazelnupp.html#a8490e0b10feee0b815c043e7cad454cb" > Hazelnp::Hazelnupp::ClearDescription</ a ></ div >< div class = "ttdeci" > void ClearDescription(const std::string & 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#l00335" > Hazelnupp.cpp:335</ a ></ div ></ div >
2021-06-03 12:22:37 +02:00
< div class = "ttc" id = "aFloatValue_8h_html" >< div class = "ttname" >< a href = "FloatValue_8h.html" > FloatValue.h</ a ></ div ></ div >
2021-06-04 02:30:58 +02:00
< 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 & 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#l00510" > Hazelnupp.cpp:510</ a ></ div ></ div >
2021-06-03 13:43:05 +02:00
< 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 >
2021-06-04 02:30:58 +02:00
< 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#l00548" > Hazelnupp.cpp:548</ 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 & parameter, const std::string & 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#l00317" > Hazelnupp.cpp:317</ a ></ div ></ div >
< div class = "ttc" id = "aclassHazelnp_1_1Hazelnupp_html_a6637dc4b78871d7ecba1f2e1c8c28fb0" >< div class = "ttname" >< a href = "classHazelnp_1_1Hazelnupp.html#a6637dc4b78871d7ecba1f2e1c8c28fb0" > Hazelnp::Hazelnupp::GetDescription</ a ></ div >< div class = "ttdeci" > const std::string GetDescription(const std::string & 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#l00323" > Hazelnupp.cpp:323</ 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 >
2021-06-03 13:43:05 +02:00
< 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< Value*> )</ 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 >
2021-06-03 12:22:37 +02:00
< 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 >
2021-06-04 15:59:04 +02:00
Generated on Fri Jun 4 2021 15:58:56 for Leonetienne/Hazelnupp by   < a href = "http://www.doxygen.org/index.html" >
2021-06-03 12:22:37 +02:00
< img class = "footer" src = "doxygen.png" alt = "doxygen" />
</ a > 1.8.17
</ small ></ address >
</ body >
</ html >