From c0c5a3a06d3eadfc4ac9f14e9c705a4f4e5b8335 Mon Sep 17 00:00:00 2001 From: Leonetienne Date: Sun, 5 Sep 2021 12:12:03 +0200 Subject: [PATCH] Built mkdocs --- docs/CmdArgsInterface_8cpp.html | 49 +- docs/CmdArgsInterface_8cpp__incl.map | 47 +- docs/CmdArgsInterface_8cpp__incl.md5 | 2 +- docs/CmdArgsInterface_8cpp__incl.png | Bin 111820 -> 114201 bytes docs/CmdArgsInterface_8cpp_source.html | 1227 +++++++++-------- docs/CmdArgsInterface_8h.html | 18 +- docs/CmdArgsInterface_8h__incl.map | 15 +- docs/CmdArgsInterface_8h__incl.md5 | 2 +- docs/CmdArgsInterface_8h__incl.png | Bin 34067 -> 36035 bytes docs/CmdArgsInterface_8h_source.html | 337 ++--- docs/DataType_8h.html | 2 +- docs/DataType_8h_source.html | 4 +- ...lnupp_8vcxproj_8FileListAbsolute_8txt.html | 2 +- docs/FloatValue_8cpp.html | 2 +- docs/FloatValue_8cpp_source.html | 4 +- docs/FloatValue_8h.html | 2 +- docs/FloatValue_8h_source.html | 4 +- docs/HazelnuppException_8h.html | 5 +- docs/HazelnuppException_8h_source.html | 26 +- docs/IntValue_8cpp.html | 2 +- docs/IntValue_8cpp_source.html | 4 +- docs/IntValue_8h.html | 2 +- docs/IntValue_8h_source.html | 4 +- docs/ListValue_8cpp.html | 2 +- docs/ListValue_8cpp_source.html | 4 +- docs/ListValue_8h.html | 2 +- docs/ListValue_8h_source.html | 4 +- docs/ParamConstraint_8h.html | 2 +- docs/ParamConstraint_8h_source.html | 118 +- docs/Parameter_8cpp.html | 2 +- docs/Parameter_8cpp_source.html | 4 +- docs/Parameter_8h.html | 2 +- docs/Parameter_8h_source.html | 4 +- docs/Placeholders_8h.html | 2 +- docs/Placeholders_8h_source.html | 4 +- ...lnupp_8vcxproj_8FileListAbsolute_8txt.html | 2 +- docs/StringTools_8cpp.html | 2 +- docs/StringTools_8cpp_source.html | 4 +- docs/StringTools_8h.html | 2 +- docs/StringTools_8h_source.html | 4 +- docs/StringValue_8cpp.html | 2 +- docs/StringValue_8cpp_source.html | 4 +- docs/StringValue_8h.html | 2 +- docs/StringValue_8h_source.html | 4 +- docs/Value_8cpp.html | 2 +- docs/Value_8cpp_source.html | 4 +- docs/Value_8h.html | 2 +- docs/Value_8h_source.html | 4 +- docs/Version_8h.html | 126 ++ docs/Version_8h__dep__incl.map | 5 + docs/Version_8h__dep__incl.md5 | 1 + docs/Version_8h__dep__incl.png | Bin 0 -> 8372 bytes docs/Version_8h_source.html | 91 ++ docs/VoidValue_8cpp.html | 2 +- docs/VoidValue_8cpp_source.html | 4 +- docs/VoidValue_8h.html | 2 +- docs/VoidValue_8h_source.html | 4 +- docs/annotated.html | 27 +- ...ssHazelnp_1_1CmdArgsInterface-members.html | 2 +- docs/classHazelnp_1_1CmdArgsInterface.html | 617 +++++---- docs/classHazelnp_1_1FloatValue-members.html | 2 +- docs/classHazelnp_1_1FloatValue.html | 2 +- ...1HazelnuppConstraintException-members.html | 2 +- ...zelnp_1_1HazelnuppConstraintException.html | 13 +- ...uppConstraintException__inherit__graph.map | 11 +- ...uppConstraintException__inherit__graph.md5 | 2 +- ...uppConstraintException__inherit__graph.png | Bin 14704 -> 18728 bytes ...straintIncompatibleParameters-members.html | 100 ++ ...lnuppConstraintIncompatibleParameters.html | 232 ++++ ...intIncompatibleParameters__coll__graph.map | 8 + ...intIncompatibleParameters__coll__graph.md5 | 1 + ...intIncompatibleParameters__coll__graph.png | Bin 0 -> 16236 bytes ...IncompatibleParameters__inherit__graph.map | 6 + ...IncompatibleParameters__inherit__graph.md5 | 1 + ...IncompatibleParameters__inherit__graph.png | Bin 0 -> 10430 bytes ...zelnuppConstraintMissingValue-members.html | 2 +- ...np_1_1HazelnuppConstraintMissingValue.html | 2 +- ...elnuppConstraintTypeMissmatch-members.html | 2 +- ...p_1_1HazelnuppConstraintTypeMissmatch.html | 2 +- ...Hazelnp_1_1HazelnuppException-members.html | 2 +- docs/classHazelnp_1_1HazelnuppException.html | 17 +- ..._1_1HazelnuppException__inherit__graph.map | 15 +- ..._1_1HazelnuppException__inherit__graph.md5 | 2 +- ..._1_1HazelnuppException__inherit__graph.png | Bin 23887 -> 24773 bytes ...1HazelnuppInvalidKeyException-members.html | 2 +- ...zelnp_1_1HazelnuppInvalidKeyException.html | 2 +- ...pValueNotConvertibleException-members.html | 2 +- ...HazelnuppValueNotConvertibleException.html | 2 +- docs/classHazelnp_1_1IntValue-members.html | 2 +- docs/classHazelnp_1_1IntValue.html | 2 +- ...np_1_1Internal_1_1StringTools-members.html | 2 +- ...assHazelnp_1_1Internal_1_1StringTools.html | 2 +- docs/classHazelnp_1_1ListValue-members.html | 2 +- docs/classHazelnp_1_1ListValue.html | 2 +- docs/classHazelnp_1_1Parameter-members.html | 2 +- docs/classHazelnp_1_1Parameter.html | 2 +- docs/classHazelnp_1_1StringValue-members.html | 2 +- docs/classHazelnp_1_1StringValue.html | 2 +- docs/classHazelnp_1_1Value-members.html | 2 +- docs/classHazelnp_1_1Value.html | 2 +- docs/classHazelnp_1_1VoidValue-members.html | 2 +- docs/classHazelnp_1_1VoidValue.html | 2 +- docs/classes.html | 23 +- .../dir_0202e1e26df2e040f4dc3d434eecf04c.html | 4 +- .../dir_0cc5f59b28c403d42cc56800132eb975.html | 2 +- .../dir_1148ebc2b25b55095aebf6f4cbb6efca.html | 2 +- .../dir_a8cffda729361e9d9637effa362fcea9.html | 2 +- docs/files.html | 7 +- docs/functions.html | 13 +- docs/functions_func.html | 14 +- docs/functions_rela.html | 2 +- docs/functions_vars.html | 5 +- docs/globals.html | 6 +- docs/globals_defs.html | 6 +- docs/graph_legend.html | 2 +- docs/hierarchy.html | 29 +- docs/index.html | 76 +- docs/index_8md.html | 2 +- docs/inherit_graph_1.map | 15 +- docs/inherit_graph_1.md5 | 2 +- docs/inherit_graph_1.png | Bin 22968 -> 23383 bytes docs/inherits.html | 17 +- docs/menudata.js | 5 +- docs/namespaceHazelnp.html | 5 +- docs/namespaceHazelnp_1_1Internal.html | 2 +- docs/namespaceHazelnp_1_1Placeholders.html | 2 +- docs/namespacemembers.html | 2 +- docs/namespacemembers_enum.html | 2 +- docs/namespacemembers_func.html | 2 +- docs/namespacemembers_vars.html | 2 +- docs/namespaces.html | 2 +- docs/search/all_10.js | 2 +- docs/search/all_11.js | 16 +- docs/search/all_5.js | 22 +- docs/search/all_6.js | 14 +- docs/search/all_7.js | 2 +- docs/search/all_8.js | 8 +- docs/search/all_9.js | 2 +- docs/search/all_a.js | 16 +- docs/search/all_b.js | 16 +- docs/search/all_c.js | 14 +- docs/search/all_d.js | 22 +- docs/search/all_e.js | 6 +- docs/search/all_f.js | 15 +- docs/search/classes_0.js | 2 +- docs/search/classes_1.js | 2 +- docs/search/classes_2.js | 13 +- docs/search/classes_3.js | 2 +- docs/search/classes_4.js | 2 +- docs/search/classes_5.js | 4 +- docs/search/classes_6.js | 4 +- docs/search/classes_7.js | 4 +- docs/search/defines_0.js | 2 +- docs/search/enums_0.js | 2 +- docs/search/enumvalues_0.js | 2 +- docs/search/enumvalues_1.js | 2 +- docs/search/enumvalues_2.js | 2 +- docs/search/enumvalues_3.js | 2 +- docs/search/enumvalues_4.js | 2 +- docs/search/files_0.js | 4 +- docs/search/files_1.js | 2 +- docs/search/files_2.js | 4 +- docs/search/files_3.js | 4 +- docs/search/files_4.js | 6 +- docs/search/files_5.js | 4 +- docs/search/files_6.js | 8 +- docs/search/files_7.js | 8 +- docs/search/files_8.js | 9 +- docs/search/functions_0.js | 2 +- docs/search/functions_1.js | 16 +- docs/search/functions_10.js | 16 +- docs/search/functions_2.js | 4 +- docs/search/functions_3.js | 2 +- docs/search/functions_4.js | 34 +- docs/search/functions_5.js | 19 +- docs/search/functions_6.js | 5 +- docs/search/functions_7.js | 2 +- docs/search/functions_8.js | 2 +- docs/search/functions_9.js | 14 +- docs/search/functions_a.js | 8 +- docs/search/functions_b.js | 10 +- docs/search/functions_c.js | 10 +- docs/search/functions_d.js | 4 +- docs/search/functions_e.js | 4 +- docs/search/functions_f.js | 2 +- docs/search/namespaces_0.js | 6 +- docs/search/pages_0.js | 2 +- docs/search/related_0.js | 2 +- docs/search/related_1.js | 2 +- docs/search/searchdata.js | 11 +- docs/search/variables_0.js | 2 +- docs/search/variables_1.js | 2 +- docs/search/variables_2.js | 2 +- docs/search/variables_3.js | 2 +- docs/search/variables_4.js | 3 +- docs/search/variables_5.js | 3 +- docs/search/variables_6.js | 2 +- ...uctHazelnp_1_1ParamConstraint-members.html | 17 +- docs/structHazelnp_1_1ParamConstraint.html | 177 ++- ...azelnp_1_1ParamConstraint__coll__graph.map | 2 +- ...azelnp_1_1ParamConstraint__coll__graph.md5 | 2 +- ...azelnp_1_1ParamConstraint__coll__graph.png | Bin 10874 -> 11319 bytes 202 files changed, 2546 insertions(+), 1638 deletions(-) create mode 100644 docs/Version_8h.html create mode 100644 docs/Version_8h__dep__incl.map create mode 100644 docs/Version_8h__dep__incl.md5 create mode 100644 docs/Version_8h__dep__incl.png create mode 100644 docs/Version_8h_source.html create mode 100644 docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters-members.html create mode 100644 docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters.html create mode 100644 docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__coll__graph.map create mode 100644 docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__coll__graph.md5 create mode 100644 docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__coll__graph.png create mode 100644 docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__inherit__graph.map create mode 100644 docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__inherit__graph.md5 create mode 100644 docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__inherit__graph.png diff --git a/docs/CmdArgsInterface_8cpp.html b/docs/CmdArgsInterface_8cpp.html index ecd3961..e3c1fc6 100644 --- a/docs/CmdArgsInterface_8cpp.html +++ b/docs/CmdArgsInterface_8cpp.html @@ -94,29 +94,30 @@ Include dependency graph for CmdArgsInterface.cpp:
- - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +
@@ -124,7 +125,7 @@ Include dependency graph for CmdArgsInterface.cpp: diff --git a/docs/CmdArgsInterface_8cpp__incl.map b/docs/CmdArgsInterface_8cpp__incl.map index b1dc058..d5a35e7 100644 --- a/docs/CmdArgsInterface_8cpp__incl.map +++ b/docs/CmdArgsInterface_8cpp__incl.map @@ -1,25 +1,26 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/CmdArgsInterface_8cpp__incl.md5 b/docs/CmdArgsInterface_8cpp__incl.md5 index 24371fc..dacd236 100644 --- a/docs/CmdArgsInterface_8cpp__incl.md5 +++ b/docs/CmdArgsInterface_8cpp__incl.md5 @@ -1 +1 @@ -1e52877c77530f8b60cf62a9418ab996 \ No newline at end of file +48e8cf6b9c7c3f6e58426b78b0d50f5b \ No newline at end of file diff --git a/docs/CmdArgsInterface_8cpp__incl.png b/docs/CmdArgsInterface_8cpp__incl.png index 3c76f10b1e0e7950ed18016ed63566c39c8ae7d8..3e1c36efccc73b9a109cbe7e789c3be4a2777d44 100644 GIT binary patch literal 114201 zcmZs@1yogCv<7;R25AxLQcy%tK)Sm@rCUNuIt8Q=losg{P>?RAI|S(v0claXyLt2I zfA70*j5q#Zpqzcqo_no1zgoOjRhGfSp};{P5O{L3l8+GxbY=tsB^e6?{)9X9Rxf

Y7uxGedHqm|_|0_f?M2>K+@ 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

tGqb@DIqUYlJx&0Sm@sW_Y>6mR$ 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 z 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�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 diff --git a/docs/CmdArgsInterface_8cpp_source.html b/docs/CmdArgsInterface_8cpp_source.html index 958357d..cdec273 100644 --- a/docs/CmdArgsInterface_8cpp_source.html +++ b/docs/CmdArgsInterface_8cpp_source.html @@ -125,595 +125,642 @@ $(function() {

45 
46  executableName = std::string(rawArgs[0]);
47 
-
48  std::size_t i = 1;
-
49  while (i < rawArgs.size())
-
50  {
-
51  if ((rawArgs[i].length() > 2) && (rawArgs[i].substr(0, 2) == "--"))
-
52  {
-
53  Parameter* param = nullptr;
-
54  i = ParseNextParameter(i, param);
-
55 
-
56  parameters.insert(std::pair<std::string, Parameter*>(param->Key(), param));
-
57  }
-
58  else
-
59  i++;
-
60  }
-
61 
-
62  // Apply constraints such as default values, and required parameters.
-
63  // Types have already been enforced.
-
64  // Dont apply constraints when we are just printind the param docs
-
65  if ((!catchHelp) || (!HasParam("--help")))
-
66  ApplyConstraints();
-
67  }
-
68  catch (const HazelnuppConstraintTypeMissmatch& exc)
-
69  {
-
70  if (crashOnFail)
-
71  {
-
72  std::cout << GenerateDocumentation() << std::endl << std::endl;
-
73  std::cerr << "Parameter error: " << exc.What() << std::endl;
-
74  quick_exit(-1009);
-
75  }
-
76  else
-
77  throw exc; // yeet
-
78  }
-
79  catch (const HazelnuppConstraintMissingValue& exc)
-
80  {
-
81  if (crashOnFail)
-
82  {
-
83  std::cout << GenerateDocumentation() << std::endl << std::endl;
-
84  std::cerr << "Parameter error: " << exc.What() << std::endl;
-
85  quick_exit(-1010);
-
86  }
-
87  else
-
88  throw exc; // yeet
-
89  }
-
90 
-
91  // Catch --help parameter
-
92  if ((catchHelp) && (HasParam("--help")))
-
93  {
-
94  std::cout << GenerateDocumentation() << std::endl;
-
95  quick_exit(0);
-
96  }
-
97 
-
98  return;
-
99 }
-
100 
-
101 std::size_t CmdArgsInterface::ParseNextParameter(const std::size_t parIndex, Parameter*& out_Par)
-
102 {
-
103  std::size_t i = parIndex;
-
104  const std::string key = rawArgs[parIndex];
-
105  std::vector<std::string> values;
-
106 
-
107  // Get values
-
108  for (i++; i < rawArgs.size(); i++)
-
109  // If not another parameter
-
110  if ((rawArgs[i].length() < 2) || (rawArgs[i].substr(0, 2) != "--"))
-
111  values.emplace_back(rawArgs[i]);
-
112  else
-
113  {
-
114  break;
-
115  }
-
116 
-
117  // Fetch constraint info
-
118  const ParamConstraint* pcn = GetConstraintForKey(key);
-
119 
-
120  Value* parsedVal = ParseValue(values, pcn);
-
121  if (parsedVal != nullptr)
-
122  {
-
123  out_Par = new Parameter(key, parsedVal);
+
48  // Read and parse all parameters
+
49  std::size_t i = 1;
+
50  while (i < rawArgs.size())
+
51  {
+
52  if ((rawArgs[i].length() > 2) && (rawArgs[i].substr(0, 2) == "--"))
+
53  {
+
54  Parameter* param = nullptr;
+
55  i = ParseNextParameter(i, param);
+
56 
+
57  parameters.insert(std::pair<std::string, Parameter*>(param->Key(), param));
+
58  }
+
59  else
+
60  i++;
+
61  }
+
62 
+
63  // Apply constraints such as default values, and required parameters.
+
64  // Types have already been enforced.
+
65  // Dont apply constraints when we are just printind the param docs
+
66  if ((!catchHelp) || (!HasParam("--help")))
+
67  ApplyConstraints();
+
68  }
+ +
70  {
+
71  if (crashOnFail)
+
72  {
+
73  std::cout << GenerateDocumentation() << std::endl << std::endl;
+
74  std::cerr << "Parameter error: " << exc.What() << std::endl;
+
75  quick_exit(-1000);
+
76  }
+
77  else
+
78  throw exc; // yeet
+
79  }
+
80  catch (const HazelnuppConstraintMissingValue& exc)
+
81  {
+
82  if (crashOnFail)
+
83  {
+
84  std::cout << GenerateDocumentation() << std::endl << std::endl;
+
85  std::cerr << "Parameter error: " << exc.What() << std::endl;
+
86  quick_exit(-1001);
+
87  }
+
88  else
+
89  throw exc; // yeet
+
90  }
+
91  catch (const HazelnuppConstraintTypeMissmatch& exc)
+
92  {
+
93  if (crashOnFail)
+
94  {
+
95  std::cout << GenerateDocumentation() << std::endl << std::endl;
+
96  std::cerr << "Parameter error: " << exc.What() << std::endl;
+
97  quick_exit(-1002);
+
98  }
+
99  else
+
100  throw exc; // yeet
+
101  }
+
102  catch (const HazelnuppConstraintException& exc)
+
103  {
+
104  if (crashOnFail)
+
105  {
+
106  std::cout << GenerateDocumentation() << std::endl << std::endl;
+
107  std::cerr << "Parameter error: " << exc.What() << std::endl;
+
108  quick_exit(-1003);
+
109  }
+
110  else
+
111  throw exc; // yeet
+
112  }
+
113  catch (const HazelnuppException& exc)
+
114  {
+
115  if (crashOnFail)
+
116  {
+
117  std::cout << GenerateDocumentation() << std::endl << std::endl;
+
118  std::cerr << "Parameter error: " << exc.What() << std::endl;
+
119  quick_exit(-1004);
+
120  }
+
121  else
+
122  throw exc; // yeet
+
123  }
124 
-
125  delete parsedVal;
-
126  parsedVal = nullptr;
-
127  }
-
128  else
-
129  throw std::runtime_error("Unable to parse parameter!");
-
130 
-
131  return i;
-
132 }
-
133 
-
134 void CmdArgsInterface::PopulateRawArgs(const int argc, const char* const* argv)
-
135 {
-
136  rawArgs.clear();
-
137  rawArgs.reserve(argc);
-
138 
-
139  for (int i = 0; i < argc; i++)
-
140  rawArgs.emplace_back(std::string(argv[i]));
-
141 
-
142  return;
-
143 }
-
144 
-
145 void CmdArgsInterface::ExpandAbbreviations()
-
146 {
-
147  // Abort if no abbreviations
-
148  if (parameterAbreviations.size() == 0)
-
149  return;
+
125  // Catch --help parameter
+
126  if ((catchHelp) && (HasParam("--help")))
+
127  {
+
128  std::cout << GenerateDocumentation() << std::endl;
+
129  quick_exit(0);
+
130  }
+
131 
+
132  return;
+
133 }
+
134 
+
135 std::size_t CmdArgsInterface::ParseNextParameter(const std::size_t parIndex, Parameter*& out_Par)
+
136 {
+
137  std::size_t i = parIndex;
+
138  const std::string key = rawArgs[parIndex];
+
139  std::vector<std::string> values;
+
140 
+
141  // Get values
+
142  for (i++; i < rawArgs.size(); i++)
+
143  // If not another parameter
+
144  if ((rawArgs[i].length() < 2) || (rawArgs[i].substr(0, 2) != "--"))
+
145  values.emplace_back(rawArgs[i]);
+
146  else
+
147  {
+
148  break;
+
149  }
150 
-
151  for (std::string& arg : rawArgs)
-
152  {
-
153  // Is arg registered as an abbreviation?
-
154  auto abbr = parameterAbreviations.find(arg);
-
155  if (abbr != parameterAbreviations.end())
-
156  {
-
157  // Yes: replace arg with the long form
-
158  arg = abbr->second;
-
159  }
-
160  }
-
161 
-
162  return;
-
163 }
+
151  // Fetch constraint info
+
152  const ParamConstraint* pcn = GetConstraintForKey(key);
+
153 
+
154  Value* parsedVal = ParseValue(values, pcn);
+
155  if (parsedVal != nullptr)
+
156  {
+
157  out_Par = new Parameter(key, parsedVal);
+
158 
+
159  delete parsedVal;
+
160  parsedVal = nullptr;
+
161  }
+
162  else
+
163  throw std::runtime_error("Unable to parse parameter!");
164 
-
165 bool CmdArgsInterface::HasParam(const std::string& key) const
-
166 {
-
167  return parameters.find(key) != parameters.end();
-
168 }
-
169 
-
170 Value* CmdArgsInterface::ParseValue(const std::vector<std::string>& values, const ParamConstraint* constraint)
-
171 {
-
172  // This is the raw (unconverted) data type the user provided
-
173  DATA_TYPE rawInputType;
-
174 
-
175  // Constraint values
-
176  const bool constrainType = (constraint != nullptr) && (constraint->constrainType);
-
177 
-
178  // Void-type
-
179  if (values.size() == 0)
-
180  {
-
181  rawInputType = DATA_TYPE::VOID;
-
182 
-
183  // Is a list forced via a constraint? If yes, return an empty list
-
184  if ((constrainType) &&
-
185  (constraint->requiredType == DATA_TYPE::LIST))
-
186  return new ListValue();
-
187 
-
188  // Is a string forced via a constraint? If yes, return an empty string
-
189  else if ((constrainType) &&
-
190  (constraint->requiredType == DATA_TYPE::STRING))
-
191  return new StringValue("");
-
192 
-
193  // Is an int or float forced via constraint? If yes, throw an exception
-
194  else if ((constrainType) &&
-
195  ((constraint->requiredType == DATA_TYPE::INT) ||
-
196  (constraint->requiredType == DATA_TYPE::FLOAT)))
- -
198  constraint->key,
-
199  constraint->requiredType,
-
200  rawInputType,
-
201  GetDescription(constraint->key)
-
202  );
+
165  return i;
+
166 }
+
167 
+
168 void CmdArgsInterface::PopulateRawArgs(const int argc, const char* const* argv)
+
169 {
+
170  rawArgs.clear();
+
171  rawArgs.reserve(argc);
+
172 
+
173  for (int i = 0; i < argc; i++)
+
174  rawArgs.emplace_back(std::string(argv[i]));
+
175 
+
176  return;
+
177 }
+
178 
+
179 void CmdArgsInterface::ExpandAbbreviations()
+
180 {
+
181  // Abort if no abbreviations
+
182  if (parameterAbreviations.size() == 0)
+
183  return;
+
184 
+
185  for (std::string& arg : rawArgs)
+
186  {
+
187  // Is arg registered as an abbreviation?
+
188  auto abbr = parameterAbreviations.find(arg);
+
189  if (abbr != parameterAbreviations.end())
+
190  {
+
191  // Yes: replace arg with the long form
+
192  arg = abbr->second;
+
193  }
+
194  }
+
195 
+
196  return;
+
197 }
+
198 
+
199 bool CmdArgsInterface::HasParam(const std::string& key) const
+
200 {
+
201  return parameters.find(key) != parameters.end();
+
202 }
203 
-
204  // Else, just return the void type
-
205  return new VoidValue;
-
206  }
-
207 
-
208  // Force void type by constraint
-
209  else if ((constrainType) &&
-
210  (constraint->requiredType == DATA_TYPE::VOID))
-
211  {
-
212  return new VoidValue;
-
213  }
-
214 
-
215  // List-type
-
216  else if (values.size() > 1)
-
217  {
-
218  rawInputType = DATA_TYPE::LIST;
-
219 
-
220  // Should the type be something other than list?
-
221  if ((constrainType) &&
-
222  (constraint->requiredType != DATA_TYPE::LIST))
-
223  {
- -
225  constraint->key,
-
226  constraint->requiredType,
-
227  rawInputType,
-
228  GetDescription(constraint->key)
-
229  );
-
230  }
-
231 
-
232  ListValue* newList = new ListValue();
-
233  for (const std::string& val : values)
-
234  {
-
235  Value* tmp = ParseValue({ val });
-
236  newList->AddValue(tmp);
-
237  delete tmp;
-
238  }
-
239  return newList;
+
204 Value* CmdArgsInterface::ParseValue(const std::vector<std::string>& values, const ParamConstraint* constraint)
+
205 {
+
206  // This is the raw (unconverted) data type the user provided
+
207  DATA_TYPE rawInputType;
+
208 
+
209  // Constraint values
+
210  const bool constrainType = (constraint != nullptr) && (constraint->constrainType);
+
211 
+
212  // Void-type
+
213  if (values.size() == 0)
+
214  {
+
215  rawInputType = DATA_TYPE::VOID;
+
216 
+
217  // Is a list forced via a constraint? If yes, return an empty list
+
218  if ((constrainType) &&
+
219  (constraint->requiredType == DATA_TYPE::LIST))
+
220  return new ListValue();
+
221 
+
222  // Is a string forced via a constraint? If yes, return an empty string
+
223  else if ((constrainType) &&
+
224  (constraint->requiredType == DATA_TYPE::STRING))
+
225  return new StringValue("");
+
226 
+
227  // Is an int or float forced via constraint? If yes, throw an exception
+
228  else if ((constrainType) &&
+
229  ((constraint->requiredType == DATA_TYPE::INT) ||
+
230  (constraint->requiredType == DATA_TYPE::FLOAT)))
+ +
232  constraint->key,
+
233  constraint->requiredType,
+
234  rawInputType,
+
235  GetDescription(constraint->key)
+
236  );
+
237 
+
238  // Else, just return the void type
+
239  return new VoidValue;
240  }
241 
-
242  // Now we're only dealing with a single value
-
243  const std::string& val = values[0];
-
244 
-
245  // String
-
246  if (!Internal::StringTools::IsNumeric(val, true))
-
247  {
-
248  rawInputType = DATA_TYPE::STRING;
-
249 
-
250  // Is the type not supposed to be a string?
-
251  // void and list are already sorted out
-
252  if ((constrainType) &&
-
253  (constraint->requiredType != DATA_TYPE::STRING))
-
254  {
-
255  // We can only force a list-value from here
-
256  if (constraint->requiredType == DATA_TYPE::LIST)
-
257  {
-
258  ListValue* list = new ListValue();
-
259  Value* tmp = ParseValue({ val });
-
260  list->AddValue(tmp);
-
261  delete tmp;
-
262  tmp = nullptr;
-
263  return list;
-
264  }
-
265  // Else it is not possible to convert to a numeric
-
266  else
- -
268  constraint->key,
-
269  constraint->requiredType,
-
270  rawInputType,
-
271  GetDescription(constraint->key)
-
272  );
-
273  }
-
274 
-
275  return new StringValue(val);
-
276  }
-
277 
-
278  // In this case we have a numeric value.
-
279  // We should still produce a string if requested
-
280  if ((constrainType) &&
-
281  (constraint->requiredType == DATA_TYPE::STRING))
-
282  return new StringValue(val);
+
242  // Force void type by constraint
+
243  else if ((constrainType) &&
+
244  (constraint->requiredType == DATA_TYPE::VOID))
+
245  {
+
246  return new VoidValue;
+
247  }
+
248 
+
249  // List-type
+
250  else if (values.size() > 1)
+
251  {
+
252  rawInputType = DATA_TYPE::LIST;
+
253 
+
254  // Should the type be something other than list?
+
255  if ((constrainType) &&
+
256  (constraint->requiredType != DATA_TYPE::LIST))
+
257  {
+ +
259  constraint->key,
+
260  constraint->requiredType,
+
261  rawInputType,
+
262  GetDescription(constraint->key)
+
263  );
+
264  }
+
265 
+
266  ListValue* newList = new ListValue();
+
267  for (const std::string& val : values)
+
268  {
+
269  Value* tmp = ParseValue({ val });
+
270  newList->AddValue(tmp);
+
271  delete tmp;
+
272  }
+
273  return newList;
+
274  }
+
275 
+
276  // Now we're only dealing with a single value
+
277  const std::string& val = values[0];
+
278 
+
279  // String
+
280  if (!Internal::StringTools::IsNumeric(val, true))
+
281  {
+
282  rawInputType = DATA_TYPE::STRING;
283 
-
284  // Numeric
-
285  bool isInt;
-
286  long double num;
-
287 
-
288  if (Internal::StringTools::ParseNumber(val, isInt, num))
-
289  {
-
290  rawInputType = isInt ? DATA_TYPE::INT : DATA_TYPE::FLOAT;
-
291 
-
292  // Is the type constrained?
-
293  // (only int and float left)
-
294  if (constrainType)
-
295  {
-
296  // Must it be an integer?
-
297  if (constraint->requiredType == DATA_TYPE::INT)
-
298  return new IntValue((long long int)num);
-
299  // Must it be a floating point?
-
300  else if (constraint->requiredType == DATA_TYPE::FLOAT)
-
301  return new FloatValue(num);
-
302  // Else it must be a List
-
303  else
-
304  {
-
305  ListValue* list = new ListValue();
-
306  Value* tmp = ParseValue({ val });
-
307  list->AddValue(tmp);
-
308  delete tmp;
-
309  tmp = nullptr;
-
310  return list;
-
311  }
-
312  }
-
313  // Type is not constrained
-
314  else
-
315  {
-
316  // Integer
-
317  if (isInt)
-
318  return new IntValue((long long int)num);
-
319 
-
320  // Double
-
321  return new FloatValue(num);
-
322  }
-
323  }
-
324 
-
325  // Failed
-
326  return nullptr;
-
327 }
-
328 
- -
330 {
-
331  return crashOnFail;
-
332 }
-
333 
-
334 void CmdArgsInterface::SetCatchHelp(bool catchHelp)
-
335 {
-
336  this->catchHelp = catchHelp;
-
337  return;
-
338 }
-
339 
- -
341 {
-
342  return catchHelp;
-
343 }
-
344 
-
345 void CmdArgsInterface::SetBriefDescription(const std::string& description)
-
346 {
-
347  briefDescription = description;
-
348  return;
-
349 }
-
350 
- -
352 {
-
353  return briefDescription;
-
354 }
-
355 
-
356 void Hazelnp::CmdArgsInterface::RegisterDescription(const std::string& parameter, const std::string& description)
-
357 {
-
358  parameterDescriptions[parameter] = description;
-
359  return;
-
360 }
-
361 
-
362 const std::string& Hazelnp::CmdArgsInterface::GetDescription(const std::string& parameter) const
-
363 {
-
364  // Do we already have a description for this parameter?
-
365  if (!HasDescription(parameter))
-
366  // No? Then return ""
- -
368 
-
369  // We do? Then return it
-
370  return parameterDescriptions.find(parameter)->second;
-
371 }
-
372 
-
373 bool CmdArgsInterface::HasDescription(const std::string& parameter) const
-
374 {
-
375  return parameterDescriptions.find(parameter) != parameterDescriptions.end();
-
376 }
-
377 
-
378 void CmdArgsInterface::ClearDescription(const std::string& parameter)
-
379 {
-
380  // This will just do nothing if the entry does not exist
-
381  parameterDescriptions.erase(parameter);
+
284  // Is the type not supposed to be a string?
+
285  // void and list are already sorted out
+
286  if ((constrainType) &&
+
287  (constraint->requiredType != DATA_TYPE::STRING))
+
288  {
+
289  // We can only force a list-value from here
+
290  if (constraint->requiredType == DATA_TYPE::LIST)
+
291  {
+
292  ListValue* list = new ListValue();
+
293  Value* tmp = ParseValue({ val });
+
294  list->AddValue(tmp);
+
295  delete tmp;
+
296  tmp = nullptr;
+
297  return list;
+
298  }
+
299  // Else it is not possible to convert to a numeric
+
300  else
+ +
302  constraint->key,
+
303  constraint->requiredType,
+
304  rawInputType,
+
305  GetDescription(constraint->key)
+
306  );
+
307  }
+
308 
+
309  return new StringValue(val);
+
310  }
+
311 
+
312  // In this case we have a numeric value.
+
313  // We should still produce a string if requested
+
314  if ((constrainType) &&
+
315  (constraint->requiredType == DATA_TYPE::STRING))
+
316  return new StringValue(val);
+
317 
+
318  // Numeric
+
319  bool isInt;
+
320  long double num;
+
321 
+
322  if (Internal::StringTools::ParseNumber(val, isInt, num))
+
323  {
+
324  rawInputType = isInt ? DATA_TYPE::INT : DATA_TYPE::FLOAT;
+
325 
+
326  // Is the type constrained?
+
327  // (only int and float left)
+
328  if (constrainType)
+
329  {
+
330  // Must it be an integer?
+
331  if (constraint->requiredType == DATA_TYPE::INT)
+
332  return new IntValue((long long int)num);
+
333  // Must it be a floating point?
+
334  else if (constraint->requiredType == DATA_TYPE::FLOAT)
+
335  return new FloatValue(num);
+
336  // Else it must be a List
+
337  else
+
338  {
+
339  ListValue* list = new ListValue();
+
340  Value* tmp = ParseValue({ val });
+
341  list->AddValue(tmp);
+
342  delete tmp;
+
343  tmp = nullptr;
+
344  return list;
+
345  }
+
346  }
+
347  // Type is not constrained
+
348  else
+
349  {
+
350  // Integer
+
351  if (isInt)
+
352  return new IntValue((long long int)num);
+
353 
+
354  // Double
+
355  return new FloatValue(num);
+
356  }
+
357  }
+
358 
+
359  // Failed
+
360  return nullptr;
+
361 }
+
362 
+ +
364 {
+
365  return crashOnFail;
+
366 }
+
367 
+
368 void CmdArgsInterface::SetCatchHelp(bool catchHelp)
+
369 {
+
370  this->catchHelp = catchHelp;
+
371  return;
+
372 }
+
373 
+ +
375 {
+
376  return catchHelp;
+
377 }
+
378 
+
379 void CmdArgsInterface::SetBriefDescription(const std::string& description)
+
380 {
+
381  briefDescription = description;
382  return;
383 }
384 
- +
386 {
-
387  parameterDescriptions.clear();
-
388  return;
-
389 }
-
390 
- -
392 {
-
393  std::stringstream ss;
-
394 
-
395  // Add brief, if available
-
396  if (briefDescription.length() > 0)
-
397  ss << briefDescription << std::endl;
-
398 
-
399  // Collect parameter information
-
400  struct ParamDocEntry
-
401  {
-
402  std::string abbreviation;
-
403  std::string description;
-
404  std::string type;
-
405  bool required = false;
-
406  bool typeIsForced = false;
-
407  std::string defaultVal;
-
408  };
-
409  std::unordered_map<std::string, ParamDocEntry> paramInfos;
-
410 
-
411  // Collect descriptions
-
412  for (const auto& it : parameterDescriptions)
-
413  {
-
414  // Do we already have that param in the paramInfo set?
-
415  if (paramInfos.find(it.first) == paramInfos.end())
-
416  // No? Create it.
-
417  paramInfos[it.first] = ParamDocEntry();
+
387  return briefDescription;
+
388 }
+
389 
+
390 void Hazelnp::CmdArgsInterface::RegisterDescription(const std::string& parameter, const std::string& description)
+
391 {
+
392  parameterDescriptions[parameter] = description;
+
393  return;
+
394 }
+
395 
+
396 const std::string& Hazelnp::CmdArgsInterface::GetDescription(const std::string& parameter) const
+
397 {
+
398  // Do we already have a description for this parameter?
+
399  if (!HasDescription(parameter))
+
400  // No? Then return ""
+ +
402 
+
403  // We do? Then return it
+
404  return parameterDescriptions.find(parameter)->second;
+
405 }
+
406 
+
407 bool CmdArgsInterface::HasDescription(const std::string& parameter) const
+
408 {
+
409  return parameterDescriptions.find(parameter) != parameterDescriptions.end();
+
410 }
+
411 
+
412 void CmdArgsInterface::ClearDescription(const std::string& parameter)
+
413 {
+
414  // This will just do nothing if the entry does not exist
+
415  parameterDescriptions.erase(parameter);
+
416  return;
+
417 }
418 
-
419  paramInfos[it.first].description = it.second;
-
420  }
-
421 
-
422  // Collect abbreviations
-
423  // first value is abbreviation, second is long form
-
424  for (const auto& it : parameterAbreviations)
-
425  {
-
426  // Do we already have that param in the paramInfo set?
-
427  if (paramInfos.find(it.second) == paramInfos.end())
-
428  // No? Create it.
-
429  paramInfos[it.second] = ParamDocEntry();
-
430 
-
431  paramInfos[it.second].abbreviation = it.first;
-
432  }
-
433 
-
434  // Collect constraints
-
435  for (const auto& it : parameterConstraints)
-
436  {
-
437  // Do we already have that param in the paramInfo set?
-
438  if (paramInfos.find(it.first) == paramInfos.end())
-
439  // No? Create it.
-
440  paramInfos[it.first] = ParamDocEntry();
-
441 
-
442  ParamDocEntry& cached = paramInfos[it.first];
-
443  cached.required = it.second.required;
-
444  cached.typeIsForced = it.second.constrainType;
-
445  cached.type = DataTypeToString(it.second.requiredType);
-
446 
-
447  std::stringstream defaultValueSs;
-
448  for (const std::string& s : it.second.defaultValue)
-
449  {
-
450  defaultValueSs << '\'' << s << '\'';
-
451 
-
452  // Add a space if we are not at the last entry
-
453  if ((void*)&s != (void*)&it.second.defaultValue.back())
-
454  defaultValueSs << " ";
-
455  }
-
456  cached.defaultVal = defaultValueSs.str();
-
457  }
-
458 
-
459  // Now generate the documentatino body
-
460  if (paramInfos.size() > 0)
-
461  {
-
462  ss << std::endl
-
463  << "==== AVAILABLE PARAMETERS ===="
-
464  << std::endl << std::endl;
-
465 
-
466  std::size_t counter = 0;
-
467  for (const auto& it : paramInfos)
-
468  {
-
469  const ParamDocEntry& pde = it.second;
-
470 
-
471  // Put name
-
472  ss << it.first << " ";
-
473 
-
474  // Put abbreviation
-
475  if (pde.abbreviation.length() > 0)
-
476  ss << pde.abbreviation << " ";
-
477 
-
478  // Put type
-
479  if (pde.typeIsForced)
-
480  ss << pde.type << " ";
-
481 
-
482  // Put default value
-
483  if (pde.defaultVal.length() > 0)
-
484  ss << "default=[" << pde.defaultVal << "] ";
+ +
420 {
+
421  parameterDescriptions.clear();
+
422  return;
+
423 }
+
424 
+ +
426 {
+
427  std::stringstream ss;
+
428 
+
429  // Add brief, if available
+
430  if (briefDescription.length() > 0)
+
431  ss << briefDescription << std::endl;
+
432 
+
433  // Collect parameter information
+
434  struct ParamDocEntry
+
435  {
+
436  std::string abbreviation;
+
437  std::string description;
+
438  std::string type;
+
439  bool required = false;
+
440  bool typeIsForced = false;
+
441  std::string defaultVal;
+
442  };
+
443  std::unordered_map<std::string, ParamDocEntry> paramInfos;
+
444 
+
445  // Collect descriptions
+
446  for (const auto& it : parameterDescriptions)
+
447  {
+
448  // Do we already have that param in the paramInfo set?
+
449  if (paramInfos.find(it.first) == paramInfos.end())
+
450  // No? Create it.
+
451  paramInfos[it.first] = ParamDocEntry();
+
452 
+
453  paramInfos[it.first].description = it.second;
+
454  }
+
455 
+
456  // Collect abbreviations
+
457  // first value is abbreviation, second is long form
+
458  for (const auto& it : parameterAbreviations)
+
459  {
+
460  // Do we already have that param in the paramInfo set?
+
461  if (paramInfos.find(it.second) == paramInfos.end())
+
462  // No? Create it.
+
463  paramInfos[it.second] = ParamDocEntry();
+
464 
+
465  paramInfos[it.second].abbreviation = it.first;
+
466  }
+
467 
+
468  // Collect constraints
+
469  for (const auto& it : parameterConstraints)
+
470  {
+
471  // Do we already have that param in the paramInfo set?
+
472  if (paramInfos.find(it.first) == paramInfos.end())
+
473  // No? Create it.
+
474  paramInfos[it.first] = ParamDocEntry();
+
475 
+
476  ParamDocEntry& cached = paramInfos[it.first];
+
477  cached.required = it.second.required;
+
478  cached.typeIsForced = it.second.constrainType;
+
479  cached.type = DataTypeToString(it.second.requiredType);
+
480 
+
481  std::stringstream defaultValueSs;
+
482  for (const std::string& s : it.second.defaultValue)
+
483  {
+
484  defaultValueSs << '\'' << s << '\'';
485 
-
486  // Put required tag, but only if no default value
-
487  if ((pde.required) && (pde.defaultVal.length() == 0))
-
488  ss << "[[REQUIRED]] ";
-
489 
-
490  // Put brief description
-
491  if (pde.description.length() > 0)
-
492  ss << pde.description;
-
493 
-
494  // Omit linebreaks when we're on the last element
-
495  if (counter < paramInfos.size()-1)
-
496  ss << std::endl << std::endl;
-
497 
-
498  counter++;
-
499  }
-
500  }
-
501 
-
502  return ss.str();
-
503 }
+
486  // Add a space if we are not at the last entry
+
487  if ((void*)&s != (void*)&it.second.defaultValue.back())
+
488  defaultValueSs << " ";
+
489  }
+
490  cached.defaultVal = defaultValueSs.str();
+
491  }
+
492 
+
493  // Now generate the documentatino body
+
494  if (paramInfos.size() > 0)
+
495  {
+
496  ss << std::endl
+
497  << "==== AVAILABLE PARAMETERS ===="
+
498  << std::endl << std::endl;
+
499 
+
500  std::size_t counter = 0;
+
501  for (const auto& it : paramInfos)
+
502  {
+
503  const ParamDocEntry& pde = it.second;
504 
-
505 void CmdArgsInterface::ApplyConstraints()
-
506 {
-
507  // Enforce required parameters / default values
-
508  for (const auto& pc : parameterConstraints)
-
509  // Parameter in question is not supplied
-
510  if (!HasParam(pc.second.key))
-
511  {
-
512  // Do we have a default value?
-
513  if (pc.second.defaultValue.size() > 0)
-
514  {
-
515  // Then create it now, by its default value
-
516 
-
517  Value* tmp = ParseValue(pc.second.defaultValue, &pc.second);
-
518  parameters.insert(std::pair<std::string, Parameter*>(
-
519  pc.second.key,
-
520  new Parameter(pc.second.key, tmp)
-
521  ));
-
522 
-
523  delete tmp;
-
524  tmp = nullptr;
-
525  }
-
526  // So we do not have a default value...
-
527  else
-
528  {
-
529  // Is it important to have the missing parameter?
-
530  if (pc.second.required)
-
531  // Throw an error message then
- -
533  pc.second.key,
-
534  GetDescription(pc.second.key)
-
535  );
-
536  }
-
537  }
+
505  // Put name
+
506  ss << it.first << " ";
+
507 
+
508  // Put abbreviation
+
509  if (pde.abbreviation.length() > 0)
+
510  ss << pde.abbreviation << " ";
+
511 
+
512  // Put type
+
513  if (pde.typeIsForced)
+
514  ss << pde.type << " ";
+
515 
+
516  // Put default value
+
517  if (pde.defaultVal.length() > 0)
+
518  ss << "default=[" << pde.defaultVal << "] ";
+
519 
+
520  // Put required tag, but only if no default value
+
521  if ((pde.required) && (pde.defaultVal.length() == 0))
+
522  ss << "[[REQUIRED]] ";
+
523 
+
524  // Put brief description
+
525  if (pde.description.length() > 0)
+
526  ss << pde.description;
+
527 
+
528  // Omit linebreaks when we're on the last element
+
529  if (counter < paramInfos.size()-1)
+
530  ss << std::endl << std::endl;
+
531 
+
532  counter++;
+
533  }
+
534  }
+
535 
+
536  return ss.str();
+
537 }
538 
-
539  return;
-
540 }
-
541 
-
542 ParamConstraint CmdArgsInterface::GetConstraint(const std::string& parameter) const
-
543 {
-
544  return parameterConstraints.find(parameter)->second;
-
545 }
-
546 
-
547 void CmdArgsInterface::ClearConstraint(const std::string& parameter)
-
548 {
-
549  parameterConstraints.erase(parameter);
-
550  return;
-
551 }
-
552 
-
553 const std::string& CmdArgsInterface::GetExecutableName() const
-
554 {
-
555  return executableName;
-
556 }
-
557 
-
558 const Value& CmdArgsInterface::operator[](const std::string& key) const
-
559 {
-
560  // Throw exception if param is unknown
-
561  if (!HasParam(key))
- -
563 
-
564  return *parameters.find(key)->second->GetValue();
-
565 }
-
566 
-
567 void CmdArgsInterface::RegisterAbbreviation(const std::string& abbrev, const std::string& target)
-
568 {
-
569  parameterAbreviations.insert(std::pair<std::string, std::string>(abbrev, target));
-
570  return;
-
571 }
-
572 
-
573 const std::string& CmdArgsInterface::GetAbbreviation(const std::string& abbrev) const
-
574 {
-
575  if (!HasAbbreviation(abbrev))
- -
577 
-
578  return parameterAbreviations.find(abbrev)->second;
-
579 }
-
580 
-
581 bool CmdArgsInterface::HasAbbreviation(const std::string& abbrev) const
-
582 {
-
583  return parameterAbreviations.find(abbrev) != parameterAbreviations.end();
-
584 }
-
585 
-
586 void CmdArgsInterface::ClearAbbreviation(const std::string& abbrevation)
-
587 {
-
588  parameterAbreviations.erase(abbrevation);
-
589  return;
-
590 }
-
591 
- -
593 {
-
594  parameterAbreviations.clear();
-
595  return;
-
596 }
-
597 
-
598 void CmdArgsInterface::RegisterConstraint(const std::string& key, const ParamConstraint& constraint)
-
599 {
-
600  // Magic syntax, wooo
-
601  (parameterConstraints[key] = constraint).key = key;
-
602  return;
-
603 }
-
604 
- -
606 {
-
607  parameterConstraints.clear();
-
608  return;
-
609 }
-
610 
-
611 void CmdArgsInterface::SetCrashOnFail(bool crashOnFail)
-
612 {
-
613  this->crashOnFail = crashOnFail;
-
614  return;
-
615 }
-
616 
-
617 const ParamConstraint* CmdArgsInterface::GetConstraintForKey(const std::string& key) const
-
618 {
-
619  const auto constraint = parameterConstraints.find(key);
-
620 
-
621  if (constraint == parameterConstraints.end())
-
622  return nullptr;
+
539 void CmdArgsInterface::ApplyConstraints()
+
540 {
+
541  // Enforce required parameters / default values
+
542  for (const auto& pc : parameterConstraints)
+
543  // Parameter in question is not supplied
+
544  if (!HasParam(pc.second.key))
+
545  {
+
546  // Do we have a default value?
+
547  if (pc.second.defaultValue.size() > 0)
+
548  {
+
549  // Then create it now, by its default value
+
550  Value* tmp = ParseValue(pc.second.defaultValue, &pc.second);
+
551  parameters.insert(std::pair<std::string, Parameter*>(
+
552  pc.second.key,
+
553  new Parameter(pc.second.key, tmp)
+
554  ));
+
555 
+
556  delete tmp;
+
557  tmp = nullptr;
+
558  }
+
559  // So we do not have a default value...
+
560  else
+
561  {
+
562  // Is it important to have the missing parameter?
+
563  if (pc.second.required)
+
564  // Throw an error message then
+ +
566  pc.second.key,
+
567  GetDescription(pc.second.key)
+
568  );
+
569  }
+
570  }
+
571  // The parameter in question IS supplied
+
572  else
+
573  {
+
574  // Enforce parameter incompatibility
+
575 
+
576  // Is ANY parameter present listed as incompatible with our current one?
+
577  for (const std::string& incompatibility : pc.second.incompatibleParameters)
+
578  for (const std::pair<std::string, Parameter*>& otherParam : parameters)
+
579  {
+
580  if (otherParam.first == incompatibility)
+
581  throw HazelnuppConstraintIncompatibleParameters(pc.second.key, incompatibility);
+
582  }
+
583  }
+
584 
+
585  return;
+
586 }
+
587 
+
588 ParamConstraint CmdArgsInterface::GetConstraint(const std::string& parameter) const
+
589 {
+
590  return parameterConstraints.find(parameter)->second;
+
591 }
+
592 
+
593 void CmdArgsInterface::ClearConstraint(const std::string& parameter)
+
594 {
+
595  parameterConstraints.erase(parameter);
+
596  return;
+
597 }
+
598 
+
599 const std::string& CmdArgsInterface::GetExecutableName() const
+
600 {
+
601  return executableName;
+
602 }
+
603 
+
604 const Value& CmdArgsInterface::operator[](const std::string& key) const
+
605 {
+
606  // Throw exception if param is unknown
+
607  if (!HasParam(key))
+ +
609 
+
610  return *parameters.find(key)->second->GetValue();
+
611 }
+
612 
+
613 void CmdArgsInterface::RegisterAbbreviation(const std::string& abbrev, const std::string& target)
+
614 {
+
615  parameterAbreviations.insert(std::pair<std::string, std::string>(abbrev, target));
+
616  return;
+
617 }
+
618 
+
619 const std::string& CmdArgsInterface::GetAbbreviation(const std::string& abbrev) const
+
620 {
+
621  if (!HasAbbreviation(abbrev))
+
623 
-
624  return &constraint->second;
+
624  return parameterAbreviations.find(abbrev)->second;
625 }
+
626 
+
627 bool CmdArgsInterface::HasAbbreviation(const std::string& abbrev) const
+
628 {
+
629  return parameterAbreviations.find(abbrev) != parameterAbreviations.end();
+
630 }
+
631 
+
632 void CmdArgsInterface::ClearAbbreviation(const std::string& abbrevation)
+
633 {
+
634  parameterAbreviations.erase(abbrevation);
+
635  return;
+
636 }
+
637 
+ +
639 {
+
640  parameterAbreviations.clear();
+
641  return;
+
642 }
+
643 
+
644 void CmdArgsInterface::RegisterConstraint(const std::string& key, const ParamConstraint& constraint)
+
645 {
+
646  // Magic syntax, wooo
+
647  (parameterConstraints[key] = constraint).key = key;
+
648  return;
+
649 }
+
650 
+ +
652 {
+
653  parameterConstraints.clear();
+
654  return;
+
655 }
+
656 
+
657 void CmdArgsInterface::SetCrashOnFail(bool crashOnFail)
+
658 {
+
659  this->crashOnFail = crashOnFail;
+
660  return;
+
661 }
+
662 
+
663 const ParamConstraint* CmdArgsInterface::GetConstraintForKey(const std::string& key) const
+
664 {
+
665  const auto constraint = parameterConstraints.find(key);
+
666 
+
667  if (constraint == parameterConstraints.end())
+
668  return nullptr;
+
669 
+
670  return &constraint->second;
+
671 }
-
bool GetCatchHelp() const
Retruns whether the CmdArgsInterface should automatically catch the –help parameter,...
+
bool GetCatchHelp() const
Retruns whether the CmdArgsInterface should automatically catch the –help parameter,...
- +
Specializations for integer values (uses long long int)
Definition: IntValue.h:8
-
ParamConstraint GetConstraint(const std::string &parameter) const
Will return the constraint information for a specific parameter.
-
void ClearAbbreviations()
Will delete all abbreviations.
-
void SetCatchHelp(bool catchHelp)
Sets whether the CmdArgsInterface should automatically catch the –help parameter, print the parameter...
-
bool HasAbbreviation(const std::string &abbrev) const
Will check wether or not an abbreviation is registered.
+
ParamConstraint GetConstraint(const std::string &parameter) const
Will return the constraint information for a specific parameter.
+
void ClearAbbreviations()
Will delete all abbreviations.
+
Gets thrown when a parameter constrained to be incompatible with other parameters gets supplied along...
+
void SetCatchHelp(bool catchHelp)
Sets whether the CmdArgsInterface should automatically catch the –help parameter, print the parameter...
+
bool HasAbbreviation(const std::string &abbrev) const
Will check wether or not an abbreviation is registered.
Gets thrown when an non-existent key gets dereferenced.
-
void RegisterConstraint(const std::string &key, const ParamConstraint &constraint)
Will register a constraint for a parameter.
+
void RegisterConstraint(const std::string &key, const ParamConstraint &constraint)
Will register a constraint for a parameter.
const std::string & What() const
Will return an error message.
@@ -721,55 +768,57 @@ $(function() {
Specializations for floating point values (uses long double)
Definition: FloatValue.h:9
-
void ClearConstraint(const std::string &parameter)
Will the constraint of a specific parameter.
-
DATA_TYPE requiredType
Constrain the parameter to this value. Requires constrainType to be set to true.
+
void ClearConstraint(const std::string &parameter)
Will the constraint of a specific parameter.
+
DATA_TYPE requiredType
Constrain the parameter to this value. Requires constrainType to be set to true.
Abstract class for values.
Definition: Value.h:10
-
void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
Will register an abbreviation (like -f for –force)
-
bool HasParam(const std::string &key) const
Will check wether a parameter exists given a key, or not.
+
Gets thrown something bad happens because of parameter constraints.
+
void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
Will register an abbreviation (like -f for –force)
+
bool HasParam(const std::string &key) const
Will check wether a parameter exists given a key, or not.
-
void ClearConstraints()
Will delete all constraints.
+
void ClearConstraints()
Will delete all constraints.
static const std::string g_emptyString
The only purpose of this is to provide the ability to return an empty string as an error for std::str...
Definition: Placeholders.h:9
-
bool GetCrashOnFail() const
Gets whether the application crashes on an exception whilst parsing, and prints to stderr.
-
bool HasDescription(const std::string &parameter) const
Returns whether or not a given parameter has a registered description.
-
void ClearDescription(const std::string &parameter)
Will delete the description of a parameter if it exists.
+
bool GetCrashOnFail() const
Gets whether the application crashes on an exception whilst parsing, and prints to stderr.
+
bool HasDescription(const std::string &parameter) const
Returns whether or not a given parameter has a registered description.
+
void ClearDescription(const std::string &parameter)
Will delete the description of a parameter if it exists.
-
bool constrainType
Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
+
bool constrainType
Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
+
Generic hazelnupp exception.
const std::string & Key() const
Will return the key of this parameter.
Definition: Parameter.cpp:21
Gets thrown when a parameter constrained to be required is not provided, and has no default value set...
-
void ClearAbbreviation(const std::string &abbrevation)
Will delete the abbreviation for a given parameter.
+
void ClearAbbreviation(const std::string &abbrevation)
Will delete the abbreviation for a given parameter.
Gets thrown when a parameter is of a type that does not match the required type, and is not convertib...
void Parse(const int argc, const char *const *argv)
Will parse command line arguments.
-
void SetBriefDescription(const std::string &description)
Sets a brief description of the application to be automatically added to the documentation.
-
const std::string & GetBriefDescription()
Returns the brief description of the application to be automatically added to the documentation.
-
const Value & operator[](const std::string &key) const
Will return the value given a key.
-
void ClearDescriptions()
Will delete all parameter descriptions.
+
void SetBriefDescription(const std::string &description)
Sets a brief description of the application to be automatically added to the documentation.
+
const std::string & GetBriefDescription()
Returns the brief description of the application to be automatically added to the documentation.
+
const Value & operator[](const std::string &key) const
Will return the value given a key.
+
void ClearDescriptions()
Will delete all parameter descriptions.
void AddValue(const Value *value)
Will add this value to the list.
Definition: ListValue.cpp:33
Specializations for void values.
Definition: VoidValue.h:8
-
std::string GenerateDocumentation() const
Will generate a text-based documentation suited to show the user, for example on –help.
-
void RegisterDescription(const std::string &parameter, const std::string &description)
Willl register a short description for a parameter.
+
std::string GenerateDocumentation() const
Will generate a text-based documentation suited to show the user, for example on –help.
+
void RegisterDescription(const std::string &parameter, const std::string &description)
Willl register a short description for a parameter.
static bool ParseNumber(const std::string &str, bool &out_isInt, long double &out_number)
Will convert the number in str to a number.
Definition: StringTools.cpp:82
-
const std::string & GetDescription(const std::string &parameter) const
Will return a short description for a parameter, if it exists.
+
const std::string & GetDescription(const std::string &parameter) const
Will return a short description for a parameter, if it exists.
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:8
-
const std::string & GetAbbreviation(const std::string &abbrev) const
Will return the long form of an abbreviation (like –force for -f) Returns "" if no match is found.
+
const std::string & GetAbbreviation(const std::string &abbrev) const
Will return the long form of an abbreviation (like –force for -f) Returns "" if no match is found.
-
const std::string & GetExecutableName() const
Will return argv[0], the name of the executable.
+
const std::string & GetExecutableName() const
Will return argv[0], the name of the executable.
static std::string DataTypeToString(DATA_TYPE type)
Definition: DataType.h:17
static bool IsNumeric(const std::string &str, const bool allowDecimalPoint=false)
Will return true if the given string consists only of digits (including signage)
Definition: StringTools.cpp:56
-
void SetCrashOnFail(bool crashOnFail)
Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...
+
void SetCrashOnFail(bool crashOnFail)
Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...
Specializations for list values (uses std::vector<Value*>)
Definition: ListValue.h:9
Specializations for string values (uses std::string)
Definition: StringValue.h:9
diff --git a/docs/CmdArgsInterface_8h.html b/docs/CmdArgsInterface_8h.html index f365594..b077e53 100644 --- a/docs/CmdArgsInterface_8h.html +++ b/docs/CmdArgsInterface_8h.html @@ -85,20 +85,22 @@ $(function() { #include "ParamConstraint.h"
#include <unordered_map>
#include <vector>
+#include "Version.h"
Include dependency graph for CmdArgsInterface.h:
- + - - + + - - - - + + + + +
@@ -127,7 +129,7 @@ Namespaces
diff --git a/docs/CmdArgsInterface_8h__incl.map b/docs/CmdArgsInterface_8h__incl.map index 8ac268e..2daed24 100644 --- a/docs/CmdArgsInterface_8h__incl.map +++ b/docs/CmdArgsInterface_8h__incl.map @@ -1,11 +1,12 @@ - + - - + + - - - - + + + + + diff --git a/docs/CmdArgsInterface_8h__incl.md5 b/docs/CmdArgsInterface_8h__incl.md5 index cef96ca..5906ee6 100644 --- a/docs/CmdArgsInterface_8h__incl.md5 +++ b/docs/CmdArgsInterface_8h__incl.md5 @@ -1 +1 @@ -8ab680b9e8342db6d2471c14b295e135 \ No newline at end of file +1b40cfe17dfb4f2d2222d0c51471439e \ No newline at end of file diff --git a/docs/CmdArgsInterface_8h__incl.png b/docs/CmdArgsInterface_8h__incl.png index 029210b501145fa26ed233c2d4e7ae901723d529..22014bfe485ef7861a736aa6a7b89c0b012a1959 100644 GIT binary patch literal 36035 zcmce;byQVt`|k@#cS}o1FOiZ)q>+;DMo?)*8l<~KIut=vkVd+@B?JMbK?G@#&U3Bb z`|dH$K4*{f=Xo5@kb!H>HP?OLSAM?NjMPw9B*3M?ML|I!c&H?&g@S@ciGqTvfsF~j zSuPQlg1<1WR21bmE#KcLA*Vlage%ba5y;!F^RftltnA^I=WQnOmxOBu+PN$5FyrSZAdng{SfPl3)xlEqA zj11ZfS69w*#ys>S10`NHH8q5JbJi9wc7m9+w6uuFHr=!(F>^|O?En5r_^g!h!Pq2J z%7_T1Z)totn3$Lx!rSUg&0BJx48K!)^yrB=c>*^FN9(UDdrN!!=)Oeu=tf^GEG&}- zceURuq|A5n_t==^^0sFi!t?Vv&@nKib#;@sT;N+Ncp&m3!o#tu9jA|`&joA;Tib%M zg!0k4&1p zb=Pc?-R~!L_x0iEmzWf|*YWZ3J^fk1%1RM3u90LwTyXQ&t@xrMM5WyiTp|XEfWkuV zgTupezjOC2DSw9On|Br5-G$maIznl%I(Tbe{v~yAbR?mpLyT8UCB1!1;N|62-N6`w zjiVd-dLCg?OH4vSvfv_;Z{BhrUdZP(BjO@LC*iq^^6uTcmOEdcFDs;_r7;Q%-@LlI zs`WYMsrdSJwA#^l@SP;>;l||Mas({S%dKA&cg>sSbacq=CQAr}g@w~HGSE=Mh;GGU z;8C`AcA}%ae)A@XghgQiHc>-cJ2*J_#^B)K?!~EVXLq;Eqeny~B_&VCJ`wm|+Nfa# zl$G(mQnYSvZZ4~;>N@y4b~;8tK(M&5pn>=kM=!nvpX>SW55f9mDbb@xj~YGq&|uGd z`}zWtlPP9qXWJHCP*BX9ecQTYY4_k0p4!`6?=G~pY(--cF+4CerFZ=^*p{#Pf%xW4 zELqtOtCfuO^u?8d)QGsa?nbYFBPFKd4l}hRcg-3Ds;h-C3F#t=jcb->>Rd<0$2-#n zo)D9hhg4PyQc+V|P81nFh5tXscl9T8lhD%>I6FIg`uKdX8AzEbw^pp{IiE~(b#*;m zF|Bn$UG9$U7%$KskXS`wWM{`ZKiZNtFrccas2KU6NK{)}`{3cjg72$z8fmKa4GpQD zLnJa^!b$P=Gpp<;(NH`k7_6+V%dNU_*Vfl_^-ImxX6gi-<{JC5k9QY4kQ-xEW!GhX z)DwSes?ke8@ZP=WYa>hu!wU2UkDWi}w_hC|&-+_;P+<(4hVsUeGZ_c;e`uq2qsJWF(IF!5S)xLEQ^hxC}8BRYX=6U6D!M zevO+MtOHyw9DadG#1I3g)e7#U>rb8UDZgHcNo2|$V;Kbn%&)fJWSYDWk#C)unX%eX zQ&MUjdMm!Tv4O|J!qVBLUgXByU}KV z(xuL%wxQvsF_Ff;C>DzSM3J(spe^`-t&BR@Ys>@IZ}A$^q3@%E+AVh3KEb^c#2X+=27aJ~~=Hb=K^A8YJvI_Z}SE zMVhRvtiSyv-{W55N~c*G_-0C~s+|L=cNf>!ap6sZPeBprGL3;CQcF zsORGD&g0s^<%;0)ZuF0uoM2hd-tY({%o6>$*OXVBi0hD zw`Q^lBcKffGokcx?vA1EGMle=!&8iBkoWbKX!gG*MCtlMh_W#HL2;_dM_9;tE(Sd9 z4V3$SXXx*DRnGOZrTi5V+0>L{3f6{DQ8>7`&>noGQ5JeSvQRV0$;nBPakbEPqtbDj zl8cM$LPSejTeH-xiGSci)D{B+170ozMl|IkKMno{jg|GI)c`C9rLnn^684+K#L>@> zvaNRJ8@;|x(FbKOE32u6R#fnVt*FdQU=q++^u1x7s|0S2a1AN*XMSsl)1Vqy6=eZNo@zvaues3JBeJu78i8n}caqbgi(y`l#_ar8Mw zMKNQaAA!x&UU*qqS(Vv-qe1?2EX}>8meLO&ZV-kCyRHsN!@e-?!F^Mnx8JQV-2Ivx zJuqB)eerJ?SB(e{PZnYzDhj+OC@zk$#I&Ki^cM-bqobqm^%ebmv){7$$g8+WORA8N zkcEY|;HNXSeAkz~y-IWA3Z)io4!@3pdQtCu>Jw5%dr-bjt35mD2w{BD*F|(Ksg-lf6z`%_T zUJYH{(8flItIK0^h<rcA zPESvDqgLaku3Eu@UMDAq=H=bqoNGF-@dE#|xA{}x_wU~eosncp45cC1?|++(E%*I< z6bS|*saF>$@jZp#-N#EzX`SbrF;WLG7;BeJ=S0EfO2WNZU!EO$USCN<7<|6BBp(tU zuFnAnUdUp5rcU>lt&GyjC_SE53~X0cR#uta53a|ywnz(3NlCf5&j2q99v|017*`if zy^wztij2SDT*Dx3`2PL7#nYz|<<>oVr+YH&?CeFxHH1e;MK2eNkY;4^4>XHU_lUGPcK~)uBLQ*mzBLmmZ&kw!|K6oeHUtwU<)(|X2T>s$5 z#Ke?Y_Yels?Z9b5+1=l7pKJ12TwDyCnK1#M7i=ENzJ_!clE^f%I+!uJ=Ghn<#LZ>c ze~0jPE=Vb2=tTExs&OdNo8dy>jmUkHbiU8F_}>CQUNCxT5fPkgIYvfC_LDG__<7<3 zT_!oZP}qwNo)D2*uYYV#^UbmFr69SmI^LcwtEjLNN618wgO_KnilY;4cgOx=Yh@Mm zEmPPUOjJWlD=0Ly%Q?P+R3?H$(@OewMoWu-)h87($U6|G^+}LeGKIu{L1wGO%)F3< z!B27)9OaCVO-8h8SV<%QAuy*qlXUa^ct>}eK+EX&s=({i&m`Q1EbQTdQMg+j*F|)`C&d@u*n4b9g4`z~X_*5gPM@OHY&Nt_b^h>%d5K`W~ zA5AS#w6J2MzqsPQ(;O=4BSS)6S9Foi%_J^PbpO7-%R;N^Q~N^eZ4>*c=}Z~DYP+g; z5)8rYkLJJ%IcA#aL*d8Z9_x|n;`@j@nIC+P|E!Jo5%2F;pv@A>M06@c@~>31Gym`T z)-UcXu|w<{r>3y1EQI&56NZnEHk=BXwVMrF)7Ne0{-NNA16|y=H4AJ)lMTpE5B}2n z`jsx7?49%S=0~6YbF_Fe**ue=Fp!w|??ytxj?1~b;Py;p_rKLW4L!Ypf&x^;omdM? z%aCfv!$MO+COIqQmg1!jbQBwxl8_$|>z6j8#rL%Ke_;*7{~K}N&q(&+!;>42`0ydI z8M2;l7T-N$h~u*!P+}26nBnpgt zR3XE^(L1^K5kE7tRYLY~XhH%ZyAIY#e+Ml<364`g2pX>_0+@8rZ+OXy>=XkNIE~r-|5kxUID@Z*2&2pt*ROU-;2lW$Wu#0qg>Pt#uNQ~ z`Dkgjft*fqJx0j!;7gNwH5uM}-bg$gudph6+1F`lVF@ha)>po?aA@(G9KHxK<#p$F z29<>mtSolNUK0}&$I%L3$-Wi)LdBOWpb)ni^GR)^oSq?|y~jW?elGN`d4`H*cj07SP&$Tfg%?B<_nEb^#yUb#7`>QXs6x((WQ} zXOF-9XZ0`_m$Hy5H{VV5Jx#zt$)7rx+ja+Y(vfknb1oN1dVzJ8#m zhbdrt5E3lw!NC=ERf39Kj&kIM+m`uiJ$4At(AuA`^y5M1X|eFYTJ^16)*K4= zoWKEYY*AT#sB>@mn1qTdE+j-SEmOGbWY5&ndQ8vZF1n^>Hs6ciglij<3Ks8K1n=ph zn}vyhIfVS^({t0T!eO$Cg%d`1*X;H}ZvrnmhGa-?t^_8bV0RKHC7S&QMntI@tJQeE z>C<183~_Ynm~L*1l>)CrI&&k+#D9L_fi00M0@sPoE|ncUkeY41GdCR(;~PFve7LY+ z5!n_jUZM5K+;BL%$NFGx_UWh$Ryd(ra7IS%NdKEWxCn>Xe=ZW@mSpgHeW16ut1pqL z+~@d?@7V!ClXn%Q6|4wE=c>M=7sLISj@suw7It<4e&?UCo9ta4sv@EyDiVv=bM44v zG@&gN2ghm4fs}G)zpRQ+a56h{{`)=9gW!8q9~{s@{Z4d#JTI-Fz!OHa z6Y_V=r+q{tb8F-atH=qb?Kj-k2$HvpTatAA{JBjAFe4BuDi2&>|=iNffP-{DHADN}JhaiOBTBNqC1tQdk- zj~(Ls8v}BZWA*AU(Qu|0KXl6cGHtoKTkX^o7f!Sc8;*VRCO32tjD9;3hB)rbX&}sB zF+@`yhDWR1t?o#uhp&G7<$u0<9vv&?_jRZ%yFRJ;FaI6$JXrrh%EQxy^wrfJq`3aq z(+1U>bd-p)t|G&xpM+Qe2W*t`QDQ&q{jcvp7z@R~JBxPw&pOEUYgjQkLQD#)IcAl3 zb-@5J!JxKGDkhe;oIYg)7N%oN0Q=p$Y8N+(_&l`t$lGxL&u!R=C?oQ^N^!b^FfK=P zWWT9#pzNt}p(rC>vGx6DkzUh8kVa>0w*}Yi9yN#T?iv(44lS47LE3qddQWLBccoaN{lu0-^AQ6nDY@Vb{g!M4Dv7 z-RZ?7xbXMOnLgNm{7;WkXa2LS5$L&{xu5D>*=aT=%@rR17Dq13_V$EUq6W(K#%HTJ ziT~UnS8kqqwL<(hnxSFe=HtTp{9hqT*vbgIsMNb;<=%%FkR)Jm7pA0%>(`UwqKLR7 z(EhDvch1yJqzNecCgKK=M)#l8CEk&hbsWrmV#@Mg^R|j2#d~1=S$HOH>)^Z zeP+<;iBj)=8N5{{SHe-?;<1C}as0|5T$@K3!BzUn<39`8iOx#-=F6H;d5b^C!GT@d z*qEN3e;2*ft6Ts6ynUVaKdUa5_g~v-XI4hsR&&}W+MG9Uw48?H`tb-am!lv};Pb6N zL&-77SIZFR75vB2m}Q{p7?u0v5)z33h!nhD6`|vjQOAX3>+{gYPro z6_Rxv+gJ8SKE>WgAYx!ObtqXWmo`@hIun5C#@_uwvC6R0>TqVSz5@?hvywfTc3~;lszemw!dG-V(L-6|ir}X6x&inV}lh9LcB;#lKiJ{c20a z_Gp_eDBn(K{jrJ*^4>_{-a>k;T_AxeGNHy76{SWPJ;s96?#yQQ8WN=T5S%My+F?I| zZw>2`E_qHh^e$HJ)%}`rug5l`o)?}Nv&}ad;c{ij%b~#Kmi~?r88n{Yn>8x6hT!-^ zPczJE{_6K)he!-V6P~;KR{68Br%>+dRk)qIlPkpj(p`T^O-)$uCeXgOJj5KM?5*=L z@y^{+0Vn2is6GOPcp_B}v3oAuRY?W>4$foK9!L!_+AE3JTiH7zW7+ z>4y(V+S*DEsO&Mo*icz1H~WTHmqv1Yrpgxi$H$Y(ECTOmujDTB`)US z6x8IyE^TI(vi16l!`_mB$cx)Wo$JJ2UWSdH@Ddk;uY+ zBRaQK0rqmd@N?kn*P{96=D{lwtf^&R)VgD*gOif*H>dbe)iNi@v<~t}Im(GYc6JIP zjNJ)Sc_hOj^Ff&3j}Y7El=r>R$EW!n-W|KKu%^il8B7`dn+Gq~D@h|GpLNYGyNK)_ zXXDdmRwLx)OH8~_op)3sV$~FaF^x_xPHFf5d0qT{@uC9S8-zS2F2N}&xX}p{bV2z- zu)euo|3Z5QxC0s+5h-_QBOWH!Yi1I*hmCQZE=d(J zH8Z2UW4yj}@a$%N2Zx1ju@DYkbYRn^`;|TN$h~|PRBYTMt*@^#o+*tBAMbE|bxs2Q zt#u$Z(&go5px3{mzi3)vgM&L|HS=-smx#wuRrew98Ejs?hk1|xox69Vb7a*PHpDZ! z@|8$vGu1o~xkxZD8c9D73=HIIv&%xRdwWmUb*U)#2ix3SYMK4yor@FAR&zbryQrua z2GtI{-LV2so^$7cpJ;!Rd45COeI_7#-i?Y@xIK)3#p1EtBcG&|^JCu_>aVoVpBISu zztW2>W~-<)iJqEDx-RWlUFgJlVqh?`JMYi{=1)gQh{kcwtqF-~lTS@h%k|@RB3Ze) zmg}IAk^d?A8a(D1Sy*n?*BfbQy@7m%>s3q4^VUV)waL;uLQZs%zp8W%BaM||Iq-#@ zo4bQBqi|zh9CNNrG#W2l;^KGJdvfQ%6hMas? zqc8>cos_x!O^y_(cnpk6I?j&^7WVqDm6H+{Ee5Fsip-^C&_@%p;a?^E&QSGB8e8M& zg;kWet`uQW?Chd;59xznUH*#TRW3+*FmH>N1f_$hYndSinw_lp50E(fZS1yiLzb0!= zz)bDlEl7cwA@2p_N7g_N;kWsaCDGXDTZ;?QSTDCt{`rVHK<@dg#yR5iBPomC*KrQv zvM5timGTZn!gI}P(hd&%*Yj&@!(b@V?(T~i4`G*Hyx>3C3&w+cO1U%n{^Lh9_RkEP zP66b&1hGLeG5DU1-y8a{T3c>V&|RP}F7i!PJ4y_G%Zy@{E0EV^`hi@VABA@r85!xI z{IuRO^7%4c7-HJsWO=x5fh45qFW`YqpS8ht1){^OFSB9Ybg-1;tFo02O!h?eO^JjcQIyGh(r#L6m3eXG&=wP1x zGsbz@lS@-#>VrWPpNJA58%{U!`H_7J%Ns;n+oLjXH{KKkwLwl^t`hV-%UxI1nH1Q3 z4Gm9geS~o)CfKJ4KN`u%$m|YFU1L|_0}~UppHR)W(b1JgCAuZ`O4j#67nJAiHT}J&K`OG*^^ zEM+E@=N0ty^tvNR-poIB8qdF_p_#B5*Fs848uHGdx3~AbndIJM?;okJ6iWI>hairlxn+QB-0ytu&=E zFeDs)zMuf(2o4P;0jHUxdG=-D-|EX4+8V54TV7vrj=M53g^WKK|DI2Win>@<{u5nZ-pi!r z{;lO6kB@n|xKM7pxQGNmZi0?3qLoR`XW`%w6A*w>-I1Sg-~S39+UMir<20sh399W^ zo7z^IQQ%Y4_?EFHB!hX~i$sUA(s3X}LO@UOl)&WSQQW=ol89q)3wmdEr&^X7+A=n_ zwwTcSg$wd4Bb0X!{$d?$tOhrDd>|oSh|nzz)5)*m zq!%_QC?J(@=f%IcbhaL0loE6>pq(uBdH>`Q&0M2c9DOu!F5&X$%Sw7a4L}Z|;SQiC z1dtk%L;n8#cw&huLxpmTS3 z2PgL$nv^*?OnRkerVbh`z^pvIymA2LXz1(r>@D|jSH?6nh$9e)_n$t6=@lC-UR|E= z?(GFOH{S=OvbeT}&9LJy>-xmTrtRA|f>>JNu#^rj7)_4$Ij( zI9N1eqa1yy4+sppwLxKFm>I&(afSM&xW3uZ8F0xG^Ohn1x36EL5QcZO@KVvzS_7^5 z=;Q%D4=_`(_u+cZtIM-Ak>|`{a{bw6-(OuG{3U~rd!LgNh`c+f0=ulf^p|rvr|a72K{%e@IKU32qapAZ461}faZMQ<)8 zB}GL;BcrQJK}kvJd2zz$e`Q`M!}UTv#Z5g`E z22<~vr>(6$RZvt67xmh|?Vrvh8wP!Qp+UGv`oY0VTc8lC;e_;5JgEb`_#J@vd9euT zIP_k54J1+cj2i3Mw@=_uLxaH#poorxydiO(RI+pPki@o2rx+8=*Wl# z;5%;L%`Yz+xd#RZW6~vk+&`um0%0BlF~Zdb5Ge&?MfA=O_ zOaf(kf;5*uXDUXvW1rM6CIP@c7NH|dOiu3dcix;T9}L34qY68n#}ee@OOSdyu)+^X z{vce2I_y-kJinKJrE9L)&!@YmC;a+sW3m(J&%p@qoap|1L8(NWOVfM zBmcc6j2i)`CwnaZr`gB$KxJS#m6exTJOJ%o$v1QTcTpvhB^6b)zI(N}EVf(yt91DJ z=4X?SN8KJd$z&%p+(bfRqBS!!GgX*n8h~U0BO@bKF#qJZ9XKx3y1Keo2j-Vq208~> zMT1WaiL);&Nbw4aar=gbmZc6C*QRdt#6MD;t+xYDyVvYL+>^w44(bLx|LZ=hG5s!} zQIJ5rFD#4(F0u?73Z%{?C@2VNZTSTSfnfUIzHQZ@R?*z!x?ig!pE5cz@#ot7;X@qY zyMP++9GN*e@t`pB@DM&&v@ny8RRu2l8 z4a>{RNQ!;q#*M23sjHJ44;BNS%Dg7X2?}-spyTzw@&$p5Reutv=h3EN zq>Vl-&gK)tv~0fuRRquiOQ@Tm%zwU_M%LK4nUAG}%Hdrk$iqVs7#NqYt>{ZymD`8U8I%YId^Sgr7-=(k3{X%)YN&OJ_T8( zS^3|<#7EH(F;lQfJ-z4t3{bPlCSC=9>`Pi9hlrpcG~bimz-u!&5dKC9*~f+8Ji(Ns zlm8uU8DCu&z9{N9{?y2iQJlN#H!6R$ng;5jP|8#eQBl!F;BQD(1X5SxTxs}Ycqst& zhRaGn1yTXxir%zNO;Lf%YDMB+2qvE1-g=%t+0-&x zzki309nT3k{-xz*q_lySmR9ho#{P%z0P?$_w-*V*1ZL1}0NU*WDbnfK|9v?w!N)@+ zg-k*fDFA}=LdE|$Vq}T*BY5c?r`dWcAqOf@jEsI#qeambZw5Hukt-ifOhy)bap4Pc zldJnzy1GMs=8gYEFS@-zo9F3B0A@K!QfsTr=By8`adk{!K>^eB zqE19$AnHV^c|7n_5Ch!U-rlAXdzs&wS`Yz3nGf>Olx5}R(jbQ6wVyz!W(eYdpacbl zh=|Cf*_Rql{l#aQeq#kAFCQP4d-o^+*q43%T6nN0`g{o;5+tOU2^{^LV6# za7@tg7dcpX%b|}(vbF9U|4K5a5{2Xr5ah*`6%3&1=$M$yw{PbeBuC#)Oh{-0xDHaO z<7t*p$&$^WRSAbM?%?2{QK)wZws8qUkA^n)DUY-6&_g}l+K*xA=U0;1&)o15e>t(g}IDqp4ig9!W6JniJdu*qshOxq3 zA8g(d`(0(lacUne&o;Ds`+qqjE;>0WO%pprL2|DD>GsJ2bG5lw&-ELE?AqioR$ZNx z%ir&G%3SCOZf>GPwo_R}MY30~tUp%dFfuLufg8X0O!n#$%$#(3k%UvjddDCnM53d} zF!1ExuvD4rs$71-LyxAf@Ao|MZHMq5*x6C?n7fBZMWIbIk;rIFF$A3!D5`3DogEbP z4%}WUP?#&MzP7H#VgQ^t)NY&}k0&+! zqss8oLYohCE2HaNi+>UpD1Z)$#C@|C^;UKQFCU+UI32v&DzE!CCDe*8FT}t*)cm(E z;t;OGBI(aS1f`D4^S_~^AHGcyh68#|DB8&lNulS3ZD@Fu zu?n<-0#4wQVqYO%e5}(`ehrO<6j5{APiQ*2|3Cqg(e2|r*GS?`4ayGB!}a8m0j5o| zA0qbvb=|YVClg9`E4nRK9uajG!)NU-tF2A_`H^_eD?hbr*)IuHVQpEWJ;)9fk7>pY z0s__vD?WaHnd_@dLvC}8iVE`A=>-9p1QlF@{w7&$-@hlpImZ3HqM{C7WZ`f_>~(^r z#nTglDtrH%k9%3|K%~{eu3-sITKcV+TS)aQX0xQ^WB?9K3|?+A{0 zi>)OfqLaN3zejaIUAbAb2@NM?xpv=A$g1zn*WP|EFW%drU=@s1LGYM(;$ns0KpsDz zBh{eXT)D|V5mnG_UtFh&;M7L&TFU4H3v_gY2QK|?cQV7R0E(Az zm=Pg;GOWevLP0cK4`Rzq3V$aWX>!fxk2 z#bNrcWK}ZwWJu2H&mfA3*b#_qj|6!_iC0!AEY`>UUZ7DJ8;UGkD{Q^Vao>d>!GSS+8_ zQQo|JpX^0m2=OzPqsXot+2e)3)ac-8fKNlin#Otfoko`UF%{^5AB=rE1p7;}gl`JK zrEPy@m6*c-+M-)W@<$Y6?a_U`#K*#&vPs2!1wJZ#_|jGE;w8-#+lnzOZB18KM66 zg)|^R#GOgY^CN!^4Gr&L4H@hL>~b}PdX{GZxEG`{0b~3juiT+h25tQ>H?t?g)Lb2W7GD}Clu6mm^ zC|JKFmf=z?B8`TYq-ypns^y;RND6Muuk>*`Q!Uqo>hF959H+a#qd1YOo0{Ta5s5K! za^4sk3h&>1P$)=8h{dAtvVChBZv=KsHEWINW-80c**#-y5;7S(=JJP#_6}>lXK$p! z2n4#osHX@OxsaL%q)G&&1;D|gwp=1mkTrZbp(rB)L0PDWq32nMdShi z61T4e>{MuUPng<=0M8ZuGxmsA4aL*?e&Ujg2p~S zVHOgimh|>yVPwqere_LCiulpFG+jd%LsNxEL(@Oi;*U$f!N!bt^Ig0DwO?nmU*faJ zQ#6C$iitKiV;0vuv3KS^>iPHqVre_v_{aCkS04ecX}NnVC$0*csm1b6`3W+>ux-ie z=`o<8(d85rwCizbt$2htNm|8-@K~A@5TpZF8sD*nzseKq}6umc* z0}1Q7#aK7 z2Y1JNn=_)Q6%|Du*-RAgq~d!(;KXaMcNd?^Vh}b3pM#?pDLNu0{a*I+uVGFS#8QAQ z-IkLjIJGW|)D8~5d;2yk3Z|?fN<2B{i_~F(nbVq}W@BV*O~9-pO#r0>cv%@(xiqQl zZQ_LM(aF-#JI39}4)$ktNm3(GIP%M9hhF){`UIEf=j}bK%E{e#p@Bx3!%hi_?9%#= z)TyseNDmI}aT-K|+8;X|ZCdvZuYRXz*2)E0SVvnMDIO&{li1nUk^a%K!q7zaC#_>+ zl*Tnz!HXRpj7))IKbZ5_$kr*~$k9)fG(|wW&BAsh$-j zJD9BO_Lfke&KeP^tA~gDB9sA;2%qfAUQk?s(#Mo*Y(6=!ApVgAoct z)F-P9?Ob6OOR#Uq00vYojbWA5=FNWsW&-Gr{H# z8GkFt`GGRFWvT`#G6yyMik6diJ04KgD5E~}{@*cSq|XGB%IEb$819ht!K2c$CZv#t zgziFTZH1Go-}1*7Cdfi#78X8J@mfT;-tuD&DO2Hy?5cN5b%CtjednE0ut}s62+6>$ z=0IPZfL5V`o-l#Y@2s->Wbe=Jt_Wv^bQg$L7WY>~7xt)-ZPtIQ1wHCAcDRA;lsP$? zQ{~H;6UDS~046b-ytSfM28NgC{qYnLy4u>0#p#$W0que8*{!zW*3F**R$*bkuyN93 zNm#_J!S-F;2s)2M@yk1F=jOCBsWyzWIjC(it=KXKU8&$`u86&&cz~hiL38-Z# zpPhyfw~-iFJ-;~dGXa{7to%|^qTcJN^uK=lHoQQasI@o$K2i(gE|Q0djQ(--wAS4* zEHZ!h8xUt_Re;o0W9WWj@bI9*cg@>w#YuR8_7H*Oa1iv7LYjIvd$tJOH`hHY`@|Hw zFR&EwD6`rpOAV(QJotaF*vQjS7eqdOEHVYo6=`hG#^#ytw&dGA9)1^zgvywN2axES z%Q0Xv<*ke0cjy#;)B_G88|ENyW_Djj=FbR*dMhXm`D_QBicIazi)Q=hnsN-vmn6_` zyd7!saiwIrz2bF*U=R|@~GA>o?HGIGz*G}e(y3EPe`A_A}V_0f#st}pqX$;q1lgu zMWp_5sONS_{4fPlkM%!N1s&bw-JO=gE;i|SAk?L1v}K-qC?X;T6*MZ4hBh{;e^894 zgt-{H!+6<Yskr6%E6@$W>G&V{=+H<`RYine6UtxTM$~wluqyk zGIWC`Ch{>NVgKdU8CHo&I-ZS<*TGH;wa1RaS9(&WJak=U1ZYQKZb4o|^zcE0I{^kg z*{MIkHRX%s0p3vm)nTd7szbI$Kb4lb+ikmxZg}A7Zgld*q(bdviJJ>CjBM#&U~uh zdAg-15|DG`% zyg$-G+fRnIb}TZ^@T4FCJ|+e-RtZ-W)9&Oz6{ll4MXl6D1abt+)OnS z@f<;gMQDp45#L==p`5maElIkM!Ly%~`+_1e}l!hJkMf%mX8#jx#rzVW75p2(y zqJz{SmoQcbFbwB46(vL#)+61hj0`TM_0KjqGcidEvb@)m+nFnNIod=ZL-fJ}DVm_S z#C#eBomRu|jFGa~#>V{freaHGsRL z_4FC1_4TWI6-^ksvBhPGM-9J$G(nJ-Sc~W3eywtZu@Z+c3hp4yZ=)#a>X2-Sd#FP- zG7EQ!;_F*d24_~QKqj&)`X&xGu6KmZ0H(BII*kLaHso&a?#EtV-*qI!Bv=pdIc~IY zRP*4p!?oY2hLRJb0|jaT9)DE6uP^^Tknq}PU}75nNw^{m#etcbyFs}XFNn{fw9+ne zd#D~!`9&jj4yhg~LSTJq^F9UUF@JWIM? zBr&nE1KH)cPBXQE<2rj!XFPT-1m8)X2iXjW$*8C#Y{9r9^!H?-b-^WA3gSuzN$>FK znw$HDZk^x2q!*T6piBBxgR+6_eLhDI*o{&!I`2xY+s3`I_iYYr{QIU}U-|Jncwu5A z^mzAgsj`2SJ&|Q)4EM`-x}oXm)Em?K2cPrCLkhHe-W`g(x&lgK z7J3X^y+E}iY+F@hL^g;1t~3a7dn)Z#y71}ilOH}BM)r^LqW7G*b9fj9FZ_G}A$Ex3r{1Lb@NbrO`j$SVxGg7eK%S zqqchM8$rZO+yYRIVapDr)brk>XyL=hX4>S3Spv}CTMwkzTTtya*`uNm&`xy!{Q4Du zVF;6K_2S{iBZqJ~rC41%s|1i~gXcq5Hk#eC*a?hK6?bh+X2TR!i$k~;5AwXGzW?a}-U%#Yif zM@arI|Czvg^v<_+Yg!X-g{i+ESH#y7inC16UcasNxEqFivnIS5dORZ^!k^NR8vVZz zcK!(g26C_tpGFWH1`k7{qHtlr2n&Gl?>~QVn;iZFx66KQL;|sZ;oaVWWV!zbd)V{GbK5ipHT$?XAn`+pdW zc|cG&2vfLhTWr+r}H&g{(x)& zh^Nq3??by!unYL{J=P!sqykaUA7I0(fUe*wLxa$zXek0AhU-FWpw)`5&Gdh9a*YgM zvfg%SzpCFoxI?$1bxXoR+`VG4KFtSjsM3%)2ywIT5g$W=~)TK;H za>@(cvJ>}5#-Xp^BG9F1BV%KYzktwAN}s$ZkA;Y9k8qp}6?lbqjn09UUFe)EaFz%t>$tz+eb!-VK5k`y#85&GLcjJ z)56cM`#yq2{ngiBD$}@Ri8qK9|BvJuRioI zTRlBWp#By%HpoF-kT27~9DNteN4GBTEo^K=1EaSZcp*Y}bc} zu;1k5zXpN-p?AD!^z3{1cA9&JoJkb7Z1QT95 zk&f7g2bD^hLf%xuPDEDLte^R~n3i%o3l*eM^$}q*L*Kq(05Sjci4ATG9%g}RZf+iU zSDOI@VlWO1JuyFnG7HqXMz3I?%Z=WLxMpT%A|Q*&5PXKFqM`!NU08q-+KBl0aCndg zV9gPr&MyXPLEA!k$0#H%jS7w-=v4P>Fi>a&p9aA6cdFMYX?Jz1P6<53!uxpJwD?f@ z&Ho7yPtSLEcSGL+1v&c<9509Ra99fKJRe5;I2n)nS=r`X5o71RqGDW@y!qbI$BD;E40GK;6%)=Nh zh>;fIIT92`{-7{|CJqLG^YJgbc<>Ak_GoOsMwgz)_$+3vS(%TKljHo7K86unG$0`Xm0nz|;@Oy2oopXJZ6+G% zmqRjzWkFYPhb!3#`L3Oh83su_rV$GZF5~N)H5JCh=%;QwW~o?2W>CN;9yk}Ra_LoC zt|$}5-D>F=mfCqEPA5I$Q@}xP5gWGql%;Z<}SOC-c{&A#z;;u%W_YR z<^J!jtov^zYsPScc=9p~kh<7{Hw0H#+1r|o*g>yToMzWSyfK_3EBu>K-nu)^F}ARf zMK-KxWw9gmMK}w#H|IAiidY(580QqPkC7)1q03Vuam^4e?M%5Ny8IIR_K(VR@f!B( z>d?QF!zvE46d^i!=?0ZgH6x)Z73D@5#Q4}Km8VM7PYi_lbA9wt-C&iVF?lf86m31l z>s+oaM|{Qdtut4h-Wd0$koD@&Kz)oN@?&%h`#~sJ;eRdlB0N`fV&c@W$(!-X@Z6K5 z&EWsJGuCgNFd6qSobcXM{oy}x3IHjBb&*=?XHP6FqUyZpse6Q(oadq{qzHeV!J|Iv z5KUxh!;2JnFP~?LGy1bG|#jsu)d7{#5v#b7W=p+pGnkqM{<7`(ur|9=$qj4Sh92 zyQS2+2Y4R4IV5YNRs(v4bSsor4^ER?=;K&a?36{A>rcEM6g&U6jww{ z%x+~0;>+@n!h=U!Oj5#$qyAmZ>&s?(zSYa0X({foJ&V(xo5U!hekHMq-*|~y{Ks4{^I1tzk`|H#SY=U z!^;d(R>TUSBJpp^i@r{@)^Coe5KcfHy2i!PbE-r( z$K^lYh~2m8-hMP7ywx1}c~v2bobO3j6sk_X#oLd|IM-1T5w>u`VR{73)m1x;$ocZ`+|UZbtC5tI%=5RmTfl2W=ml@uhTrIi$r8oH!gKw4U*rCUN!Y9ypP@1AqN`#j(I z>&U>&Z{FN{?X}icZuPy-!8c&2zO%pjij*hm$Ns9(>NxYdkM`k4{f|Pm_0{1Vw$TE2 zsiHA&rz|*vLN&|9k{w#@qC%cg*S8IS`TO_HbWLhVy~m?k2Z{(Fjm=Ws^-oi0UritR z{Y^>0zy7NN$jlnRkqL5L!^FflG(uLr z(iuoKov0}+6acw=SnMc)cDYzYffe)ld5hIhCS9^J6Bl6Sfi4P~|Nz*6=V^E;9YSS0Xd^y0Gz8?O|S)FgiZ42?@ zcFYF;JyQgkFh6+EboH*&+$UAE_~zdRy6m@AR({Wyx)by~%c!htp$>B0tgCk7FaJ;N z(&Eofd3R=NjTY9+>&#P^zW4XXU=m*kG}r2ova+rY7^P(_dQOJ6qr^_lF8G*v>fiY1 zt3j*#>iA521P*AgJ-QV37TwO3e&o*X?(_5GT0OA>a?;{tlJFxa4=3^T!~@U0((6cT zc9v-S*fFUyG9#9jrck%_lI1?>`N00_8Az?zh}kc@bLGmwVdJIwJ*7eI+_6dv3+>WV z1iA1ziJ%jCXy|F{uL_xP`K8{(5TCO$I0hzM*0mv~B_k1b9zltkX(pmX|5Rw8U_sFL>oOZOKF?0} zrx7DpOA8mP(Kqgt^^%8a_b0_vA6o1#kvoMvhDX}2^@l|{SnrH2;JKf`w-_@Xg!!)e z6+bq2l?a)L0M?y5{kCnG_k99r(i;sQ7K2{QUWJZ zCYEmW0k4f{&8x&eV?|p@f>pvY;gwN>kU(j)mlmB1&9H=%;ZygJN2a6s&MsS*^n)45zP+i8#jzr^ z>FVUR?LTvxMe1qz^ex~DGZ)8{cVZWxnF`~zHp$*~dLRW+AXdQbQaUj)wRJN~?Y)(F zRVKnT0Y@Epz+!6+FVDkIU3K&J%geoWs0kH1(hI@?Wxl+kqKHQR#)P&=C7jfc;T`hL zx=4YBLfMOXbji%abDf$xKyi!VgzQ(t_@A%u9GiT}BdYdnFE53yT0;w#zXv^;{Y4C% z0d-qjjNj{LyuAqrT@$tMwIQCcm5~Sfl0{o^7VtaXvbP$_7^eBs5fc&7jg{zNnarn+ z#<8%9U(LqAjy<_NvqQ})JXfg9H~$mV6s%9A_jAUt0QSE-u9Nyes9JDu4w8^cyJ}&Av)RJnEgU2`DtI zPnzhOIDp4;UHb_WiUTNV_t$sK2YmG}e>Gr$hsVU(D4(8%z5Vx%DN)e(>qmtS!*SU8$*>(P9sn3#$*aS8@^2K~w0P*FJg6hAgeIpB**3^R#QjKC_kn$FPg~{P`UHfQTH7A*;&h55A$7d_hwYz-dT?x6(vN01r13bTYpV!>@1M7ms_&We}qt z&(twhVa9_^(UR-FWzppGkl9_fCoP?M@7Phd%o?A=ROrz{VsUJ z=vBV2&RwW9%h9|VV~7X}k}I34fc*BWLuXG!Dx0b|CDtp?2W)L@`iiw~+{N@NNSv9SD=+$4zsJ>^h@GjH zvnxbyLX29{s#M${g!~bB*Y4y5nGSp!<8q=?nP**9Z+6ty#!lip!lO7XKX4PXDT06? z0Wz4A$efh?@+v|`aLI~;^LKZ5*`UGwN`sxrgwIYNSG?8B(`ZOxwB@Qr6g0MYNfR?lEH*VfAXtas*t9qzIPegm&P zV#8PZneiax&r^spkB~|vBUkvdVVJx+dSrFhG3vj~NSdlpraK($x*q)c)CFy^({3bO zJS~|U`?KxTUDN}?`mAivTwl;l9)^qh4t8Y0^KahO4&qS}4+mF8f+4{I{!OmqqV@Uy zsPgQr&Fhsu8agGXj_=kh-YY>o%U+xZN*o_x!u;{){nyT^|s>nI4 zi_4dZga>+Im!1K`j>_)nl=olsCEW+N!B;-BapcchFFi4pQZ#?}C2yVl<9BaPTlQcV zMy=!QKw4PG2zcyY4Xg<@8Hx}~Ivbg)L6-DyMwr9vPy%)Clnx)S)g`bpbNgKqvzT1+ z1IeD?a48m2qOCE8j7PD`(LmpF4>*QYk-e6(`9#9f)th!X+2 z`HXN{4s+UFa%VA^$l$WTc;!N7*HZ?|nUK|HV4{?ogGX~Duh&#kirVFo)WxYALp;Vn zT7CIm#j<9eydyxiy~SDukVfKEOTIcg5OR6l4yJPy8JJKsmY~NJ$`HAmW70|}AQ%tK z4|{zIcIy2s0c}eHcKaR(gn>c%s4ckEVnI5Cg+H?4%?_1OBU}EnDB7h#haXu|i>Pqh zqSvNwu`u5P36~ipAaG3I^w@m>_wVC$onRh*{w$kuyfop&GaKQ1WIrF6%s&+IWhr*V z5RB5syjE?ab&H)H8w_583y`-<-FQB{f4>sWp76p<AFnB4Id^reL6dX&ks|D z0rP~>3Bn>LGGA*${)ngF-`bMtio}FK6ZjD?Yi&uC$BR2^aBAF^1L0}r=!q>Y>0DMT zb&)}vaKZJuaucDkv5i;M4n)<}Wz1%w`*&JjjMiE7{`h3T5093*zg{QFEK@yZ6BMp@R6>b-pl=; zdbp%1)eLNn1G>4IWrk|N;0O;_;5|LqgVF`L^}rKR54=veQ{f6(xV%83?o?4P5m)0h z#ZjkeID}62kdT@Ff%h6J8kM|${o|_ntmnaxY)vMo<<;o9=5+wE2EPSNF2ma4k+(u( zGHEe&w)mK2X)?WbHToLyP=(jY5T=tw-z9F|Z%Z^wgQE3>7+VfB*f=DV!yp{MN z|Hm8%geb-&(eH*nUy!CC^zK_W z;`NZLXX)3>)(>REQO0Af{!Y}3r%^y3XDNR)2py1zsTLm)UC8_$S&m{!ti6BFyC;eB zA=re8nRx%n&0^rC7bfWX@d2Qe&t69lB&FtmZ-{_6y!^6N;-{u^+LyMiR`=zf6`_@G zWaHIoBL6+Z-G}^GIhsY1F6*_r^zpjR>q3}lIy%n)7m_m1^*z+X3+x*@!FYy=sR38e z)0x`wzccQ){4PCMG-}vPO&3T6UK6^xX~RlwBzoN6u%S-I%w4R>7#TH)&ceC}PNDiu z%@@a)UOLUI0>##XKDCc&ArXdE8`<2<`>XM)=idyKKKaN3Vvhu&`;d8B9|SfQg- zk^@w|jjaH6VG?cg=nuBeydY76N zGC44$H3ybldneuN<89WtrqCE+k%(SaI6ap8Uwx=MdJb?F)D}7n8;NpjD%Qpr10=7( zB{(+y;PeONHgLpEH6Eq>w^6!JYbqg}gxEE$%8KImN-brZSA)vOrrs1@U&V|$t#a`% z&ibaf`1nzYlX7d58Q=YHg{;ohQCSUMZeRT?1e_WVM$FlH_KviDN~vtm*jN&To@&jW zU~Q}WJ)T*mnoIfe+@qqZYT{v#!mc;^=suPi_fY+L_^)18i} zKUIf@Q!Twjs2M{rbtCi^4ewLHc<ZBNu&@0b|$ib;7+IO;7?_l*IntN5o z^qQOj39^439F9!DN>@+FMR!{*>*KG+@=B{gt(CzonRnMI{64S7ZWxj&ATE^{o<`_{ zkt!kBRd8`zxfQ$|R&hwzVj#FjIu^)k5bS)ghM$&h<#FgR3n3)?+9#cIGUVW$ALPN5F9YXj zh_+n+>8IYf(-{+;nQb>yzcG_oUC7A96bX5hT)FYV%jq%W6$Wtv5|V)MUc=KP6(+I+ zWJcHaPCfctnyhj4l@zx%O|XFIdjWSR?5B^jj$_lOd&;YDX@R2nZXBxtf%}on8;|rc z_4X7_h-3jlyC4PT$Ed3lQu&ec`7jkX3qehHn?{jot@i% z`~ZUzcCZ(8CtxzCbALloq=D1{Ud-2S21XqPMa`Yd7#LDr{gsYsA#r8pWr*0TKE&j2 zLgJjSG}9G?iS6iC)(6l}j?=QKo>-ZDp5>*t$x8oT$FF80Zc7(x2jfLehleC2;aOQ+ z{p&SF-X{*Bk&zItK!Ljd_qT|h{n_^a06c{&o7`@>JoUxZ`WOIA!0I`X$KLQyzH#I^}tNDX!50cgp=# zzwwHRaS9f3aB+1{tjBQ`yR1qQFq)Q)+co=VGJB@#Hce*B(85(0oSe)FE5H)&(hS4j zypR;7Yhs?4!>KU(>y}#P+oB2PK+9^0pZ{jEfYL+6Uw5m$gLZe)gc?!-0myR4 z{qJv%1PsyG{B_%@8hZc71-P~G)A1x=UFVZP&$j@6$lD2s+5R3HI;#$a%%sh$EIyOz z;ClU=2_S8s?LUk(w8Q{^WNQ?V-XpChMFmhkr=+mp1B04nvfiHT`HY?$*a2XmlscWG z8l5Jco3C4OU9il_P9N$gEYpRUg8p;#L?PJoOZ%%{pFq7hRn=H!(d#i?o1SW8=?D2l zDt|_S!~8P5;iz>QKqT4fc|OKdU!U~6$7SW@9iQX5+FkY=EzclMWG`r@-3H(f^_8uV zdhjGE{~v&$Z@4w}lK_~&YTzvSUM*(=Jo|5(n&Cq&^KR=!?Zaq5raq9>D;JPcK-_sp z>~h;P9yAOge&A*mMNV$aHrl>ujdCmFQ+XH6&rZb_Vn zsc1B;(dUOVt?&@waGwBZi%Y}HN^cM5zP=IrNqbXMS%Al@`7ZO7kjKl3MhpboXIoz4 z4PpYvyg99-0TpXA{~)iT3PITrauw%pN#1OH4`&vf1Miz6dc9s$X1Phvci7CJ=+ zZeRLLEF^lvO(*x1Gg?C60tUickUncnQsDxWMmnSBKUL`xV%&0FPf)5^O#o_+R4`8) zy$>4iNG*2qy1&rDqf4V`b& z6Ir|_?~?>LGV?vID$EQt3ZqHnm%AKfYZum*J*ZM^-W(cOfKW80$G z06$*-mRYB*;>Vbg{H~}rS=r+^tZyY__VrV_I?}%dq}qr^ZqTu8kf#f?FZ9H2M9|jo%q^W@{!%-?pnuaas;OM={?OE-d zQdd#Ih)OLAjT-MUjd#(%8n+1rbOD8Y+Xbh5a%J%`ISaw z?* zL-Ym51xo9O!|S?5noGy0gp7K+GzY(M`?~`-l-cpafB&8&6ZH)L(M@3@EOzowqm0XI9^paUBPQ@GTa^Lsv(L7Aehsepgn%^+ zR}e7kc>YEniTa%JwRd-;Nwr1c-;+b2-}UGpNKe!dl*jY(dL<%4>Jy!0pr^M~tiEPx zDHqz&=>E6@r;@)}k)_sFP$f&!a&=Qzw{ap0aM4vZH}#^iCJ+38kdVX)g%!S+&lArr z3$;r~#G2}#MqM2{K0u|5|7L#PW7$>TUN3Jvu;)w)d1kgbdy<|m{A{?+ff|EIaqZ01 ze1E4eOg;~!PaF_&jLWmg87Rdv5Xj9VbRfh#JH*l_VW(%($mh_=|KhwlqVmR5D3(3L zvG^`H!`u-&(NE*}7IgiVVk|LXB5SIbTOeAGN%a1|EiD|e#5pjDq^WRSr)_X6O&{1V z4ulYP7pXFBoux_>e_i=ifs|=>*h79v2ww`v-R9uBK_nG+etimJ05!QiUb+3V#iIwGfQ=27q&^nS^F{U>*?k1@jw&RhyVvSE3x z@0ppoq(t(0*MZRl0vMo-jq`{p+pFfj7lg|D^6s+9@lF>O0ZY=+6*msX*jlb0Dk;qK z@N;&?_dU+KfhM2Fr8E8+CooNV3om?qG61+5AC%K=e0SY2g8Vze&z#N zW;M0Dib@GIF{|@}0gpr&-oBF%+kn1$mrfV@1tmeThy2F09NV-CiJKQo^K(O4yd;8L=y_aW zsr(0ZaSf%VtR8zS<3D#Gu0-SDS7{vjNNIk@Gf@|$lc`Yav}|~z;o`yrwmiB9#NVf< zMNaOsSYOklxpu7_9sLamnXkn$>%7OK+8C)YlFP~Uo*LI^SUbal~_ z^@(LcKe6}RR*y!%RM@42mq8N}#YVS7D1Byd+reK!okKp3A!~T?>C;ZME4BrKzzz9w zJm7%qf|w+%z^a6WysNwWJ(HH$<@0iVLjAgdkt}ZW-KEE*qT*@OTZok2#G2NGYa8ssXY2lS!-bCdW-t z_jPUbc;=a0KPibJXU}-uz~Gi1t>$YtC2)SvNOW^G%dtR`BP}hhQT=j2 zUs0#g%?^6)P`f{4U0wpRVG~86S}x0-@l7DHsBsU=TDrEBz0#$OPU-MBInQ z5>~)N(I**%zEAK=SFWogLF}#PTqnqO>3@gexPgPNm)?|c4p8uLq9)e?FTA}ycaFHI zhI}#~40{4dd2PI3PXWV_lY;}*DF&^{>j(=vJwart^zQnt*RHP1U_aJV7xm#o`{*b> z%q9yfD~XT`1DJiV6gS2@P?y|xuA{FQVT0^V;KlA;^b*-YikvgxoA%s zsvmW!{Gw+C#$=v;4Yt=i@D0O;PEt$AvEktuXcF`hy1tmbcp=fB!n?D#r_kc#SspSr z+w7GHltSoB@UFR8w54U*x;USCwK*8r?C)WZLwubBJjfni?GaBl4X^%!BY}dWb73JN zE@;UG{y!f;y8$(!6@X-*XG;hkt$eh&pD%Ph^4DjDYzJ~&jYc<;^wz7p{@Svh5Fw%W zbgnS3eh>P}LXHHNwGnW>;qpG)-hR!f@=;_2-U`8fw$nwC2hT)vwXwO$R{!OTESQar z06{Ys##e#YW-MBhDV|0SF_tBDrwE9PBhW7+Z?fD(0l2fV;EqHshoFHSq@WM-l{=8Z zPHRH@uk?MWBCWzFs_(7z=K+V9)@1AVZ%RD_0|j4SUv=P&2Ky1i6s@{{Xd?!}WN2F(DL|w@D{L4NpP-}P@^=tdE zB;*hyexm1zpk>emkY*J|Rb5jvjt7vIqL;(j2>nv!MYS_9S%|(V3r|hbaDfbqh=`A* z5NDH-mNq{Y%kaEE-|VFW3LAuSh8QdK_K<}GBfbTA{Yz*0hlcrwDT99((#hin#b&Z8Zd|IzFhdh87ZI<5n zQ&v&JHhxTPM)NSWJQrAv1%8Vv$FuE{2$~}3Ni~whX$JE{Q=`us&t{~r-|E{;BX`wO zBn~{blS8I>`O43qqc2a86ss_yc+o3&PW|SkDMa2-UK@e!70ce}d(m)H793j;G_=iB z%E?^IRlaxRei(j1llF%Z2=m=IXqt{c-78QzBPIG>sgopi}NxfeHoe zZ!sDSLM9r!nOfEpPZ;pk#;umK-wz^FBTToNSdHC!Ve1@I}wdhK;SsG zbn+-=2_2b9>;IDT>u0RGYjF|mn)A8WfuW!LX8opmUTzDKD9GM_GAt8kZfasvJ z06-$vJ2^ewXxDWMzK^_AYr3!JRU;8w+SoTI=ph6rB0i{i2rzCzuRNgD`|UnRuEz#* zed^=&@>b}QWd^?l;m^X#%HcOVIBL&^2Z2nw+VW^bz4~wKxUP~?>;x_>o!o~dV)9$O zw&0wXuaug^@!~r4e6s|dfnj5UTjTzbddmv;u7K6j3A_5zd;<<09oG(5PT_YR1I7bmHoUOo&z{FD`%!d#n5AchGX^E7_@q|_BF#ju=U?AO zr8qQSJ@;bg;E09;EceW_`##q$shhL&BDAkE{POx897aRAa`@Rfv7Rq-$B9IiUx_t$ z2{I41iiL(Nm>+GHxU8xhpbGG2`%D!KCUel3?c=()VV=5NtM3I$?f|BBRxofqlQ3an z&`y%$`B${-*RMlwzm?`|O$cM6IvmE@W^!hai z_gxsJ44|c<0l0N=VRIAfNivrOpdNH^H-K8nAMQ5V zj4;ow)+n>5n|qA#bs6I2!Q=CzNJPd+G?f%o9`NAl%%FwT2DG~K&=+lF&@M$6HWobw;Y2lvARoP|D#!^TN)tF(7L< zbdyI$E3g{4`OC-Kg8ZflRf2lDs%2*el@rZUeShj__QSU-ScHfGBy=x* z$o`lx&cwXZfY{aPK$Xfanf0NV#SeQRq$P>e2Lw~&-Mq-I3zeCwlmXy|1U|d~%7(gn z%a9l1&w8nPM;WCOfs`;$X@V?EDRA&;Jv+Fp`IA(I^F6*eyA9r-quBO3m+3rWpDzuhyY{8 zAq4NFyZ)J1Q1b(ak4KP+O9kAfa33NJOk*;jA%YYOYF=Mc`G+U^j z3J$*C%We6gYW5Ghzp_O*%r2CJ#4rE0wfJ29M~-?8xr2Iqbf#%{H1AUXtG<~m4NS6*v-&FOB;3|L-xQAyC2Wc5&=#D6dcux?E8-% zF#`&ljv{GOf=7iQz?JRgt#0{1c=%s#uUqIX2+*m(GEF*5b*S-(Ypx|CUYJG#$EgB# z*iJvc!O2?51c3RfoA8CSr?@K67&N;-D5VC22#N;YJ`^f;7rrpop9FkPA3=d7|J9_B zV$zT{>i6BI_~7@A8gQVjz6@OTVC*A0DhXP5S%1o<$CsB;&}c;txGyk|jW2~M(arbT zuV<>~nL;J@y+*-xX(uXl{{a*)a;`aX7|sg#o)p2sQ>NJo3&nQ_8%QWun)V05af3v< zXF$HoPN5bTwKCsq~8kN;S6<_Ynn>f^nN8bSE4+6MjBaQApEB))V@~)VYq)tmF zPf`3qz^{NW4Gb-nY6Ie%RHHObVO*d+`*gVL0K7=_sOyi zu4C2hGH}3eSpFmP~+-*xJ97=WKh(XuZ$oQHH#SmvZ8K{4W-wSaUKwZpt7QkQr!%3 zBWV6CyCQ&^E8iBpJk>m-K||=jo$RD!dTj_!ZnuBCOAt)~Ic4d1N7yNZ2HpST`wt&1 zx}$4QFn#9-N6Q|BFYFu^cU}MJe@n%vwLuGA>ss^ms>1eHtJ0uk_}*0CKf2fG3(oth zJw<49(Fc^J2jVTIKToL8ljGL$FwuYzj?(DlDVzZ!DFb|YoCnA1o1fwNDt`XF>3d>9 zoGyGNktg4=4HAs$8oOmI1)Rzn!(`ni!t8-N(2C_Fw5u6 zqc45Ew>^{%JO<++!0IMXpj={jTp^nU1W7Vsz8I)daCz*y3AyS^KY7b=hYfuSqI^d% zqYtUILz)7;d1n!yM6fbXHGB8!CelP>KGiQP9%XmJ^edhjWt^KeU7X!2<>ou3W~hC_nJ)xPNh4nh7gswt?`m z`%8byT&l;9Q($s`FK{IuA4|hRF$dl|0h=uyyc*5?zWwnH)F8t>0Zwkrrlxo=e|hpj z-3CQ6MUB;;E6DhEc7^0FPBnnNLW*M6&$pBpYL!&aX5E!6LoB97TdVh{-!)uDjXpE_9e{M(D~-{&}As%q@;Goo{;%OYqFH7zCK z)tXlqNxbW5P}9EmaN+~}xtR@uQt18K1BhuPqSJbb zf9{fIYb$KbxJOuz9-?$OC^q01M>}A(v!lLX>aFnh$Kep_SbRO`R-G{t8L6}DZ zN7^(?5U9hSjD5fa>Z%j!5CAIQBN@2|fOoxAZ#x1NIJrKX3gh9ZNfaBm+y6~jw#?OhzSvWT@9^+vuVPbl9A!xhw8Yi$p4tN{eUVgsi zprV>U6y0TYsi$#&qn@XK9cpS&27kV{@y94E@ffkIL6=7bA@(qp*UzJgBQ zOsJXnR-_@C#v?k6wCGj-{m%!*S_R#YB`AUZ!|Yzx`^)F$dmi+F5+Qx~s6RjU+IYma&v@0{27PC3PT(h1;^yv}6AGWl8#|4nHRiH5O-=p{8h6bep4l>nzhA}ti3-;1+z%(7H zvN8h2$g?cT?DNlbK+cY$RfzO^EkxsBY-T@~CjU_+TP%$X{_JP-853j(D-)$SOq!qb z4eF-7cYy2hP(d;z{ zN1W&GAY41BdcVh>XU_wzO%&%41aUCh7|@xFPUVr*?5|h59mL9-<;Lop+i-4^#pwP` z1sxhxTE0(|5(Dy$1LC&nnv%#yFC{1eguHwAa%;Cfg(tZ);10W-XA$$yN{a^(4|Sr2 zKasJEiN)a4Z-O;3Au7+K$dJu>O89rIhz>5wrGDnH?z@s$GaQia|o@a%SYEHR2`m*#~UET|=+cl#AK zh<{K8D(FpiWU%5 zy7v6{*G?3Zun%{cWq5c8Ru;6;Nrk4u0ie84&+_NBx5sk%rynwshuK4(O^Mz>jTgT0 zccs4odS;|UVdwSUiUtddBFN+L>}IrcJoe|D7{yMt5%F6y5uG;yzORBEC&{O!#7}q*1!Hk1^flz6)TM9AM!XD z$H>Qr^^h+-V>4+{G&j#x?%F@NZ+>-or!N)xX-`8IAWura%Z*=-+z_llfQF*4!^{G+ zl?1SkJdeFF=nEbX?03@_FPPku{3*LtXov(Mh9ZETq0pdKI8DSO5!gf^m>m6-ED8$< zoXs&v=Ld)h2qJ4-F9(GPolkaAM8MCLBSs#3ljS*6mCIah!K-Dl)_}GE7zk0TtfD5^ zMBpo@V?f(hG&UnoX*jA`dO@a|;pBSEi2F(?7(8Xybc`&{`oYeEJgxv6?fV#wif zMK>!1;vIuqk6=9^ft4{^kB{*Lq7?8mA-hld6Z~RXgE0N(iZ6_t6M!3TgvO-J(#hWH zlB<@Z;;V?$f0U3wF^L7W__U`;aEo4AFDDpD`H_64Zx zAc4w*toD36AoVBJHsr@l-rj7`*pD6L`_7a@#P6UIF?Gv%BsGw zOb7u$eyF-g6rb*kxlOP<&P^&&DAA)qSq-&*VGrP<$swRcr=U)m$hUcM>jv+C`r;6T zaPsoz1GkTW-T3VoT@xOD?5R`Jd?}o;qAe%+>Bl$6@DobLyS-KS2hOf9zM@I7^f#b%Q$$C+?co1s(fOm@4BLNN`$*fOs`)>y z&{q8c&r2MD(GaY`aI*5*i*$Vt3b~6NbxN7_hMiL_Uc?Nz@K2uqR)BI^%=tWARya7@ zX&~DLjE+`;DA!cxVG3`RRr~vupEENwgG`Wa{!P&}qcWccEvjzA{!QSBk~B2Gdxr<` z4Ty%~mD9;8>LwLiBY{ZE4Rpra_a0=%ELzL|;DwBv4qUuH-oo?-XC#R{#M|nteaL@M zXEhZ25Hv4d7Ulv?94fGZa9yc`;t4e>lDA%|;V9wU^m#m?i=OO$w8@Q!&z+zNP%*$t z<;KmR+N}aL-S?3^J_1&ovSo&4Lh|&l3mx=eGEP=eakr;RU={RzDY(@7sDq+u|2vF+iHFdLhMcIpA{f zDHoj0f}lkUg55+6s!V+V#b5h7RYiY!dHLqen@m-P*G^8?p;uRoTrA!2Cp~Uxe=ybL z!3};Mplzn57=>4$)H4bO>d*)XYUN#%ll&*A;3F~uod@7Y08Dd1lO4${RiI&&xGcug z+;!OE{y?(WOW~IW7A8OM(Gy0;>E0us{s7uVwU(xMS*Dv3-F)pIf}$B=(SuS1?G`1l z_!*36@$Q5mKs)dO&Tuur3jhK;e|fgB+`FYNYN-z(@A2t+xuEa406>}G>{?N7o&vJ9VHDj$PTB}4GAP7Eq4es4*&~)YM@6WlpIon?i@x@vtC}{EY@LwPPe!7Yi zFTViMeHbD0wq8^`SR~9sKxF=7eR3EiB}p(3g_=bV4i5p9e_(CFLQPE#{&3J_8z$){ zJ$=Daa;ORkuMNR{Ql8@_I}uUQA_IPF$2C+@0VoLQckfcs(cK0w3gZ@UIhZ;|^;~oS zNOLTD2MxUSt6z$NRn60_IXPDrp!nCjvHraZDthF!s!oZE%L!r|P-MS{RxD#9qXp$M zrc~&XwbXc+R2pGKyhu0zz9xDs$za>s@`+_;T2f zSs^8bj(0dLH1rR&HUl#$HL&YlT8E-wYR~*{6QHL9CehYYWVmY)^{5$$ySMZSEIkwfrZmC}4T@&{QeO|U)nNTn=noOWV?7cG<%Hdp{&4l=Q}wJ* zn$h6ZC9pNu4BiGhJv}nuv6CNl#E4==14;)KfroElccVDMBV6U$osfVIL5W&p$O~Ft ztN;Rzgz^Oq4Nazc(fiO)iHocF94K-_7$i0H}4X*3A0lL~0%Ef?ulRx`OLZ&PUHGxB?5qi>?rfDv4` zp+XHYo?m#6QScHaIw{OJ47>zX3uwSw1Ag@K zgDeaD8;0!x3|q7e^qGeufm2A9*4ou!9C6@Pje8d#S{o(WOpq%jIasj4Uy^;wZ9az}x56@#94PYi}77$uZHMfB1}s)`|Xq|1*nO WG#SScaElBL{*#kYmM)Wg?*BjiYPe4T literal 34067 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 diff --git a/docs/CmdArgsInterface_8h_source.html b/docs/CmdArgsInterface_8h_source.html index c1ff68f..472a2d6 100644 --- a/docs/CmdArgsInterface_8h_source.html +++ b/docs/CmdArgsInterface_8h_source.html @@ -84,184 +84,187 @@ $(function() {
4 #include <unordered_map>
5 #include <vector>
6 
-
7 namespace Hazelnp
-
8 {
-
9  /** The main class to interface with
-
10  */
- -
12  {
-
13  public:
- -
15  CmdArgsInterface(const int argc, const char* const* argv);
-
16 
- -
18 
-
19  //! Will parse command line arguments
-
20  void Parse(const int argc, const char* const* argv);
-
21 
-
22  //! Will return argv[0], the name of the executable.
-
23  const std::string& GetExecutableName() const;
-
24 
-
25  //! Will return the value given a key
-
26  const Value& operator[](const std::string& key) const;
-
27 
-
28  //! Will check wether a parameter exists given a key, or not
-
29  bool HasParam(const std::string& key) const;
-
30 
-
31  // Abbreviations
-
32  //! Will register an abbreviation (like -f for --force)
-
33  void RegisterAbbreviation(const std::string& abbrev, const std::string& target);
-
34 
-
35  //! Will return the long form of an abbreviation (like --force for -f)
-
36  //! Returns "" if no match is found
-
37  const std::string& GetAbbreviation(const std::string& abbrev) const;
-
38 
-
39  //! Will check wether or not an abbreviation is registered
-
40  bool HasAbbreviation(const std::string& abbrev) const;
-
41 
-
42  //! Will delete the abbreviation for a given parameter.
-
43  //! IMPORTANT: This parameter is the abbreviation! Not the long form!
-
44  void ClearAbbreviation(const std::string& abbrevation);
-
45 
-
46  //! Will delete all abbreviations
-
47  void ClearAbbreviations();
-
48 
-
49  //! Will register a constraint for a parameter.
-
50  //! IMPORTANT: Any parameter can only have ONE constraint. Applying a new one will overwrite the old one!
-
51  //! Construct the ParamConstraint struct yourself to combine Require and TypeSafety! You can also use the ParamConstraint constructor!
-
52  void RegisterConstraint(const std::string& key, const ParamConstraint& constraint);
-
53 
-
54  //! Will return the constraint information for a specific parameter
-
55  ParamConstraint GetConstraint(const std::string& parameter) const;
-
56 
-
57  //! Will the constraint of a specific parameter
-
58  void ClearConstraint(const std::string& parameter);
-
59 
-
60  //! Will delete all constraints
-
61  void ClearConstraints();
-
62 
-
63  //! Sets whether to crash the application, and print to stderr, when an exception is
-
64  //! raised whilst parsing, or not.
-
65  void SetCrashOnFail(bool crashOnFail);
-
66 
-
67  //! Gets whether the application crashes on an exception whilst parsing, and prints to stderr.
-
68  bool GetCrashOnFail() const;
-
69 
-
70  //! Sets whether the CmdArgsInterface should automatically catch the --help parameter, print the parameter documentation to stdout, and exit or not.
-
71  void SetCatchHelp(bool catchHelp);
-
72 
-
73  //! Retruns whether the CmdArgsInterface should automatically catch the --help parameter, print the parameter documentation to stdout, and exit or not.
-
74  bool GetCatchHelp() const;
-
75 
-
76  //! Sets a brief description of the application to be automatically added to the documentation.
-
77  void SetBriefDescription(const std::string& description);
-
78 
-
79  //! Returns the brief description of the application to be automatically added to the documentation.
-
80  const std::string& GetBriefDescription();
-
81 
-
82  //! Willl register a short description for a parameter.
-
83  //! Will overwrite existing descriptions for that parameter.
-
84  void RegisterDescription(const std::string& parameter, const std::string& description);
-
85 
-
86  //! Will return a short description for a parameter, if it exists.
-
87  //! Empty string if it does not exist.
-
88  const std::string& GetDescription(const std::string& parameter) const;
-
89 
-
90  //! Returns whether or not a given parameter has a registered description
-
91  bool HasDescription(const std::string& parameter) const;
-
92 
-
93  //! Will delete the description of a parameter if it exists.
-
94  void ClearDescription(const std::string& parameter);
-
95 
-
96  //! Will delete all parameter descriptions
-
97  void ClearDescriptions();
-
98 
-
99  //! Will generate a text-based documentation suited to show the user, for example on --help.
-
100  std::string GenerateDocumentation() const;
-
101 
-
102  private:
-
103  //! Will translate the c-like args to an std::vector
-
104  void PopulateRawArgs(const int argc, const char* const* argv);
-
105 
-
106  //! Will replace all args matching an abbreviation with their long form (like -f for --force)
-
107  void ExpandAbbreviations();
-
108 
-
109  //! Will parse the next parameter. Returns the index of the next parameter.
-
110  std::size_t ParseNextParameter(const std::size_t parIndex, Parameter*& out_Par);
-
111 
-
112  //! Will convert a vector of string-values to an actual Value
-
113  Value* ParseValue(const std::vector<std::string>& values, const ParamConstraint* constraint = nullptr);
-
114 
-
115  //! Will apply the loaded constraints on the loaded values, exluding types.
-
116  void ApplyConstraints();
-
117 
-
118  //! Will return a pointer to a paramConstraint given a key. If there is no, it returns nullptr
-
119  const ParamConstraint* GetConstraintForKey(const std::string& key) const;
-
120 
-
121  std::string executableName; //! The path of the executable. Always argv[0]
-
122  std::unordered_map<std::string, Parameter*> parameters;
-
123 
-
124  //! These are abbreviations. Like, -f for --force.
-
125  std::unordered_map<std::string, std::string> parameterAbreviations;
-
126 
-
127  //! Parameter constraints, mapped to keys
-
128  std::unordered_map<std::string, ParamConstraint> parameterConstraints;
-
129 
-
130  //! Raw argv
-
131  std::vector<std::string> rawArgs;
-
132 
-
133  //! Short descriptions for parameters
-
134  //! First member is the abbreviation
-
135  std::unordered_map<std::string, std::string> parameterDescriptions;
-
136 
-
137  //! A brief description of the application to be added to the generated documentation. Optional.
-
138  std::string briefDescription;
-
139 
-
140  //! If set to true, CmdArgsInterface will automatically catch the --help parameter, print the parameter documentation to stdout and exit.
-
141  bool catchHelp = true;
-
142 
-
143  //! If set to true, CmdArgsInterface will crash the application with output to stderr when an exception is thrown whilst parsing.
-
144  bool crashOnFail = true;
-
145  };
-
146 }
+
7 #include "Version.h"
+
8 
+
9 namespace Hazelnp
+
10 {
+
11  /** The main class to interface with
+
12  */
+ +
14  {
+
15  public:
+ +
17  CmdArgsInterface(const int argc, const char* const* argv);
+
18 
+ +
20 
+
21  //! Will parse command line arguments
+
22  void Parse(const int argc, const char* const* argv);
+
23 
+
24  //! Will return argv[0], the name of the executable.
+
25  const std::string& GetExecutableName() const;
+
26 
+
27  //! Will return the value given a key
+
28  const Value& operator[](const std::string& key) const;
+
29 
+
30  //! Will check wether a parameter exists given a key, or not
+
31  bool HasParam(const std::string& key) const;
+
32 
+
33  // Abbreviations
+
34  //! Will register an abbreviation (like -f for --force)
+
35  void RegisterAbbreviation(const std::string& abbrev, const std::string& target);
+
36 
+
37  //! Will return the long form of an abbreviation (like --force for -f)
+
38  //! Returns "" if no match is found
+
39  const std::string& GetAbbreviation(const std::string& abbrev) const;
+
40 
+
41  //! Will check wether or not an abbreviation is registered
+
42  bool HasAbbreviation(const std::string& abbrev) const;
+
43 
+
44  //! Will delete the abbreviation for a given parameter.
+
45  //! IMPORTANT: This parameter is the abbreviation! Not the long form!
+
46  void ClearAbbreviation(const std::string& abbrevation);
+
47 
+
48  //! Will delete all abbreviations
+
49  void ClearAbbreviations();
+
50 
+
51  //! Will register a constraint for a parameter.
+
52  //! IMPORTANT: Any parameter can only have ONE constraint. Applying a new one will overwrite the old one!
+
53  //! Construct the ParamConstraint struct yourself to combine Require, TypeSafety and Incompatibilities! You can also use the ParamConstraint constructor!
+
54  void RegisterConstraint(const std::string& key, const ParamConstraint& constraint);
+
55 
+
56  //! Will return the constraint information for a specific parameter
+
57  ParamConstraint GetConstraint(const std::string& parameter) const;
+
58 
+
59  //! Will the constraint of a specific parameter
+
60  void ClearConstraint(const std::string& parameter);
+
61 
+
62  //! Will delete all constraints
+
63  void ClearConstraints();
+
64 
+
65  //! Sets whether to crash the application, and print to stderr, when an exception is
+
66  //! raised whilst parsing, or not.
+
67  void SetCrashOnFail(bool crashOnFail);
+
68 
+
69  //! Gets whether the application crashes on an exception whilst parsing, and prints to stderr.
+
70  bool GetCrashOnFail() const;
+
71 
+
72  //! Sets whether the CmdArgsInterface should automatically catch the --help parameter, print the parameter documentation to stdout, and exit or not.
+
73  void SetCatchHelp(bool catchHelp);
+
74 
+
75  //! Retruns whether the CmdArgsInterface should automatically catch the --help parameter, print the parameter documentation to stdout, and exit or not.
+
76  bool GetCatchHelp() const;
+
77 
+
78  //! Sets a brief description of the application to be automatically added to the documentation.
+
79  void SetBriefDescription(const std::string& description);
+
80 
+
81  //! Returns the brief description of the application to be automatically added to the documentation.
+
82  const std::string& GetBriefDescription();
+
83 
+
84  //! Willl register a short description for a parameter.
+
85  //! Will overwrite existing descriptions for that parameter.
+
86  void RegisterDescription(const std::string& parameter, const std::string& description);
+
87 
+
88  //! Will return a short description for a parameter, if it exists.
+
89  //! Empty string if it does not exist.
+
90  const std::string& GetDescription(const std::string& parameter) const;
+
91 
+
92  //! Returns whether or not a given parameter has a registered description
+
93  bool HasDescription(const std::string& parameter) const;
+
94 
+
95  //! Will delete the description of a parameter if it exists.
+
96  void ClearDescription(const std::string& parameter);
+
97 
+
98  //! Will delete all parameter descriptions
+
99  void ClearDescriptions();
+
100 
+
101  //! Will generate a text-based documentation suited to show the user, for example on --help.
+
102  std::string GenerateDocumentation() const;
+
103 
+
104  private:
+
105  //! Will translate the c-like args to an std::vector
+
106  void PopulateRawArgs(const int argc, const char* const* argv);
+
107 
+
108  //! Will replace all args matching an abbreviation with their long form (like -f for --force)
+
109  void ExpandAbbreviations();
+
110 
+
111  //! Will parse the next parameter. Returns the index of the next parameter.
+
112  std::size_t ParseNextParameter(const std::size_t parIndex, Parameter*& out_Par);
+
113 
+
114  //! Will convert a vector of string-values to an actual Value
+
115  Value* ParseValue(const std::vector<std::string>& values, const ParamConstraint* constraint = nullptr);
+
116 
+
117  //! Will apply the loaded constraints on the loaded values, exluding types.
+
118  void ApplyConstraints();
+
119 
+
120  //! Will return a pointer to a paramConstraint given a key. If there is no, it returns nullptr
+
121  const ParamConstraint* GetConstraintForKey(const std::string& key) const;
+
122 
+
123  std::string executableName; //! The path of the executable. Always argv[0]
+
124  std::unordered_map<std::string, Parameter*> parameters;
+
125 
+
126  //! These are abbreviations. Like, -f for --force.
+
127  std::unordered_map<std::string, std::string> parameterAbreviations;
+
128 
+
129  //! Parameter constraints, mapped to keys
+
130  std::unordered_map<std::string, ParamConstraint> parameterConstraints;
+
131 
+
132  //! Raw argv
+
133  std::vector<std::string> rawArgs;
+
134 
+
135  //! Short descriptions for parameters
+
136  //! First member is the abbreviation
+
137  std::unordered_map<std::string, std::string> parameterDescriptions;
+
138 
+
139  //! A brief description of the application to be added to the generated documentation. Optional.
+
140  std::string briefDescription;
+
141 
+
142  //! If set to true, CmdArgsInterface will automatically catch the --help parameter, print the parameter documentation to stdout and exit.
+
143  bool catchHelp = true;
+
144 
+
145  //! If set to true, CmdArgsInterface will crash the application with output to stderr when an exception is thrown whilst parsing.
+
146  bool crashOnFail = true;
+
147  };
+
148 }
-
bool GetCatchHelp() const
Retruns whether the CmdArgsInterface should automatically catch the –help parameter,...
- -
The main class to interface with.
-
ParamConstraint GetConstraint(const std::string &parameter) const
Will return the constraint information for a specific parameter.
-
void ClearAbbreviations()
Will delete all abbreviations.
-
void SetCatchHelp(bool catchHelp)
Sets whether the CmdArgsInterface should automatically catch the –help parameter, print the parameter...
-
bool HasAbbreviation(const std::string &abbrev) const
Will check wether or not an abbreviation is registered.
-
void RegisterConstraint(const std::string &key, const ParamConstraint &constraint)
Will register a constraint for a parameter.
-
void ClearConstraint(const std::string &parameter)
Will the constraint of a specific parameter.
+
bool GetCatchHelp() const
Retruns whether the CmdArgsInterface should automatically catch the –help parameter,...
+ +
The main class to interface with.
+
ParamConstraint GetConstraint(const std::string &parameter) const
Will return the constraint information for a specific parameter.
+
void ClearAbbreviations()
Will delete all abbreviations.
+
void SetCatchHelp(bool catchHelp)
Sets whether the CmdArgsInterface should automatically catch the –help parameter, print the parameter...
+
bool HasAbbreviation(const std::string &abbrev) const
Will check wether or not an abbreviation is registered.
+
void RegisterConstraint(const std::string &key, const ParamConstraint &constraint)
Will register a constraint for a parameter.
+
void ClearConstraint(const std::string &parameter)
Will the constraint of a specific parameter.
Abstract class for values.
Definition: Value.h:10
-
void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
Will register an abbreviation (like -f for –force)
-
bool HasParam(const std::string &key) const
Will check wether a parameter exists given a key, or not.
-
void ClearConstraints()
Will delete all constraints.
+
void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
Will register an abbreviation (like -f for –force)
+
bool HasParam(const std::string &key) const
Will check wether a parameter exists given a key, or not.
+
void ClearConstraints()
Will delete all constraints.
-
bool GetCrashOnFail() const
Gets whether the application crashes on an exception whilst parsing, and prints to stderr.
-
bool HasDescription(const std::string &parameter) const
Returns whether or not a given parameter has a registered description.
-
void ClearDescription(const std::string &parameter)
Will delete the description of a parameter if it exists.
+ +
bool GetCrashOnFail() const
Gets whether the application crashes on an exception whilst parsing, and prints to stderr.
+
bool HasDescription(const std::string &parameter) const
Returns whether or not a given parameter has a registered description.
+
void ClearDescription(const std::string &parameter)
Will delete the description of a parameter if it exists.
-
void ClearAbbreviation(const std::string &abbrevation)
Will delete the abbreviation for a given parameter.
+
void ClearAbbreviation(const std::string &abbrevation)
Will delete the abbreviation for a given parameter.
void Parse(const int argc, const char *const *argv)
Will parse command line arguments.
-
void SetBriefDescription(const std::string &description)
Sets a brief description of the application to be automatically added to the documentation.
-
const std::string & GetBriefDescription()
Returns the brief description of the application to be automatically added to the documentation.
-
const Value & operator[](const std::string &key) const
Will return the value given a key.
-
void ClearDescriptions()
Will delete all parameter descriptions.
+
void SetBriefDescription(const std::string &description)
Sets a brief description of the application to be automatically added to the documentation.
+
const std::string & GetBriefDescription()
Returns the brief description of the application to be automatically added to the documentation.
+
const Value & operator[](const std::string &key) const
Will return the value given a key.
+
void ClearDescriptions()
Will delete all parameter descriptions.
-
std::string GenerateDocumentation() const
Will generate a text-based documentation suited to show the user, for example on –help.
-
void RegisterDescription(const std::string &parameter, const std::string &description)
Willl register a short description for a parameter.
-
const std::string & GetDescription(const std::string &parameter) const
Will return a short description for a parameter, if it exists.
-
const std::string & GetAbbreviation(const std::string &abbrev) const
Will return the long form of an abbreviation (like –force for -f) Returns "" if no match is found.
-
const std::string & GetExecutableName() const
Will return argv[0], the name of the executable.
-
void SetCrashOnFail(bool crashOnFail)
Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...
+
std::string GenerateDocumentation() const
Will generate a text-based documentation suited to show the user, for example on –help.
+
void RegisterDescription(const std::string &parameter, const std::string &description)
Willl register a short description for a parameter.
+
const std::string & GetDescription(const std::string &parameter) const
Will return a short description for a parameter, if it exists.
+
const std::string & GetAbbreviation(const std::string &abbrev) const
Will return the long form of an abbreviation (like –force for -f) Returns "" if no match is found.
+
const std::string & GetExecutableName() const
Will return argv[0], the name of the executable.
+
void SetCrashOnFail(bool crashOnFail)
Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...
diff --git a/docs/DataType_8h.html b/docs/DataType_8h.html index 17e3811..6775d0e 100644 --- a/docs/DataType_8h.html +++ b/docs/DataType_8h.html @@ -148,7 +148,7 @@ Functions diff --git a/docs/DataType_8h_source.html b/docs/DataType_8h_source.html index a6187f1..e2a996d 100644 --- a/docs/DataType_8h_source.html +++ b/docs/DataType_8h_source.html @@ -118,7 +118,7 @@ $(function() {
38  }
39 }
- + @@ -128,7 +128,7 @@ $(function() {
static std::string DataTypeToString(DATA_TYPE type)
Definition: DataType.h:17
diff --git a/docs/Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html b/docs/Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html index 5557477..5107001 100644 --- a/docs/Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html +++ b/docs/Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html @@ -77,7 +77,7 @@ $(function() { diff --git a/docs/FloatValue_8cpp.html b/docs/FloatValue_8cpp.html index 7fdc7d7..c61a61e 100644 --- a/docs/FloatValue_8cpp.html +++ b/docs/FloatValue_8cpp.html @@ -103,7 +103,7 @@ Include dependency graph for FloatValue.cpp: diff --git a/docs/FloatValue_8cpp_source.html b/docs/FloatValue_8cpp_source.html index 4ad52cd..20272e8 100644 --- a/docs/FloatValue_8cpp_source.html +++ b/docs/FloatValue_8cpp_source.html @@ -156,7 +156,7 @@ $(function() {
long double GetFloat64() const override
Will return the data as a long double.
Definition: FloatValue.cpp:54
- +
std::string GetString() const override
Will return the data as a string.
Definition: FloatValue.cpp:64
const std::vector< Value * > & GetList() const override
Throws HazelnuppValueNotConvertibleException.
Definition: FloatValue.cpp:72
long long int GetInt64() const override
Will return the data as a long long int.
Definition: FloatValue.cpp:44
@@ -173,7 +173,7 @@ $(function() {
int GetInt32() const override
Will return the data as an int.
Definition: FloatValue.cpp:49
diff --git a/docs/FloatValue_8h.html b/docs/FloatValue_8h.html index 6008583..00a31e6 100644 --- a/docs/FloatValue_8h.html +++ b/docs/FloatValue_8h.html @@ -123,7 +123,7 @@ Namespaces diff --git a/docs/FloatValue_8h_source.html b/docs/FloatValue_8h_source.html index e045c9f..31415bf 100644 --- a/docs/FloatValue_8h_source.html +++ b/docs/FloatValue_8h_source.html @@ -126,7 +126,7 @@ $(function() {
46 }
long double GetFloat64() const override
Will return the data as a long double.
Definition: FloatValue.cpp:54
- +
~FloatValue() override
Definition: FloatValue.h:13
std::string GetString() const override
Will return the data as a string.
Definition: FloatValue.cpp:64
const std::vector< Value * > & GetList() const override
Throws HazelnuppValueNotConvertibleException.
Definition: FloatValue.cpp:72
@@ -142,7 +142,7 @@ $(function() {
int GetInt32() const override
Will return the data as an int.
Definition: FloatValue.cpp:49
diff --git a/docs/HazelnuppException_8h.html b/docs/HazelnuppException_8h.html index 5f0a082..07a0d5b 100644 --- a/docs/HazelnuppException_8h.html +++ b/docs/HazelnuppException_8h.html @@ -134,6 +134,9 @@ Classes class  Hazelnp::HazelnuppConstraintMissingValue  Gets thrown when a parameter constrained to be required is not provided, and has no default value set. More...
  +class  Hazelnp::HazelnuppConstraintIncompatibleParameters + Gets thrown when a parameter constrained to be incompatible with other parameters gets supplied alongside at least one of those incompatible ones. More...
+  @@ -143,7 +146,7 @@ Namespaces diff --git a/docs/HazelnuppException_8h_source.html b/docs/HazelnuppException_8h_source.html index d86014a..6928984 100644 --- a/docs/HazelnuppException_8h_source.html +++ b/docs/HazelnuppException_8h_source.html @@ -175,12 +175,30 @@ $(function() {
95  return;
96  };
97  };
-
98 }
+
98 
+
99  /** Gets thrown when a parameter constrained to be incompatible with other parameters gets supplied alongside at least one of those incompatible ones
+
100  */
+ +
102  {
+
103  public:
+ +
105  HazelnuppConstraintIncompatibleParameters(const std::string& key1, const std::string& key2)
+
106  {
+
107  // Generate descriptive error message
+
108  std::stringstream ss;
+
109  ss << "Parameter \"" << key1 << "\" is NOT compatible with parameter \"" << key2 << "\"!";
+
110 
+
111  message = ss.str();
+
112  return;
+
113  };
+
114  };
+
115 }
- +
HazelnuppInvalidKeyException(const std::string &msg)
+
Gets thrown when a parameter constrained to be incompatible with other parameters gets supplied along...
Gets thrown when an non-existent key gets dereferenced.
HazelnuppConstraintException(const std::string &msg)
HazelnuppException(const std::string &msg)
@@ -188,12 +206,14 @@ $(function() {
Gets thrown something bad happens because of parameter constraints.
+
HazelnuppConstraintIncompatibleParameters(const std::string &key1, const std::string &key2)
Generic hazelnupp exception.
Gets thrown when a parameter constrained to be required is not provided, and has no default value set...
Gets thrown when a parameter is of a type that does not match the required type, and is not convertib...
HazelnuppValueNotConvertibleException(const std::string &msg)
+
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:8
HazelnuppConstraintMissingValue(const std::string &key, const std::string &paramDescription="")
HazelnuppConstraintTypeMissmatch(const std::string &key, const DATA_TYPE requiredType, const DATA_TYPE actualType, const std::string &paramDescription="")
@@ -204,7 +224,7 @@ $(function() { diff --git a/docs/IntValue_8cpp.html b/docs/IntValue_8cpp.html index e41ff97..453ed68 100644 --- a/docs/IntValue_8cpp.html +++ b/docs/IntValue_8cpp.html @@ -103,7 +103,7 @@ Include dependency graph for IntValue.cpp: diff --git a/docs/IntValue_8cpp_source.html b/docs/IntValue_8cpp_source.html index bd6115c..0d88ce1 100644 --- a/docs/IntValue_8cpp_source.html +++ b/docs/IntValue_8cpp_source.html @@ -156,7 +156,7 @@ $(function() {
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: IntValue.cpp:20
- +
double GetFloat32() const override
Will return the data as a double.
Definition: IntValue.cpp:59
IntValue(const long long int &value)
Definition: IntValue.cpp:7
@@ -173,7 +173,7 @@ $(function() {
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
diff --git a/docs/IntValue_8h.html b/docs/IntValue_8h.html index 14aad36..0e2b3da 100644 --- a/docs/IntValue_8h.html +++ b/docs/IntValue_8h.html @@ -122,7 +122,7 @@ Namespaces diff --git a/docs/IntValue_8h_source.html b/docs/IntValue_8h_source.html index 4591c41..4a91cd3 100644 --- a/docs/IntValue_8h_source.html +++ b/docs/IntValue_8h_source.html @@ -126,7 +126,7 @@ $(function() {
46 }
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: IntValue.cpp:20
- +
Specializations for integer values (uses long long int)
Definition: IntValue.h:8
double GetFloat32() const override
Will return the data as a double.
Definition: IntValue.cpp:59
~IntValue() override
Definition: IntValue.h:12
@@ -142,7 +142,7 @@ $(function() { diff --git a/docs/ListValue_8cpp.html b/docs/ListValue_8cpp.html index 16ee4d5..19e9be7 100644 --- a/docs/ListValue_8cpp.html +++ b/docs/ListValue_8cpp.html @@ -103,7 +103,7 @@ Include dependency graph for ListValue.cpp: diff --git a/docs/ListValue_8cpp_source.html b/docs/ListValue_8cpp_source.html index 3dd95fb..b112bf6 100644 --- a/docs/ListValue_8cpp_source.html +++ b/docs/ListValue_8cpp_source.html @@ -178,7 +178,7 @@ $(function() {
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: ListValue.cpp:44
- +
double GetFloat32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:84
std::string GetString() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:89
const std::vector< Value * > & GetList() const override
Will return this values list.
Definition: ListValue.cpp:94
@@ -199,7 +199,7 @@ $(function() {
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
diff --git a/docs/ListValue_8h.html b/docs/ListValue_8h.html index 9e7da07..4bf111e 100644 --- a/docs/ListValue_8h.html +++ b/docs/ListValue_8h.html @@ -123,7 +123,7 @@ Namespaces diff --git a/docs/ListValue_8h_source.html b/docs/ListValue_8h_source.html index 778ea05..9939aac 100644 --- a/docs/ListValue_8h_source.html +++ b/docs/ListValue_8h_source.html @@ -128,7 +128,7 @@ $(function() {
48 }
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: ListValue.cpp:44
- +
double GetFloat32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:84
std::string GetString() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:89
const std::vector< Value * > & GetList() const override
Will return this values list.
Definition: ListValue.cpp:94
@@ -145,7 +145,7 @@ $(function() { diff --git a/docs/ParamConstraint_8h.html b/docs/ParamConstraint_8h.html index c9118fe..54b1519 100644 --- a/docs/ParamConstraint_8h.html +++ b/docs/ParamConstraint_8h.html @@ -121,7 +121,7 @@ Namespaces diff --git a/docs/ParamConstraint_8h_source.html b/docs/ParamConstraint_8h_source.html index 1857d54..e31dddb 100644 --- a/docs/ParamConstraint_8h_source.html +++ b/docs/ParamConstraint_8h_source.html @@ -93,7 +93,7 @@ $(function() {
13 
14  //! Constructs a require constraint.
15  //! Think of the default value like of a list ofparameters. Like {"--width", "800"}
-
16  static ParamConstraint Require(const std::vector<std::string>& defaultValue = {}, bool required = true)
+
16  static ParamConstraint Require(const std::initializer_list<std::string>& defaultValue = {}, bool required = true)
17  {
18  ParamConstraint pc;
@@ -112,59 +112,87 @@ $(function() {
32  return pc;
33  }
34 
-
35  //! Whole constructor
-
36  ParamConstraint(bool constrainType, DATA_TYPE requiredType, const std::vector<std::string>& defaultValue, bool required)
-
37  :
- - - - -
42  {
-
43  return;
-
44  }
-
45 
-
46  //! Should this parameter be forced to be of a certain type?
-
47  //! Remember to set `constrainTo` to the wanted type
-
48  bool constrainType = false;
-
49 
-
50  //! Constrain the parameter to this value. Requires `constrainType` to be set to true.
- -
52 
-
53  //! The default value for this parameter.
-
54  //! Gets applied if this parameter was not given.
-
55  //! Think of this like a list of parameters. Like {"--width", "800"}
-
56  std::vector<std::string> defaultValue;
-
57 
-
58  //! If set to true, and no default value set,
-
59  //! an error will be produced if this parameter is not supplied by the user.
-
60  bool required = false;
-
61 
-
62  private:
-
63  //! The parameter this constraint is for.
-
64  //! This value is automatically set by Hazelnupp.
-
65  std::string key;
-
66 
-
67  friend class CmdArgsInterface;
-
68  };
-
69 }
+
35  //! Constructs an incompatibility constraint.
+
36  //! This means, that the following parameters are NOT compatible with this one and will throw an error if passed together
+
37  static ParamConstraint Incompatibility(const std::initializer_list<std::string>& incompatibleParameters)
+
38  {
+
39  ParamConstraint pc;
+ +
41 
+
42  return pc;
+
43  }
+
44 
+
45  //! Constructs an incompatibility constraint.
+
46  //! This means, that the following parameters are NOT compatible with this one and will throw an error if passed together.
+
47  //! Syntactical-sugar proxy method that will convert the lonely string to an initializer list for you :3
+ +
49  {
+
50  ParamConstraint pc;
+ +
52 
+
53  return pc;
+
54  }
+
55 
+
56  //! Whole constructor
+
57  ParamConstraint(bool constrainType, DATA_TYPE requiredType, const std::initializer_list<std::string>& defaultValue, bool required, const std::initializer_list<std::string>& incompatibleParameters)
+
58  :
+ + + +
62  required{ required },
+ +
64  {
+
65  return;
+
66  }
+
67 
+
68  //! Should this parameter be forced to be of a certain type?
+
69  //! Remember to set `constrainTo` to the wanted type
+
70  bool constrainType = false;
+
71 
+
72  //! Constrain the parameter to this value. Requires `constrainType` to be set to true.
+ +
74 
+
75  //! The default value for this parameter.
+
76  //! Gets applied if this parameter was not given.
+
77  //! Think of this like a list of parameters. Like {"--width", "800"}
+
78  std::vector<std::string> defaultValue;
+
79 
+
80  //! If set to true, and no default value set,
+
81  //! an error will be produced if this parameter is not supplied by the user.
+
82  bool required = false;
+
83 
+
84  //! Parameters that are incompatible with this parameter
+
85  std::vector<std::string> incompatibleParameters;
+
86 
+
87  private:
+
88  //! The parameter this constraint is for.
+
89  //! This value is automatically set by Hazelnupp.
+
90  std::string key;
+
91 
+
92  friend class CmdArgsInterface;
+
93  };
+
94 }
- + +
static ParamConstraint Require(const std::initializer_list< std::string > &defaultValue={}, bool required=true)
Constructs a require constraint.
-
The main class to interface with.
+
The main class to interface with.
+
static ParamConstraint Incompatibility(const std::string &incompatibleParameters)
Constructs an incompatibility constraint.
+
static ParamConstraint Incompatibility(const std::initializer_list< std::string > &incompatibleParameters)
Constructs an incompatibility constraint.
+
ParamConstraint(bool constrainType, DATA_TYPE requiredType, const std::initializer_list< std::string > &defaultValue, bool required, const std::initializer_list< std::string > &incompatibleParameters)
Whole constructor.
-
DATA_TYPE requiredType
Constrain the parameter to this value. Requires constrainType to be set to true.
+
DATA_TYPE requiredType
Constrain the parameter to this value. Requires constrainType to be set to true.
-
bool constrainType
Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
+
bool constrainType
Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
ParamConstraint()=default
Empty constructor.
-
bool required
If set to true, and no default value set, an error will be produced if this parameter is not supplied...
+
std::vector< std::string > incompatibleParameters
Parameters that are incompatible with this parameter.
+
bool required
If set to true, and no default value set, an error will be produced if this parameter is not supplied...
static ParamConstraint TypeSafety(DATA_TYPE requiredType, bool constrainType=true)
Constructs a type-safety constraint.
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:8
-
std::vector< std::string > defaultValue
The default value for this parameter.
-
static ParamConstraint Require(const std::vector< std::string > &defaultValue={}, bool required=true)
Constructs a require constraint.
-
ParamConstraint(bool constrainType, DATA_TYPE requiredType, const std::vector< std::string > &defaultValue, bool required)
Whole constructor.
+
std::vector< std::string > defaultValue
The default value for this parameter.
diff --git a/docs/Parameter_8cpp.html b/docs/Parameter_8cpp.html index 0f1f582..6f99d7e 100644 --- a/docs/Parameter_8cpp.html +++ b/docs/Parameter_8cpp.html @@ -98,7 +98,7 @@ Include dependency graph for Parameter.cpp: diff --git a/docs/Parameter_8cpp_source.html b/docs/Parameter_8cpp_source.html index e292630..8cd13db 100644 --- a/docs/Parameter_8cpp_source.html +++ b/docs/Parameter_8cpp_source.html @@ -108,7 +108,7 @@ $(function() {
28  return value;
29 }
- +
const Value * GetValue() const
Will return the value of this parameter.
Definition: Parameter.cpp:26
const std::string & Key() const
Will return the key of this parameter.
Definition: Parameter.cpp:21
@@ -116,7 +116,7 @@ $(function() { diff --git a/docs/Parameter_8h.html b/docs/Parameter_8h.html index c3c696e..f6479e5 100644 --- a/docs/Parameter_8h.html +++ b/docs/Parameter_8h.html @@ -124,7 +124,7 @@ Namespaces diff --git a/docs/Parameter_8h_source.html b/docs/Parameter_8h_source.html index ba70fb8..5cea65a 100644 --- a/docs/Parameter_8h_source.html +++ b/docs/Parameter_8h_source.html @@ -108,7 +108,7 @@ $(function() {
28  };
29 }
- +
Abstract class for values.
Definition: Value.h:10
@@ -119,7 +119,7 @@ $(function() { diff --git a/docs/Placeholders_8h.html b/docs/Placeholders_8h.html index 8cd5562..ceb7b7f 100644 --- a/docs/Placeholders_8h.html +++ b/docs/Placeholders_8h.html @@ -119,7 +119,7 @@ Variables diff --git a/docs/Placeholders_8h_source.html b/docs/Placeholders_8h_source.html index 5636f6c..a8812ad 100644 --- a/docs/Placeholders_8h_source.html +++ b/docs/Placeholders_8h_source.html @@ -90,11 +90,11 @@ $(function() {
10  }
11 }
- +
static const std::string g_emptyString
The only purpose of this is to provide the ability to return an empty string as an error for std::str...
Definition: Placeholders.h:9
diff --git a/docs/Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html b/docs/Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html index 835a1fb..31bfa75 100644 --- a/docs/Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html +++ b/docs/Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html @@ -77,7 +77,7 @@ $(function() { diff --git a/docs/StringTools_8cpp.html b/docs/StringTools_8cpp.html index 483a706..704217c 100644 --- a/docs/StringTools_8cpp.html +++ b/docs/StringTools_8cpp.html @@ -97,7 +97,7 @@ Include dependency graph for StringTools.cpp: diff --git a/docs/StringTools_8cpp_source.html b/docs/StringTools_8cpp_source.html index 77398f5..8004039 100644 --- a/docs/StringTools_8cpp_source.html +++ b/docs/StringTools_8cpp_source.html @@ -265,7 +265,7 @@ $(function() {
185  return ss.str();
186 }
- +
static bool Contains(const std::string &str, const char c)
Will return wether or not a given char is in a string.
Definition: StringTools.cpp:5
static std::string ToLower(const std::string &str)
Will make a string all lower-case.
static std::string Replace(const std::string &str, const char find, const std::string &subst)
Will replace a part of a string with another string.
Definition: StringTools.cpp:14
@@ -275,7 +275,7 @@ $(function() { diff --git a/docs/StringTools_8h.html b/docs/StringTools_8h.html index 1e80dac..97941f8 100644 --- a/docs/StringTools_8h.html +++ b/docs/StringTools_8h.html @@ -126,7 +126,7 @@ Namespaces diff --git a/docs/StringTools_8h_source.html b/docs/StringTools_8h_source.html index 9af49e8..ef0eba9 100644 --- a/docs/StringTools_8h_source.html +++ b/docs/StringTools_8h_source.html @@ -123,7 +123,7 @@ $(function() {
43 }
44 
- +
static bool Contains(const std::string &str, const char c)
Will return wether or not a given char is in a string.
Definition: StringTools.cpp:5
static std::string ToLower(const std::string &str)
Will make a string all lower-case.
Internal helper class.
Definition: StringTools.h:13
@@ -133,7 +133,7 @@ $(function() {
static bool IsNumeric(const std::string &str, const bool allowDecimalPoint=false)
Will return true if the given string consists only of digits (including signage)
Definition: StringTools.cpp:56
diff --git a/docs/StringValue_8cpp.html b/docs/StringValue_8cpp.html index 89bb8c9..bde395a 100644 --- a/docs/StringValue_8cpp.html +++ b/docs/StringValue_8cpp.html @@ -103,7 +103,7 @@ Include dependency graph for StringValue.cpp: diff --git a/docs/StringValue_8cpp_source.html b/docs/StringValue_8cpp_source.html index ec50099..55a29de 100644 --- a/docs/StringValue_8cpp_source.html +++ b/docs/StringValue_8cpp_source.html @@ -147,7 +147,7 @@ $(function() {
67 }
- +
int GetInt32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:44
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: StringValue.cpp:20
StringValue(const std::string &value)
Definition: StringValue.cpp:7
@@ -165,7 +165,7 @@ $(function() {
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
diff --git a/docs/StringValue_8h.html b/docs/StringValue_8h.html index 73c27d2..ab48635 100644 --- a/docs/StringValue_8h.html +++ b/docs/StringValue_8h.html @@ -123,7 +123,7 @@ Namespaces diff --git a/docs/StringValue_8h_source.html b/docs/StringValue_8h_source.html index 87093e4..df058a6 100644 --- a/docs/StringValue_8h_source.html +++ b/docs/StringValue_8h_source.html @@ -124,7 +124,7 @@ $(function() {
44  };
45 }
- +
int GetInt32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:44
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: StringValue.cpp:20
StringValue(const std::string &value)
Definition: StringValue.cpp:7
@@ -141,7 +141,7 @@ $(function() { diff --git a/docs/Value_8cpp.html b/docs/Value_8cpp.html index 7cd94ed..8874cb2 100644 --- a/docs/Value_8cpp.html +++ b/docs/Value_8cpp.html @@ -97,7 +97,7 @@ Include dependency graph for Value.cpp: diff --git a/docs/Value_8cpp_source.html b/docs/Value_8cpp_source.html index 8cddbd0..b163d91 100644 --- a/docs/Value_8cpp_source.html +++ b/docs/Value_8cpp_source.html @@ -94,7 +94,7 @@ $(function() {
14  return type;
15 }
- +
Value(DATA_TYPE type)
Definition: Value.cpp:5
DATA_TYPE GetDataType() const
Will return the data type of this value.
Definition: Value.cpp:12
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:8
@@ -102,7 +102,7 @@ $(function() { diff --git a/docs/Value_8h.html b/docs/Value_8h.html index 97461e5..6287b61 100644 --- a/docs/Value_8h.html +++ b/docs/Value_8h.html @@ -136,7 +136,7 @@ Namespaces diff --git a/docs/Value_8h_source.html b/docs/Value_8h_source.html index 2a39fd1..cb69dae 100644 --- a/docs/Value_8h_source.html +++ b/docs/Value_8h_source.html @@ -129,7 +129,7 @@ $(function() {
49  };
50 }
- +
virtual double GetFloat32() const =0
Will attempt to return the floating-point data (double)
Abstract class for values.
Definition: Value.h:10
@@ -148,7 +148,7 @@ $(function() {
virtual long double GetFloat64() const =0
Will attempt to return the floating-point data (long double)
diff --git a/docs/Version_8h.html b/docs/Version_8h.html new file mode 100644 index 0000000..88eb5c0 --- /dev/null +++ b/docs/Version_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Version.h File Reference + + + + + + + + + + + +
+
+

Namespaces

+ + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+ + + + + + + + + +
+
+ + +
+ +
+ + + +
+ +
+
Version.h File Reference
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Macros

#define HAZELNUPP_VERSION   (1.1)
 
+

Macro Definition Documentation

+ +

◆ HAZELNUPP_VERSION

+ +
+
+ + + + +
#define HAZELNUPP_VERSION   (1.1)
+
+ +

Definition at line 2 of file Version.h.

+ +
+
+
+ + + + diff --git a/docs/Version_8h__dep__incl.map b/docs/Version_8h__dep__incl.map new file mode 100644 index 0000000..ec3789b --- /dev/null +++ b/docs/Version_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/Version_8h__dep__incl.md5 b/docs/Version_8h__dep__incl.md5 new file mode 100644 index 0000000..37e3bcb --- /dev/null +++ b/docs/Version_8h__dep__incl.md5 @@ -0,0 +1 @@ +92ebb13d9fcb4c4be1ddcf0283b48ade \ No newline at end of file diff --git a/docs/Version_8h__dep__incl.png b/docs/Version_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..f14d5a23a96d20aa556f40d17826a7ba28cc8175 GIT binary patch literal 8372 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 O5O)>s%NNO7Jo-NZW-_n< literal 0 HcmV?d00001 diff --git a/docs/Version_8h_source.html b/docs/Version_8h_source.html new file mode 100644 index 0000000..ed9aadc --- /dev/null +++ b/docs/Version_8h_source.html @@ -0,0 +1,91 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Version.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Version.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #define HAZELNUPP_VERSION (1.1)
+
+ + + + diff --git a/docs/VoidValue_8cpp.html b/docs/VoidValue_8cpp.html index eb60109..b08eaba 100644 --- a/docs/VoidValue_8cpp.html +++ b/docs/VoidValue_8cpp.html @@ -102,7 +102,7 @@ Include dependency graph for VoidValue.cpp: diff --git a/docs/VoidValue_8cpp_source.html b/docs/VoidValue_8cpp_source.html index 782f759..ff2e019 100644 --- a/docs/VoidValue_8cpp_source.html +++ b/docs/VoidValue_8cpp_source.html @@ -134,7 +134,7 @@ $(function() {
54 }
- +
long long int GetInt64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:25
long double GetFloat64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:35
@@ -151,7 +151,7 @@ $(function() {
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
diff --git a/docs/VoidValue_8h.html b/docs/VoidValue_8h.html index 37b30ff..9782ef7 100644 --- a/docs/VoidValue_8h.html +++ b/docs/VoidValue_8h.html @@ -122,7 +122,7 @@ Namespaces diff --git a/docs/VoidValue_8h_source.html b/docs/VoidValue_8h_source.html index 7c95c5e..7f8c44b 100644 --- a/docs/VoidValue_8h_source.html +++ b/docs/VoidValue_8h_source.html @@ -115,7 +115,7 @@ $(function() {
35  };
36 }
- +
long long int GetInt64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:25
~VoidValue() override
Definition: VoidValue.h:12
long double GetFloat64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:35
@@ -131,7 +131,7 @@ $(function() { diff --git a/docs/annotated.html b/docs/annotated.html index f636bfa..b160b04 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -82,24 +82,25 @@ $(function() {  CCmdArgsInterfaceThe main class to interface with  CFloatValueSpecializations for floating point values (uses long double)  CHazelnuppConstraintExceptionGets thrown something bad happens because of parameter constraints - CHazelnuppConstraintMissingValueGets thrown when a parameter constrained to be required is not provided, and has no default value set - CHazelnuppConstraintTypeMissmatchGets thrown when a parameter is of a type that does not match the required type, and is not convertible to it - CHazelnuppExceptionGeneric hazelnupp exception - CHazelnuppInvalidKeyExceptionGets thrown when an non-existent key gets dereferenced - CHazelnuppValueNotConvertibleExceptionGets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not convertible - CIntValueSpecializations for integer values (uses long long int) - CListValueSpecializations for list values (uses std::vector<Value*>) - CParamConstraint - CParameter - CStringValueSpecializations for string values (uses std::string) - CValueAbstract class for values - CVoidValueSpecializations for void values + CHazelnuppConstraintIncompatibleParametersGets thrown when a parameter constrained to be incompatible with other parameters gets supplied alongside at least one of those incompatible ones + CHazelnuppConstraintMissingValueGets thrown when a parameter constrained to be required is not provided, and has no default value set + CHazelnuppConstraintTypeMissmatchGets thrown when a parameter is of a type that does not match the required type, and is not convertible to it + CHazelnuppExceptionGeneric hazelnupp exception + CHazelnuppInvalidKeyExceptionGets thrown when an non-existent key gets dereferenced + CHazelnuppValueNotConvertibleExceptionGets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not convertible + CIntValueSpecializations for integer values (uses long long int) + CListValueSpecializations for list values (uses std::vector<Value*>) + CParamConstraint + CParameter + CStringValueSpecializations for string values (uses std::string) + CValueAbstract class for values + CVoidValueSpecializations for void values diff --git a/docs/classHazelnp_1_1CmdArgsInterface-members.html b/docs/classHazelnp_1_1CmdArgsInterface-members.html index c45ece5..d81f960 100644 --- a/docs/classHazelnp_1_1CmdArgsInterface-members.html +++ b/docs/classHazelnp_1_1CmdArgsInterface-members.html @@ -112,7 +112,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1CmdArgsInterface.html b/docs/classHazelnp_1_1CmdArgsInterface.html index 68ba37c..d3025f7 100644 --- a/docs/classHazelnp_1_1CmdArgsInterface.html +++ b/docs/classHazelnp_1_1CmdArgsInterface.html @@ -175,7 +175,7 @@ Public Member Functions

Detailed Description

The main class to interface with.

-

Definition at line 11 of file CmdArgsInterface.h.

+

Definition at line 13 of file CmdArgsInterface.h.

Constructor & Destructor Documentation

◆ CmdArgsInterface() [1/2]

@@ -281,11 +281,11 @@ Public Member Functions


IMPORTANT: This parameter is the abbreviation! Not the long form!

-

Definition at line 586 of file CmdArgsInterface.cpp.

-
587 {
-
588  parameterAbreviations.erase(abbrevation);
-
589  return;
-
590 }
+

Definition at line 632 of file CmdArgsInterface.cpp.

+
633 {
+
634  parameterAbreviations.erase(abbrevation);
+
635  return;
+
636 }
@@ -306,11 +306,11 @@ Public Member Functions

Will delete all abbreviations.

-

Definition at line 592 of file CmdArgsInterface.cpp.

-
593 {
-
594  parameterAbreviations.clear();
-
595  return;
-
596 }
+

Definition at line 638 of file CmdArgsInterface.cpp.

+
639 {
+
640  parameterAbreviations.clear();
+
641  return;
+
642 }
@@ -332,11 +332,11 @@ Public Member Functions

Will the constraint of a specific parameter.

-

Definition at line 547 of file CmdArgsInterface.cpp.

-
548 {
-
549  parameterConstraints.erase(parameter);
-
550  return;
-
551 }
+

Definition at line 593 of file CmdArgsInterface.cpp.

+
594 {
+
595  parameterConstraints.erase(parameter);
+
596  return;
+
597 }
@@ -357,11 +357,11 @@ Public Member Functions

Will delete all constraints.

-

Definition at line 605 of file CmdArgsInterface.cpp.

-
606 {
-
607  parameterConstraints.clear();
-
608  return;
-
609 }
+

Definition at line 651 of file CmdArgsInterface.cpp.

+
652 {
+
653  parameterConstraints.clear();
+
654  return;
+
655 }
@@ -383,12 +383,12 @@ Public Member Functions

Will delete the description of a parameter if it exists.

-

Definition at line 378 of file CmdArgsInterface.cpp.

-
379 {
-
380  // This will just do nothing if the entry does not exist
-
381  parameterDescriptions.erase(parameter);
-
382  return;
-
383 }
+

Definition at line 412 of file CmdArgsInterface.cpp.

+
413 {
+
414  // This will just do nothing if the entry does not exist
+
415  parameterDescriptions.erase(parameter);
+
416  return;
+
417 }
@@ -409,11 +409,11 @@ Public Member Functions

Will delete all parameter descriptions.

-

Definition at line 385 of file CmdArgsInterface.cpp.

-
386 {
-
387  parameterDescriptions.clear();
-
388  return;
-
389 }
+

Definition at line 419 of file CmdArgsInterface.cpp.

+
420 {
+
421  parameterDescriptions.clear();
+
422  return;
+
423 }
@@ -434,119 +434,119 @@ Public Member Functions

Will generate a text-based documentation suited to show the user, for example on –help.

-

Definition at line 391 of file CmdArgsInterface.cpp.

-
392 {
-
393  std::stringstream ss;
-
394 
-
395  // Add brief, if available
-
396  if (briefDescription.length() > 0)
-
397  ss << briefDescription << std::endl;
-
398 
-
399  // Collect parameter information
-
400  struct ParamDocEntry
-
401  {
-
402  std::string abbreviation;
-
403  std::string description;
-
404  std::string type;
-
405  bool required = false;
-
406  bool typeIsForced = false;
-
407  std::string defaultVal;
-
408  };
-
409  std::unordered_map<std::string, ParamDocEntry> paramInfos;
-
410 
-
411  // Collect descriptions
-
412  for (const auto& it : parameterDescriptions)
-
413  {
-
414  // Do we already have that param in the paramInfo set?
-
415  if (paramInfos.find(it.first) == paramInfos.end())
-
416  // No? Create it.
-
417  paramInfos[it.first] = ParamDocEntry();
-
418 
-
419  paramInfos[it.first].description = it.second;
-
420  }
-
421 
-
422  // Collect abbreviations
-
423  // first value is abbreviation, second is long form
-
424  for (const auto& it : parameterAbreviations)
-
425  {
-
426  // Do we already have that param in the paramInfo set?
-
427  if (paramInfos.find(it.second) == paramInfos.end())
-
428  // No? Create it.
-
429  paramInfos[it.second] = ParamDocEntry();
-
430 
-
431  paramInfos[it.second].abbreviation = it.first;
-
432  }
-
433 
-
434  // Collect constraints
-
435  for (const auto& it : parameterConstraints)
-
436  {
-
437  // Do we already have that param in the paramInfo set?
-
438  if (paramInfos.find(it.first) == paramInfos.end())
-
439  // No? Create it.
-
440  paramInfos[it.first] = ParamDocEntry();
-
441 
-
442  ParamDocEntry& cached = paramInfos[it.first];
-
443  cached.required = it.second.required;
-
444  cached.typeIsForced = it.second.constrainType;
-
445  cached.type = DataTypeToString(it.second.requiredType);
-
446 
-
447  std::stringstream defaultValueSs;
-
448  for (const std::string& s : it.second.defaultValue)
-
449  {
-
450  defaultValueSs << '\'' << s << '\'';
-
451 
-
452  // Add a space if we are not at the last entry
-
453  if ((void*)&s != (void*)&it.second.defaultValue.back())
-
454  defaultValueSs << " ";
-
455  }
-
456  cached.defaultVal = defaultValueSs.str();
-
457  }
-
458 
-
459  // Now generate the documentatino body
-
460  if (paramInfos.size() > 0)
-
461  {
-
462  ss << std::endl
-
463  << "==== AVAILABLE PARAMETERS ===="
-
464  << std::endl << std::endl;
-
465 
-
466  std::size_t counter = 0;
-
467  for (const auto& it : paramInfos)
-
468  {
-
469  const ParamDocEntry& pde = it.second;
-
470 
-
471  // Put name
-
472  ss << it.first << " ";
-
473 
-
474  // Put abbreviation
-
475  if (pde.abbreviation.length() > 0)
-
476  ss << pde.abbreviation << " ";
-
477 
-
478  // Put type
-
479  if (pde.typeIsForced)
-
480  ss << pde.type << " ";
-
481 
-
482  // Put default value
-
483  if (pde.defaultVal.length() > 0)
-
484  ss << "default=[" << pde.defaultVal << "] ";
+

Definition at line 425 of file CmdArgsInterface.cpp.

+
426 {
+
427  std::stringstream ss;
+
428 
+
429  // Add brief, if available
+
430  if (briefDescription.length() > 0)
+
431  ss << briefDescription << std::endl;
+
432 
+
433  // Collect parameter information
+
434  struct ParamDocEntry
+
435  {
+
436  std::string abbreviation;
+
437  std::string description;
+
438  std::string type;
+
439  bool required = false;
+
440  bool typeIsForced = false;
+
441  std::string defaultVal;
+
442  };
+
443  std::unordered_map<std::string, ParamDocEntry> paramInfos;
+
444 
+
445  // Collect descriptions
+
446  for (const auto& it : parameterDescriptions)
+
447  {
+
448  // Do we already have that param in the paramInfo set?
+
449  if (paramInfos.find(it.first) == paramInfos.end())
+
450  // No? Create it.
+
451  paramInfos[it.first] = ParamDocEntry();
+
452 
+
453  paramInfos[it.first].description = it.second;
+
454  }
+
455 
+
456  // Collect abbreviations
+
457  // first value is abbreviation, second is long form
+
458  for (const auto& it : parameterAbreviations)
+
459  {
+
460  // Do we already have that param in the paramInfo set?
+
461  if (paramInfos.find(it.second) == paramInfos.end())
+
462  // No? Create it.
+
463  paramInfos[it.second] = ParamDocEntry();
+
464 
+
465  paramInfos[it.second].abbreviation = it.first;
+
466  }
+
467 
+
468  // Collect constraints
+
469  for (const auto& it : parameterConstraints)
+
470  {
+
471  // Do we already have that param in the paramInfo set?
+
472  if (paramInfos.find(it.first) == paramInfos.end())
+
473  // No? Create it.
+
474  paramInfos[it.first] = ParamDocEntry();
+
475 
+
476  ParamDocEntry& cached = paramInfos[it.first];
+
477  cached.required = it.second.required;
+
478  cached.typeIsForced = it.second.constrainType;
+
479  cached.type = DataTypeToString(it.second.requiredType);
+
480 
+
481  std::stringstream defaultValueSs;
+
482  for (const std::string& s : it.second.defaultValue)
+
483  {
+
484  defaultValueSs << '\'' << s << '\'';
485 
-
486  // Put required tag, but only if no default value
-
487  if ((pde.required) && (pde.defaultVal.length() == 0))
-
488  ss << "[[REQUIRED]] ";
-
489 
-
490  // Put brief description
-
491  if (pde.description.length() > 0)
-
492  ss << pde.description;
-
493 
-
494  // Omit linebreaks when we're on the last element
-
495  if (counter < paramInfos.size()-1)
-
496  ss << std::endl << std::endl;
-
497 
-
498  counter++;
-
499  }
-
500  }
-
501 
-
502  return ss.str();
-
503 }
+
486  // Add a space if we are not at the last entry
+
487  if ((void*)&s != (void*)&it.second.defaultValue.back())
+
488  defaultValueSs << " ";
+
489  }
+
490  cached.defaultVal = defaultValueSs.str();
+
491  }
+
492 
+
493  // Now generate the documentatino body
+
494  if (paramInfos.size() > 0)
+
495  {
+
496  ss << std::endl
+
497  << "==== AVAILABLE PARAMETERS ===="
+
498  << std::endl << std::endl;
+
499 
+
500  std::size_t counter = 0;
+
501  for (const auto& it : paramInfos)
+
502  {
+
503  const ParamDocEntry& pde = it.second;
+
504 
+
505  // Put name
+
506  ss << it.first << " ";
+
507 
+
508  // Put abbreviation
+
509  if (pde.abbreviation.length() > 0)
+
510  ss << pde.abbreviation << " ";
+
511 
+
512  // Put type
+
513  if (pde.typeIsForced)
+
514  ss << pde.type << " ";
+
515 
+
516  // Put default value
+
517  if (pde.defaultVal.length() > 0)
+
518  ss << "default=[" << pde.defaultVal << "] ";
+
519 
+
520  // Put required tag, but only if no default value
+
521  if ((pde.required) && (pde.defaultVal.length() == 0))
+
522  ss << "[[REQUIRED]] ";
+
523 
+
524  // Put brief description
+
525  if (pde.description.length() > 0)
+
526  ss << pde.description;
+
527 
+
528  // Omit linebreaks when we're on the last element
+
529  if (counter < paramInfos.size()-1)
+
530  ss << std::endl << std::endl;
+
531 
+
532  counter++;
+
533  }
+
534  }
+
535 
+
536  return ss.str();
+
537 }
@@ -569,13 +569,13 @@ Public Member Functions

Will return the long form of an abbreviation (like –force for -f)
Returns "" if no match is found.

-

Definition at line 573 of file CmdArgsInterface.cpp.

-
574 {
-
575  if (!HasAbbreviation(abbrev))
- -
577 
-
578  return parameterAbreviations.find(abbrev)->second;
-
579 }
+

Definition at line 619 of file CmdArgsInterface.cpp.

+
620 {
+
621  if (!HasAbbreviation(abbrev))
+ +
623 
+
624  return parameterAbreviations.find(abbrev)->second;
+
625 }
@@ -596,10 +596,10 @@ Public Member Functions

Returns the brief description of the application to be automatically added to the documentation.

-

Definition at line 351 of file CmdArgsInterface.cpp.

-
352 {
-
353  return briefDescription;
-
354 }
+

Definition at line 385 of file CmdArgsInterface.cpp.

+
386 {
+
387  return briefDescription;
+
388 }
@@ -620,10 +620,10 @@ Public Member Functions

Retruns whether the CmdArgsInterface should automatically catch the –help parameter, print the parameter documentation to stdout, and exit or not.

-

Definition at line 340 of file CmdArgsInterface.cpp.

-
341 {
-
342  return catchHelp;
-
343 }
+

Definition at line 374 of file CmdArgsInterface.cpp.

+
375 {
+
376  return catchHelp;
+
377 }
@@ -645,10 +645,10 @@ Public Member Functions

Will return the constraint information for a specific parameter.

-

Definition at line 542 of file CmdArgsInterface.cpp.

-
543 {
-
544  return parameterConstraints.find(parameter)->second;
-
545 }
+

Definition at line 588 of file CmdArgsInterface.cpp.

+
589 {
+
590  return parameterConstraints.find(parameter)->second;
+
591 }
@@ -669,10 +669,10 @@ Public Member Functions

Gets whether the application crashes on an exception whilst parsing, and prints to stderr.

-

Definition at line 329 of file CmdArgsInterface.cpp.

-
330 {
-
331  return crashOnFail;
-
332 }
+

Definition at line 363 of file CmdArgsInterface.cpp.

+
364 {
+
365  return crashOnFail;
+
366 }
@@ -696,16 +696,16 @@ Public Member Functions


Empty string if it does not exist.

-

Definition at line 362 of file CmdArgsInterface.cpp.

-
363 {
-
364  // Do we already have a description for this parameter?
-
365  if (!HasDescription(parameter))
-
366  // No? Then return ""
- -
368 
-
369  // We do? Then return it
-
370  return parameterDescriptions.find(parameter)->second;
-
371 }
+

Definition at line 396 of file CmdArgsInterface.cpp.

+
397 {
+
398  // Do we already have a description for this parameter?
+
399  if (!HasDescription(parameter))
+
400  // No? Then return ""
+ +
402 
+
403  // We do? Then return it
+
404  return parameterDescriptions.find(parameter)->second;
+
405 }
@@ -726,10 +726,10 @@ Public Member Functions

Will return argv[0], the name of the executable.

-

Definition at line 553 of file CmdArgsInterface.cpp.

-
554 {
-
555  return executableName;
-
556 }
+

Definition at line 599 of file CmdArgsInterface.cpp.

+
600 {
+
601  return executableName;
+
602 }
@@ -751,10 +751,10 @@ Public Member Functions

Will check wether or not an abbreviation is registered.

-

Definition at line 581 of file CmdArgsInterface.cpp.

-
582 {
-
583  return parameterAbreviations.find(abbrev) != parameterAbreviations.end();
-
584 }
+

Definition at line 627 of file CmdArgsInterface.cpp.

+
628 {
+
629  return parameterAbreviations.find(abbrev) != parameterAbreviations.end();
+
630 }
@@ -776,10 +776,10 @@ Public Member Functions

Returns whether or not a given parameter has a registered description.

-

Definition at line 373 of file CmdArgsInterface.cpp.

-
374 {
-
375  return parameterDescriptions.find(parameter) != parameterDescriptions.end();
-
376 }
+

Definition at line 407 of file CmdArgsInterface.cpp.

+
408 {
+
409  return parameterDescriptions.find(parameter) != parameterDescriptions.end();
+
410 }
@@ -801,10 +801,10 @@ Public Member Functions

Will check wether a parameter exists given a key, or not.

-

Definition at line 165 of file CmdArgsInterface.cpp.

-
166 {
-
167  return parameters.find(key) != parameters.end();
-
168 }
+

Definition at line 199 of file CmdArgsInterface.cpp.

+
200 {
+
201  return parameters.find(key) != parameters.end();
+
202 }
@@ -826,14 +826,14 @@ Public Member Functions

Will return the value given a key.

-

Definition at line 558 of file CmdArgsInterface.cpp.

-
559 {
-
560  // Throw exception if param is unknown
-
561  if (!HasParam(key))
- -
563 
-
564  return *parameters.find(key)->second->GetValue();
-
565 }
+

Definition at line 604 of file CmdArgsInterface.cpp.

+
605 {
+
606  // Throw exception if param is unknown
+
607  if (!HasParam(key))
+ +
609 
+
610  return *parameters.find(key)->second->GetValue();
+
611 }
@@ -877,58 +877,92 @@ Public Member Functions
45 
46  executableName = std::string(rawArgs[0]);
47 
-
48  std::size_t i = 1;
-
49  while (i < rawArgs.size())
-
50  {
-
51  if ((rawArgs[i].length() > 2) && (rawArgs[i].substr(0, 2) == "--"))
-
52  {
-
53  Parameter* param = nullptr;
-
54  i = ParseNextParameter(i, param);
-
55 
-
56  parameters.insert(std::pair<std::string, Parameter*>(param->Key(), param));
-
57  }
-
58  else
-
59  i++;
-
60  }
-
61 
-
62  // Apply constraints such as default values, and required parameters.
-
63  // Types have already been enforced.
-
64  // Dont apply constraints when we are just printind the param docs
-
65  if ((!catchHelp) || (!HasParam("--help")))
-
66  ApplyConstraints();
-
67  }
-
68  catch (const HazelnuppConstraintTypeMissmatch& exc)
-
69  {
-
70  if (crashOnFail)
-
71  {
-
72  std::cout << GenerateDocumentation() << std::endl << std::endl;
-
73  std::cerr << "Parameter error: " << exc.What() << std::endl;
-
74  quick_exit(-1009);
-
75  }
-
76  else
-
77  throw exc; // yeet
-
78  }
-
79  catch (const HazelnuppConstraintMissingValue& exc)
-
80  {
-
81  if (crashOnFail)
-
82  {
-
83  std::cout << GenerateDocumentation() << std::endl << std::endl;
-
84  std::cerr << "Parameter error: " << exc.What() << std::endl;
-
85  quick_exit(-1010);
-
86  }
-
87  else
-
88  throw exc; // yeet
-
89  }
-
90 
-
91  // Catch --help parameter
-
92  if ((catchHelp) && (HasParam("--help")))
-
93  {
-
94  std::cout << GenerateDocumentation() << std::endl;
-
95  quick_exit(0);
-
96  }
-
97 
-
98  return;
-
99 }
+
48  // Read and parse all parameters
+
49  std::size_t i = 1;
+
50  while (i < rawArgs.size())
+
51  {
+
52  if ((rawArgs[i].length() > 2) && (rawArgs[i].substr(0, 2) == "--"))
+
53  {
+
54  Parameter* param = nullptr;
+
55  i = ParseNextParameter(i, param);
+
56 
+
57  parameters.insert(std::pair<std::string, Parameter*>(param->Key(), param));
+
58  }
+
59  else
+
60  i++;
+
61  }
+
62 
+
63  // Apply constraints such as default values, and required parameters.
+
64  // Types have already been enforced.
+
65  // Dont apply constraints when we are just printind the param docs
+
66  if ((!catchHelp) || (!HasParam("--help")))
+
67  ApplyConstraints();
+
68  }
+ +
70  {
+
71  if (crashOnFail)
+
72  {
+
73  std::cout << GenerateDocumentation() << std::endl << std::endl;
+
74  std::cerr << "Parameter error: " << exc.What() << std::endl;
+
75  quick_exit(-1000);
+
76  }
+
77  else
+
78  throw exc; // yeet
+
79  }
+
80  catch (const HazelnuppConstraintMissingValue& exc)
+
81  {
+
82  if (crashOnFail)
+
83  {
+
84  std::cout << GenerateDocumentation() << std::endl << std::endl;
+
85  std::cerr << "Parameter error: " << exc.What() << std::endl;
+
86  quick_exit(-1001);
+
87  }
+
88  else
+
89  throw exc; // yeet
+
90  }
+
91  catch (const HazelnuppConstraintTypeMissmatch& exc)
+
92  {
+
93  if (crashOnFail)
+
94  {
+
95  std::cout << GenerateDocumentation() << std::endl << std::endl;
+
96  std::cerr << "Parameter error: " << exc.What() << std::endl;
+
97  quick_exit(-1002);
+
98  }
+
99  else
+
100  throw exc; // yeet
+
101  }
+
102  catch (const HazelnuppConstraintException& exc)
+
103  {
+
104  if (crashOnFail)
+
105  {
+
106  std::cout << GenerateDocumentation() << std::endl << std::endl;
+
107  std::cerr << "Parameter error: " << exc.What() << std::endl;
+
108  quick_exit(-1003);
+
109  }
+
110  else
+
111  throw exc; // yeet
+
112  }
+
113  catch (const HazelnuppException& exc)
+
114  {
+
115  if (crashOnFail)
+
116  {
+
117  std::cout << GenerateDocumentation() << std::endl << std::endl;
+
118  std::cerr << "Parameter error: " << exc.What() << std::endl;
+
119  quick_exit(-1004);
+
120  }
+
121  else
+
122  throw exc; // yeet
+
123  }
+
124 
+
125  // Catch --help parameter
+
126  if ((catchHelp) && (HasParam("--help")))
+
127  {
+
128  std::cout << GenerateDocumentation() << std::endl;
+
129  quick_exit(0);
+
130  }
+
131 
+
132  return;
+
133 }
@@ -960,11 +994,11 @@ Public Member Functions

Will register an abbreviation (like -f for –force)

-

Definition at line 567 of file CmdArgsInterface.cpp.

-
568 {
-
569  parameterAbreviations.insert(std::pair<std::string, std::string>(abbrev, target));
-
570  return;
-
571 }
+

Definition at line 613 of file CmdArgsInterface.cpp.

+
614 {
+
615  parameterAbreviations.insert(std::pair<std::string, std::string>(abbrev, target));
+
616  return;
+
617 }
@@ -995,14 +1029,14 @@ Public Member Functions

Will register a constraint for a parameter.

-

IMPORTANT: Any parameter can only have ONE constraint. Applying a new one will overwrite the old one! Construct the ParamConstraint struct yourself to combine Require and TypeSafety! You can also use the ParamConstraint constructor!

+

IMPORTANT: Any parameter can only have ONE constraint. Applying a new one will overwrite the old one! Construct the ParamConstraint struct yourself to combine Require, TypeSafety and Incompatibilities! You can also use the ParamConstraint constructor!

-

Definition at line 598 of file CmdArgsInterface.cpp.

-
599 {
-
600  // Magic syntax, wooo
-
601  (parameterConstraints[key] = constraint).key = key;
-
602  return;
-
603 }
+

Definition at line 644 of file CmdArgsInterface.cpp.

+
645 {
+
646  // Magic syntax, wooo
+
647  (parameterConstraints[key] = constraint).key = key;
+
648  return;
+
649 }
@@ -1036,11 +1070,11 @@ Public Member Functions


Will overwrite existing descriptions for that parameter.

-

Definition at line 356 of file CmdArgsInterface.cpp.

-
357 {
-
358  parameterDescriptions[parameter] = description;
-
359  return;
-
360 }
+

Definition at line 390 of file CmdArgsInterface.cpp.

+
391 {
+
392  parameterDescriptions[parameter] = description;
+
393  return;
+
394 }
@@ -1062,11 +1096,11 @@ Public Member Functions

Sets a brief description of the application to be automatically added to the documentation.

-

Definition at line 345 of file CmdArgsInterface.cpp.

-
346 {
-
347  briefDescription = description;
-
348  return;
-
349 }
+

Definition at line 379 of file CmdArgsInterface.cpp.

+
380 {
+
381  briefDescription = description;
+
382  return;
+
383 }
@@ -1088,11 +1122,11 @@ Public Member Functions

Sets whether the CmdArgsInterface should automatically catch the –help parameter, print the parameter documentation to stdout, and exit or not.

-

Definition at line 334 of file CmdArgsInterface.cpp.

-
335 {
-
336  this->catchHelp = catchHelp;
-
337  return;
-
338 }
+

Definition at line 368 of file CmdArgsInterface.cpp.

+
369 {
+
370  this->catchHelp = catchHelp;
+
371  return;
+
372 }
@@ -1114,11 +1148,11 @@ Public Member Functions

Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsing, or not.

-

Definition at line 611 of file CmdArgsInterface.cpp.

-
612 {
-
613  this->crashOnFail = crashOnFail;
-
614  return;
-
615 }
+

Definition at line 657 of file CmdArgsInterface.cpp.

+
658 {
+
659  this->crashOnFail = crashOnFail;
+
660  return;
+
661 }
@@ -1127,22 +1161,25 @@ Public Member Functions
  • Hazelnupp/CmdArgsInterface.cpp
  • -
    bool HasAbbreviation(const std::string &abbrev) const
    Will check wether or not an abbreviation is registered.
    +
    Gets thrown when a parameter constrained to be incompatible with other parameters gets supplied along...
    +
    bool HasAbbreviation(const std::string &abbrev) const
    Will check wether or not an abbreviation is registered.
    Gets thrown when an non-existent key gets dereferenced.
    const std::string & What() const
    Will return an error message.
    -
    bool HasParam(const std::string &key) const
    Will check wether a parameter exists given a key, or not.
    +
    Gets thrown something bad happens because of parameter constraints.
    +
    bool HasParam(const std::string &key) const
    Will check wether a parameter exists given a key, or not.
    static const std::string g_emptyString
    The only purpose of this is to provide the ability to return an empty string as an error for std::str...
    Definition: Placeholders.h:9
    -
    bool HasDescription(const std::string &parameter) const
    Returns whether or not a given parameter has a registered description.
    +
    bool HasDescription(const std::string &parameter) const
    Returns whether or not a given parameter has a registered description.
    +
    Generic hazelnupp exception.
    const std::string & Key() const
    Will return the key of this parameter.
    Definition: Parameter.cpp:21
    Gets thrown when a parameter constrained to be required is not provided, and has no default value set...
    Gets thrown when a parameter is of a type that does not match the required type, and is not convertib...
    void Parse(const int argc, const char *const *argv)
    Will parse command line arguments.
    -
    std::string GenerateDocumentation() const
    Will generate a text-based documentation suited to show the user, for example on –help.
    +
    std::string GenerateDocumentation() const
    Will generate a text-based documentation suited to show the user, for example on –help.
    static std::string DataTypeToString(DATA_TYPE type)
    Definition: DataType.h:17
    diff --git a/docs/classHazelnp_1_1FloatValue-members.html b/docs/classHazelnp_1_1FloatValue-members.html index 7fab487..a2822fa 100644 --- a/docs/classHazelnp_1_1FloatValue-members.html +++ b/docs/classHazelnp_1_1FloatValue-members.html @@ -101,7 +101,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1FloatValue.html b/docs/classHazelnp_1_1FloatValue.html index 51ab16b..8977d18 100644 --- a/docs/classHazelnp_1_1FloatValue.html +++ b/docs/classHazelnp_1_1FloatValue.html @@ -574,7 +574,7 @@ Additional Inherited Members
    Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
    diff --git a/docs/classHazelnp_1_1HazelnuppConstraintException-members.html b/docs/classHazelnp_1_1HazelnuppConstraintException-members.html index 0abd054..9d79ff1 100644 --- a/docs/classHazelnp_1_1HazelnuppConstraintException-members.html +++ b/docs/classHazelnp_1_1HazelnuppConstraintException-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1HazelnuppConstraintException.html b/docs/classHazelnp_1_1HazelnuppConstraintException.html index 8655c35..037af04 100644 --- a/docs/classHazelnp_1_1HazelnuppConstraintException.html +++ b/docs/classHazelnp_1_1HazelnuppConstraintException.html @@ -91,11 +91,12 @@ Inheritance diagram for Hazelnp::HazelnuppConstraintException:
    Inheritance graph
    - - - - - + + + + + +
    [legend]
    @@ -201,7 +202,7 @@ Additional Inherited Members diff --git a/docs/classHazelnp_1_1HazelnuppConstraintException__inherit__graph.map b/docs/classHazelnp_1_1HazelnuppConstraintException__inherit__graph.map index e549bde..dc8e7de 100644 --- a/docs/classHazelnp_1_1HazelnuppConstraintException__inherit__graph.map +++ b/docs/classHazelnp_1_1HazelnuppConstraintException__inherit__graph.map @@ -1,7 +1,8 @@ - - - - - + + + + + + diff --git a/docs/classHazelnp_1_1HazelnuppConstraintException__inherit__graph.md5 b/docs/classHazelnp_1_1HazelnuppConstraintException__inherit__graph.md5 index 2e1f6f1..abdf318 100644 --- a/docs/classHazelnp_1_1HazelnuppConstraintException__inherit__graph.md5 +++ b/docs/classHazelnp_1_1HazelnuppConstraintException__inherit__graph.md5 @@ -1 +1 @@ -6bfea744987fc602457174078cb295d2 \ No newline at end of file +17838dc81928478a02ebb9e9c8a70244 \ No newline at end of file diff --git a/docs/classHazelnp_1_1HazelnuppConstraintException__inherit__graph.png b/docs/classHazelnp_1_1HazelnuppConstraintException__inherit__graph.png index 81563bdc9819a25c9cf6f842e658d07b3e6d0330..ec7bde40f102005f924fe6736d333555c6f1f919 100644 GIT binary patch literal 18728 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 literal 14704 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 diff --git a/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters-members.html b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters-members.html new file mode 100644 index 0000000..3b79b2b --- /dev/null +++ b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters-members.html @@ -0,0 +1,100 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Leonetienne/Hazelnupp +
    +
    Simple, easy to use, command line parameter interface
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    Hazelnp::HazelnuppConstraintIncompatibleParameters Member List
    +
    + + + + + diff --git a/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters.html b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters.html new file mode 100644 index 0000000..b94b0dc --- /dev/null +++ b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters.html @@ -0,0 +1,232 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnp::HazelnuppConstraintIncompatibleParameters Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Leonetienne/Hazelnupp +
    +
    Simple, easy to use, command line parameter interface
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    Hazelnp::HazelnuppConstraintIncompatibleParameters Class Reference
    +
    +
    + +

    Gets thrown when a parameter constrained to be incompatible with other parameters gets supplied alongside at least one of those incompatible ones. + More...

    + +

    #include <HazelnuppException.h>

    +
    +Inheritance diagram for Hazelnp::HazelnuppConstraintIncompatibleParameters:
    +
    +
    Inheritance graph
    + + + + + + +
    [legend]
    +
    +Collaboration diagram for Hazelnp::HazelnuppConstraintIncompatibleParameters:
    +
    +
    Collaboration graph
    + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     HazelnuppConstraintIncompatibleParameters ()
     
     HazelnuppConstraintIncompatibleParameters (const std::string &key1, const std::string &key2)
     
    - Public Member Functions inherited from Hazelnp::HazelnuppConstraintException
     HazelnuppConstraintException ()
     
     HazelnuppConstraintException (const std::string &msg)
     
    - Public Member Functions inherited from Hazelnp::HazelnuppException
     HazelnuppException ()
     
     HazelnuppException (const std::string &msg)
     
    const std::string & What () const
     Will return an error message. More...
     
    + + + + +

    +Additional Inherited Members

    - Protected Attributes inherited from Hazelnp::HazelnuppException
    std::string message
     
    +

    Detailed Description

    +

    Gets thrown when a parameter constrained to be incompatible with other parameters gets supplied alongside at least one of those incompatible ones.

    + +

    Definition at line 101 of file HazelnuppException.h.

    +

    Constructor & Destructor Documentation

    + +

    ◆ HazelnuppConstraintIncompatibleParameters() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    Hazelnp::HazelnuppConstraintIncompatibleParameters::HazelnuppConstraintIncompatibleParameters ()
    +
    +inline
    +
    + +

    Definition at line 104 of file HazelnuppException.h.

    + +
    +
    + +

    ◆ HazelnuppConstraintIncompatibleParameters() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Hazelnp::HazelnuppConstraintIncompatibleParameters::HazelnuppConstraintIncompatibleParameters (const std::string & key1,
    const std::string & key2 
    )
    +
    +inline
    +
    + +

    Definition at line 105 of file HazelnuppException.h.

    +
    106  {
    +
    107  // Generate descriptive error message
    +
    108  std::stringstream ss;
    +
    109  ss << "Parameter \"" << key1 << "\" is NOT compatible with parameter \"" << key2 << "\"!";
    +
    110 
    +
    111  message = ss.str();
    +
    112  return;
    +
    113  };
    +
    +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + + + diff --git a/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__coll__graph.map b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__coll__graph.map new file mode 100644 index 0000000..4595aa7 --- /dev/null +++ b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__coll__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__coll__graph.md5 b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__coll__graph.md5 new file mode 100644 index 0000000..d63b369 --- /dev/null +++ b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__coll__graph.md5 @@ -0,0 +1 @@ +ff792383829de5757a3c68b58f7a2cf3 \ No newline at end of file diff --git a/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__coll__graph.png b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..464b7759096a266ecbd748cc5260c2f7feb59044 GIT binary patch literal 16236 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 + + + + + diff --git a/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__inherit__graph.md5 b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__inherit__graph.md5 new file mode 100644 index 0000000..e5f1c0e --- /dev/null +++ b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__inherit__graph.md5 @@ -0,0 +1 @@ +dc39f190a0e77f6af97e4154d9f9a859 \ No newline at end of file diff --git a/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__inherit__graph.png b/docs/classHazelnp_1_1HazelnuppConstraintIncompatibleParameters__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..defcd6e88653c582b558875c0b2f0c12cc5bcb46 GIT binary patch literal 10430 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 R2L}=n52O{P3MGtQ{10*T)z|<4 literal 0 HcmV?d00001 diff --git a/docs/classHazelnp_1_1HazelnuppConstraintMissingValue-members.html b/docs/classHazelnp_1_1HazelnuppConstraintMissingValue-members.html index ab472b6..8da631e 100644 --- a/docs/classHazelnp_1_1HazelnuppConstraintMissingValue-members.html +++ b/docs/classHazelnp_1_1HazelnuppConstraintMissingValue-members.html @@ -92,7 +92,7 @@ $(function() {
    diff --git a/docs/classHazelnp_1_1HazelnuppConstraintMissingValue.html b/docs/classHazelnp_1_1HazelnuppConstraintMissingValue.html index 4215a19..566f7d6 100644 --- a/docs/classHazelnp_1_1HazelnuppConstraintMissingValue.html +++ b/docs/classHazelnp_1_1HazelnuppConstraintMissingValue.html @@ -228,7 +228,7 @@ Additional Inherited Members diff --git a/docs/classHazelnp_1_1HazelnuppConstraintTypeMissmatch-members.html b/docs/classHazelnp_1_1HazelnuppConstraintTypeMissmatch-members.html index 5a149a8..691acca 100644 --- a/docs/classHazelnp_1_1HazelnuppConstraintTypeMissmatch-members.html +++ b/docs/classHazelnp_1_1HazelnuppConstraintTypeMissmatch-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html b/docs/classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html index c341c46..9a33e23 100644 --- a/docs/classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html +++ b/docs/classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html @@ -273,7 +273,7 @@ Additional Inherited Members
    static std::string DataTypeToString(DATA_TYPE type)
    Definition: DataType.h:17
    diff --git a/docs/classHazelnp_1_1HazelnuppException-members.html b/docs/classHazelnp_1_1HazelnuppException-members.html index ea6c835..55574d7 100644 --- a/docs/classHazelnp_1_1HazelnuppException-members.html +++ b/docs/classHazelnp_1_1HazelnuppException-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1HazelnuppException.html b/docs/classHazelnp_1_1HazelnuppException.html index 252229b..caf92d2 100644 --- a/docs/classHazelnp_1_1HazelnuppException.html +++ b/docs/classHazelnp_1_1HazelnuppException.html @@ -92,13 +92,14 @@ Inheritance diagram for Hazelnp::HazelnuppException:
    Inheritance graph
    - - - - - - - + + + + + + + +
    [legend]
    @@ -255,7 +256,7 @@ Protected Attributes diff --git a/docs/classHazelnp_1_1HazelnuppException__inherit__graph.map b/docs/classHazelnp_1_1HazelnuppException__inherit__graph.map index a6ea366..b911a6d 100644 --- a/docs/classHazelnp_1_1HazelnuppException__inherit__graph.map +++ b/docs/classHazelnp_1_1HazelnuppException__inherit__graph.map @@ -1,9 +1,10 @@ - - - - - - - + + + + + + + + diff --git a/docs/classHazelnp_1_1HazelnuppException__inherit__graph.md5 b/docs/classHazelnp_1_1HazelnuppException__inherit__graph.md5 index 62507df..f8cb4b9 100644 --- a/docs/classHazelnp_1_1HazelnuppException__inherit__graph.md5 +++ b/docs/classHazelnp_1_1HazelnuppException__inherit__graph.md5 @@ -1 +1 @@ -00b4353ac48aa1c3c667f124b7f43920 \ No newline at end of file +c69be8783237f5d99a8ac4955ca40a9d \ No newline at end of file diff --git a/docs/classHazelnp_1_1HazelnuppException__inherit__graph.png b/docs/classHazelnp_1_1HazelnuppException__inherit__graph.png index cd68df8747a8813190a38274f9a515bed2867b52..765dcfd1f3de655b1f1a03471598949b2e2eb61e 100644 GIT binary patch literal 24773 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 literal 23887 zcmd43bySw!wg-x0APRy4A}JxDfPj>e3J8LPbc2X=cbAAXC?O33N{4iZfFRu=Dc#+D z=Y!w3_dfgVJ ze}~+D7771cdi_F30Ob_<{kbAJ7zO1Him<>_8QbWk5eF4n*^|A~{&W1;9J=@4-(eT) z#JM6muM-~0{PrzIfKND9goa(>x@J)1NPccr!@KKulQNz zdV;Hu*XNqYhr6D&Z4_asUT-&?c}QlNqAU7F7c2T=9oMv%D?SNI;#?$qhsB2meTHy^cME~o1x~Bi_V|oHklt2Gz%Iu6aw!yLTm@DMj32jyik0iOTJws$>5g%?37We7@nLiOI<; z=;&#=qNBfX{u)o`Z_5AU;{@-uogMAv!2*BcdevT{!(o-@x%d8hw%v%N4|Om8`t-u@ z#l>dY>~g93;-VsUlZx%Wk?V60bOW5S{P{gG*ISs|J1U(Vl!}b~%gQ)ke4>lb&)*6t z8YwbS@5@$q8R{1n5qaJ9McAfdBue-n?{J!D(Es2PCecrdK(3nWyhl%-K0O!3W;D_D z^@Zd9beKQ!DEG4M!UX5pny$g9mgf#Vby*@s;!LWJ@mwb+ zUXzoPo0^*^h()pO9UcZpL?{|5laP?K#PP0$m6mrMa@sL5F&7HXS#l5)_`k2IsZsJ57Mu1-Slei3U^bf& z7yEO%N z_TfldEss7BX7f1PY$@)e-}4hK3n_y z+lzCS9B<#g#piK+w7 zOG}1)e0=)7o*^MP+O3h#L`AR7w#VuG%GFv>Fdi+x&A`CWm#OTTKm(gLwf}G_uiX}= ziH45u4Lm&SXmDwOf!OjW-ZSJ3@p&C$eXjfQqqp?rn?^0p=ce{3lS;*9J6gGnmoTdP z#OhVf6%!K^2~#sO_k9v*e*OA|{&{L@D#dEcz9OMlKNO~&7QTLbxGT@IKXtR9Tq2IA z=`yL~XXh%@@wew`IAX-<77qY-|md7s)i}FiQ5c z;13^Mlas0Y`ucQP2w>B8%v%atS+9dKolG1s6dYQ?E1$~*Z-rfQ!u3hE77R_d^DgUyHmSs;f41|U8s zBwx(7#ZWwY6wW?s>pncJa_thTq@-j>SXjDMP;hVrqsDpVLc{N^tzz6OQ&aEYXkNT{ zF*K;m)z#I$LFQwJ?DH2dYQKMvAMG!bm0ryI`t_^iTliu5)PPi`)U0x$K$1tCoHuXY zlr}ny;j~FAFOSa1pxYiul}_%-9YjMzdj;p4h{Mtg4lkqW?j}%#xVO9Xt9H1=;<42N4jk*bZF?)fb4yE0 zkDQNe{k;=Y9i&JL^op|nj^YWQU=bBdE$@B*{vAS>c3X5~iezHXMqQnNxw$z$x4mU3 zZJwZz(B#a_`?xsL!oot)IGz}IRHZ^g#nted+S&+q6OtGXtJjnD{!7Cp(oRJAWGn?d z42rq$-o8D*w7k5&yUXtL^(`z<>TrL57;M(f#q6qy+9Dx&7#D3x31-R_aj*XzE-%gZ}hX!Jrx24{VJT|rqHmC<3xu=3=Xdie=VDnx36>|44NyU*dxv3a>;m{QYXWmmHm(I(1n>Z&ax}?_cy6Of;^LB)fOd zTR50%#JUW_ir7^r*6w{rN5}o$S;IRq55O*^EW1%8UZESRU(_{r3 z8W(U;Q+tlrdL}~7`;|vc>byq=sSMT_o@>4%9yQM8q(m~~^k|lMeP^eBWQ5qo#RXPC zTU#4))i(%dX*;emj~_i+TP_+)8?!^Nx{*291!AP&|&O6`l}&g2~4P3J1rHM(Tx}#s2I(joM3Aau$$C zX?*w;6>lpS8Ee(P$Do=_71q_INli^%8Y&8eFfu$mjCSo>-7ChP!^l<-%0D#|9}5LT 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

    4h!1wOHh8GrE7P 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

    diff --git a/docs/classHazelnp_1_1HazelnuppInvalidKeyException.html b/docs/classHazelnp_1_1HazelnuppInvalidKeyException.html index ac0f4a5..b93359c 100644 --- a/docs/classHazelnp_1_1HazelnuppInvalidKeyException.html +++ b/docs/classHazelnp_1_1HazelnuppInvalidKeyException.html @@ -199,7 +199,7 @@ Additional Inherited Members diff --git a/docs/classHazelnp_1_1HazelnuppValueNotConvertibleException-members.html b/docs/classHazelnp_1_1HazelnuppValueNotConvertibleException-members.html index 7604f41..374f8f6 100644 --- a/docs/classHazelnp_1_1HazelnuppValueNotConvertibleException-members.html +++ b/docs/classHazelnp_1_1HazelnuppValueNotConvertibleException-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1HazelnuppValueNotConvertibleException.html b/docs/classHazelnp_1_1HazelnuppValueNotConvertibleException.html index 4bf567a..a4181b3 100644 --- a/docs/classHazelnp_1_1HazelnuppValueNotConvertibleException.html +++ b/docs/classHazelnp_1_1HazelnuppValueNotConvertibleException.html @@ -199,7 +199,7 @@ Additional Inherited Members diff --git a/docs/classHazelnp_1_1IntValue-members.html b/docs/classHazelnp_1_1IntValue-members.html index 644cfcc..ca99408 100644 --- a/docs/classHazelnp_1_1IntValue-members.html +++ b/docs/classHazelnp_1_1IntValue-members.html @@ -101,7 +101,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1IntValue.html b/docs/classHazelnp_1_1IntValue.html index c2c9c9b..93bf8a3 100644 --- a/docs/classHazelnp_1_1IntValue.html +++ b/docs/classHazelnp_1_1IntValue.html @@ -574,7 +574,7 @@ Additional Inherited Members
    Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
    diff --git a/docs/classHazelnp_1_1Internal_1_1StringTools-members.html b/docs/classHazelnp_1_1Internal_1_1StringTools-members.html index 72cf076..2a44f5b 100644 --- a/docs/classHazelnp_1_1Internal_1_1StringTools-members.html +++ b/docs/classHazelnp_1_1Internal_1_1StringTools-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1Internal_1_1StringTools.html b/docs/classHazelnp_1_1Internal_1_1StringTools.html index b5625a0..041fcff 100644 --- a/docs/classHazelnp_1_1Internal_1_1StringTools.html +++ b/docs/classHazelnp_1_1Internal_1_1StringTools.html @@ -626,7 +626,7 @@ Static Public Member Functions
    static std::vector< std::string > SplitString(const std::string &str, const char delimiter)
    Will split a string by a delimiter char. The delimiter will be excluded!
    diff --git a/docs/classHazelnp_1_1ListValue-members.html b/docs/classHazelnp_1_1ListValue-members.html index 32ce408..d10bb6c 100644 --- a/docs/classHazelnp_1_1ListValue-members.html +++ b/docs/classHazelnp_1_1ListValue-members.html @@ -101,7 +101,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1ListValue.html b/docs/classHazelnp_1_1ListValue.html index 8e458f7..8bdc99c 100644 --- a/docs/classHazelnp_1_1ListValue.html +++ b/docs/classHazelnp_1_1ListValue.html @@ -601,7 +601,7 @@ Additional Inherited Members
    Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
    diff --git a/docs/classHazelnp_1_1Parameter-members.html b/docs/classHazelnp_1_1Parameter-members.html index e79893b..83491d1 100644 --- a/docs/classHazelnp_1_1Parameter-members.html +++ b/docs/classHazelnp_1_1Parameter-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1Parameter.html b/docs/classHazelnp_1_1Parameter.html index ca33a33..adef864 100644 --- a/docs/classHazelnp_1_1Parameter.html +++ b/docs/classHazelnp_1_1Parameter.html @@ -275,7 +275,7 @@ Friends
    virtual Value * Deepcopy() const =0
    Will return a deeopopy of this object.
    diff --git a/docs/classHazelnp_1_1StringValue-members.html b/docs/classHazelnp_1_1StringValue-members.html index f6b3d06..531a8f9 100644 --- a/docs/classHazelnp_1_1StringValue-members.html +++ b/docs/classHazelnp_1_1StringValue-members.html @@ -100,7 +100,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1StringValue.html b/docs/classHazelnp_1_1StringValue.html index f7dc7ef..02a9406 100644 --- a/docs/classHazelnp_1_1StringValue.html +++ b/docs/classHazelnp_1_1StringValue.html @@ -547,7 +547,7 @@ Additional Inherited Members
    Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
    diff --git a/docs/classHazelnp_1_1Value-members.html b/docs/classHazelnp_1_1Value-members.html index e43eddc..0eedf6a 100644 --- a/docs/classHazelnp_1_1Value-members.html +++ b/docs/classHazelnp_1_1Value-members.html @@ -97,7 +97,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1Value.html b/docs/classHazelnp_1_1Value.html index d559254..9b20c1d 100644 --- a/docs/classHazelnp_1_1Value.html +++ b/docs/classHazelnp_1_1Value.html @@ -548,7 +548,7 @@ Friends
    DATA_TYPE type
    Definition: Value.h:48
    diff --git a/docs/classHazelnp_1_1VoidValue-members.html b/docs/classHazelnp_1_1VoidValue-members.html index 949dec6..0499f22 100644 --- a/docs/classHazelnp_1_1VoidValue-members.html +++ b/docs/classHazelnp_1_1VoidValue-members.html @@ -98,7 +98,7 @@ $(function() { diff --git a/docs/classHazelnp_1_1VoidValue.html b/docs/classHazelnp_1_1VoidValue.html index 36e1b24..c751f81 100644 --- a/docs/classHazelnp_1_1VoidValue.html +++ b/docs/classHazelnp_1_1VoidValue.html @@ -494,7 +494,7 @@ Additional Inherited Members
    Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
    diff --git a/docs/classes.html b/docs/classes.html index ef13a7e..2a0e0c9 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -78,52 +78,53 @@ $(function() { - + - + - + - + - + - + + - - + - + +
      c  
    HazelnuppConstraintMissingValue (Hazelnp)   HazelnuppConstraintIncompatibleParameters (Hazelnp)   
      l  
      s  
    VoidValue (Hazelnp)   
    HazelnuppConstraintTypeMissmatch (Hazelnp)   
    HazelnuppConstraintMissingValue (Hazelnp)   
    CmdArgsInterface (Hazelnp)   HazelnuppException (Hazelnp)   HazelnuppConstraintTypeMissmatch (Hazelnp)    ListValue (Hazelnp)    StringTools (Hazelnp::Internal)   
      f  
    HazelnuppInvalidKeyException (Hazelnp)   HazelnuppException (Hazelnp)   
      p  
    StringValue (Hazelnp)   
    HazelnuppValueNotConvertibleException (Hazelnp)   
    HazelnuppInvalidKeyException (Hazelnp)   
      v  
    FloatValue (Hazelnp)   
      i  
    -
    HazelnuppValueNotConvertibleException (Hazelnp)    ParamConstraint (Hazelnp)   
      h  
      i  
    +
    Parameter (Hazelnp)    Value (Hazelnp)   
    IntValue (Hazelnp)   
    HazelnuppConstraintException (Hazelnp)   
    IntValue (Hazelnp)   
    c | f | h | i | l | p | s | v
    diff --git a/docs/dir_0202e1e26df2e040f4dc3d434eecf04c.html b/docs/dir_0202e1e26df2e040f4dc3d434eecf04c.html index 808ddfd..8363b5e 100644 --- a/docs/dir_0202e1e26df2e040f4dc3d434eecf04c.html +++ b/docs/dir_0202e1e26df2e040f4dc3d434eecf04c.html @@ -128,6 +128,8 @@ Files   file  Value.h [code]   +file  Version.h [code] +  file  VoidValue.cpp [code]   file  VoidValue.h [code] @@ -136,7 +138,7 @@ Files diff --git a/docs/dir_0cc5f59b28c403d42cc56800132eb975.html b/docs/dir_0cc5f59b28c403d42cc56800132eb975.html index 86fb80f..7c7fab5 100644 --- a/docs/dir_0cc5f59b28c403d42cc56800132eb975.html +++ b/docs/dir_0cc5f59b28c403d42cc56800132eb975.html @@ -81,7 +81,7 @@ $(function() { diff --git a/docs/dir_1148ebc2b25b55095aebf6f4cbb6efca.html b/docs/dir_1148ebc2b25b55095aebf6f4cbb6efca.html index 67654db..ff43e43 100644 --- a/docs/dir_1148ebc2b25b55095aebf6f4cbb6efca.html +++ b/docs/dir_1148ebc2b25b55095aebf6f4cbb6efca.html @@ -81,7 +81,7 @@ $(function() { diff --git a/docs/dir_a8cffda729361e9d9637effa362fcea9.html b/docs/dir_a8cffda729361e9d9637effa362fcea9.html index 29262fd..e2ff909 100644 --- a/docs/dir_a8cffda729361e9d9637effa362fcea9.html +++ b/docs/dir_a8cffda729361e9d9637effa362fcea9.html @@ -81,7 +81,7 @@ $(function() { diff --git a/docs/files.html b/docs/files.html index 94bdee7..d9cc59d 100644 --- a/docs/files.html +++ b/docs/files.html @@ -100,14 +100,15 @@ $(function() {  StringValue.h  Value.cpp  Value.h - VoidValue.cpp - VoidValue.h + Version.h + VoidValue.cpp + VoidValue.h diff --git a/docs/functions.html b/docs/functions.html index f19873b..676a4e8 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -240,6 +240,9 @@ $(function() {
  • HazelnuppConstraintException() : Hazelnp::HazelnuppConstraintException
  • +
  • HazelnuppConstraintIncompatibleParameters() +: Hazelnp::HazelnuppConstraintIncompatibleParameters +
  • HazelnuppConstraintMissingValue() : Hazelnp::HazelnuppConstraintMissingValue
  • @@ -259,6 +262,12 @@ $(function() {

    - i -

      +
    • Incompatibility() +: Hazelnp::ParamConstraint +
    • +
    • incompatibleParameters +: Hazelnp::ParamConstraint +
    • IntValue() : Hazelnp::IntValue
    • @@ -348,7 +357,7 @@ $(function() { : Hazelnp::Internal::StringTools
    • Require() -: Hazelnp::ParamConstraint +: Hazelnp::ParamConstraint
    • required : Hazelnp::ParamConstraint @@ -437,7 +446,7 @@ $(function() { diff --git a/docs/functions_func.html b/docs/functions_func.html index f53c655..5b7a7a1 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -233,14 +233,17 @@ $(function() {
    • HazelnuppConstraintException() : Hazelnp::HazelnuppConstraintException
    • +
    • HazelnuppConstraintIncompatibleParameters() +: Hazelnp::HazelnuppConstraintIncompatibleParameters +
    • HazelnuppConstraintMissingValue() : Hazelnp::HazelnuppConstraintMissingValue
    • HazelnuppConstraintTypeMissmatch() -: Hazelnp::HazelnuppConstraintTypeMissmatch +: Hazelnp::HazelnuppConstraintTypeMissmatch
    • HazelnuppException() -: Hazelnp::HazelnuppException +: Hazelnp::HazelnuppException
    • HazelnuppInvalidKeyException() : Hazelnp::HazelnuppInvalidKeyException @@ -252,6 +255,9 @@ $(function() {

      - i -

      @@ -410,7 +416,7 @@ $(function() { diff --git a/docs/functions_rela.html b/docs/functions_rela.html index 90848d4..ddb58dc 100644 --- a/docs/functions_rela.html +++ b/docs/functions_rela.html @@ -82,7 +82,7 @@ $(function() { diff --git a/docs/functions_vars.html b/docs/functions_vars.html index d13c7d7..bb0627c 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -77,6 +77,9 @@ $(function() {
    • defaultValue : Hazelnp::ParamConstraint
    • +
    • incompatibleParameters +: Hazelnp::ParamConstraint +
    • message : Hazelnp::HazelnuppException
    • @@ -93,7 +96,7 @@ $(function() { diff --git a/docs/globals.html b/docs/globals.html index 90f4501..8c2cff5 100644 --- a/docs/globals.html +++ b/docs/globals.html @@ -71,14 +71,14 @@ $(function() {
      Here is a list of all file members with links to the files they belong to:
      diff --git a/docs/globals_defs.html b/docs/globals_defs.html index 868b6b3..d650884 100644 --- a/docs/globals_defs.html +++ b/docs/globals_defs.html @@ -71,14 +71,14 @@ $(function() {
       
      diff --git a/docs/graph_legend.html b/docs/graph_legend.html index 4561680..0a8e1d8 100644 --- a/docs/graph_legend.html +++ b/docs/graph_legend.html @@ -137,7 +137,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 2b71357..9602ae8 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -82,25 +82,26 @@ This inheritance list is sorted roughly, but not completely, alphabetically: Cstd::exceptionSTL class  CHazelnp::HazelnuppExceptionGeneric hazelnupp exception  CHazelnp::HazelnuppConstraintExceptionGets thrown something bad happens because of parameter constraints - CHazelnp::HazelnuppConstraintMissingValueGets thrown when a parameter constrained to be required is not provided, and has no default value set - CHazelnp::HazelnuppConstraintTypeMissmatchGets thrown when a parameter is of a type that does not match the required type, and is not convertible to it - CHazelnp::HazelnuppInvalidKeyExceptionGets thrown when an non-existent key gets dereferenced - CHazelnp::HazelnuppValueNotConvertibleExceptionGets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not convertible - CHazelnp::ParamConstraint - CHazelnp::Parameter - CHazelnp::Internal::StringToolsInternal helper class - CHazelnp::ValueAbstract class for values - CHazelnp::FloatValueSpecializations for floating point values (uses long double) - CHazelnp::IntValueSpecializations for integer values (uses long long int) - CHazelnp::ListValueSpecializations for list values (uses std::vector<Value*>) - CHazelnp::StringValueSpecializations for string values (uses std::string) - CHazelnp::VoidValueSpecializations for void values + CHazelnp::HazelnuppConstraintIncompatibleParametersGets thrown when a parameter constrained to be incompatible with other parameters gets supplied alongside at least one of those incompatible ones + CHazelnp::HazelnuppConstraintMissingValueGets thrown when a parameter constrained to be required is not provided, and has no default value set + CHazelnp::HazelnuppConstraintTypeMissmatchGets thrown when a parameter is of a type that does not match the required type, and is not convertible to it + CHazelnp::HazelnuppInvalidKeyExceptionGets thrown when an non-existent key gets dereferenced + CHazelnp::HazelnuppValueNotConvertibleExceptionGets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not convertible + CHazelnp::ParamConstraint + CHazelnp::Parameter + CHazelnp::Internal::StringToolsInternal helper class + CHazelnp::ValueAbstract class for values + CHazelnp::FloatValueSpecializations for floating point values (uses long double) + CHazelnp::IntValueSpecializations for integer values (uses long long int) + CHazelnp::ListValueSpecializations for list values (uses std::vector<Value*>) + CHazelnp::StringValueSpecializations for string values (uses std::string) + CHazelnp::VoidValueSpecializations for void values diff --git a/docs/index.html b/docs/index.html index 5829a4a..8d317d7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -222,13 +222,13 @@ Constraints

      That's all cool and stuff, but this looks like a LOT of error-checking and not elegant at all! How would i actually use this?

      -

      For exactly this reason, there are constraints. With this, you can control what the data looks like! Constraints serve two main purposes:

      +

      For exactly this reason, there are constraints. With this, you can control what your data looks like! Constraints serve three main purposes:

      Requiring data

      With ParamConstraint::Require() you can declare that a paramater must either always be present, or provide a default value.

      • If a parameter is not present, but has a default value, it will be automatically created.
      • -
      • If a parameter is not present, and has no default value, an exception will be thrown.
      • +
      • If a parameter is not present, and has no default value, the process will terminate with a descriptive error message.

      Minimal working example:

      #include "Hazelnupp.h"
      using namespace Hazelnp;
      @@ -238,8 +238,8 @@ Requiring data
      // Register constraints
      -
      args.RegisterConstraint("--this-is-required", ParamConstraint::Require()); // This missing throws an exception
      -
      args.RegisterConstraint("--also-required-but-defaulted", ParamConstraint::Require({"122"})); // This will default to 122
      +
      args.RegisterConstraint("--this-is-required", ParamConstraint::Require()); // This missing throws an exception
      +
      args.RegisterConstraint("--also-required-but-defaulted", ParamConstraint::Require({"122"})); // This will default to 122
      // Parse
      args.Parse(argc, argv);
      @@ -249,9 +249,9 @@ Requiring data

      Type safety

      With type safety you can always be certain that you are working with the correct type!
      - By creating a type-constraint you force Hazelnupp to use a certain type.
      + By creating a type-constraint, you force Hazelnupp to use a certain type.
      If a supplied type does not match, but is convertible, it will be converted.
      - If it is not convertible, an exception will be thrown.

      + If it is not convertible, the process will terminate with a descriptive error message.

      These conversions are:

      • int -> [float, string, list, void]
      • float ->[int, string, list, void]
      • @@ -278,7 +278,38 @@ Type safety
        return 0;
        }

        If --this-must-be-int would be passed as a float, it would be converted to int. If it was passed, for example, as a string, it would throw an exception.

        -
        +

        +Parameter incompatibilities

        +

        With parameter incompatibilities you can declare that certain parameters are just incompatible.
        + If they get passed together, the process will terminate with a descriptive error message.

        +

        Minimal working example:

        #include "Hazelnupp.h"
        +
        using namespace Hazelnp;
        +
        +
        int main(int argc, char** argv)
        +
        {
        + +
        +
        // Register constraints
        +
        +
        // Register a single incompatibility
        +
        args.RegisterConstraint("--be-vegan", ParamConstraint::Incompatibility("--be-carnivore"));
        +
        +
        // OR register a whole bunch of incompatibilities
        + +
        "--be-carnivore",
        +
        "--like-meat",
        +
        "--buy-meat",
        +
        "--grill-meat",
        +
        "--eat-meat"
        +
        }));
        +
        +
        +
        // Parse
        +
        args.Parse(argc, argv);
        +
        +
        return 0;
        +
        }
        +

        Note that you can also combine these two constraint-types by populating the struct yourself:

        ParamConstraint pc;
        pc.constrainType = true;
        pc.requiredType = DATA_TYPE::STRING;
        @@ -288,7 +319,7 @@ Type safety
        args.RegisterConstraint("--my-key", pc);

        What doesn't work is inserting multiple constraints for one key. It will just discard the older one. But that's okay because one can describe all possible constraints for a single key in one struct.

        -

        +

        Automatic parameter documentation

        Hazelnupp does automatically create a parameter documentation, accessible via --help.
        If you want to use --help yourself, just turn it off.

        CmdArgsInterface args;
        @@ -317,7 +348,7 @@ Automatic parameter documentation
        args.SetBriefDescription("This is the testing application for Hazelnupp.");

        If you want to display this information somewhere else, you can always access it as a string via args.GenerateDocumentation().

        -

        +

        Descriptive error messages

        Given that you did not disable crash-on-error, Hazelnupps default behaviour on user error is to terminate the process with a descriptive error message to stderr.

        Here's how they look like:

        @@ -333,12 +364,12 @@ Descriptive error messages
        --width => The width of something...

        This assumes that you've set a description for, in this example, --width. If a description is not set, the last line will simply be omitted.

        -

        +

        More examples?

        Check out the tests! They may help you out!
        Also make sure to check out the doxygen docs!

        -

        +

        What is not supported?

        Chaining abbreviated parameters, like this:

        # This is not supported. It would think -ltr is one parameter.
        $ a.out -ltr
        @@ -352,14 +383,14 @@ What is not supported?
        # Instead do this
        $ a.out -i hello.txt shoe.txt somsang.txt

        -

        +

        Further notes

        This is still in alpha! There is no guarantee at all that this actually works.
        Whilst i did my best to make sure it does, i bet there are still a few flaws i've overlooked.
        Please know that i am not obliged to work on fixes. I do have other stuff to do. This does not mean that i won't, but i'm not sure when.
        Feel free to submit a PR if you think you improved it in any way :)

        -

        +

        Contributing

        If you want to contribute, feel free to fork the repository, and submit a pull request.
        Bugfixes and tests are almost certain to be accepted, features should be agreed upon and come with tests.
        @@ -378,7 +409,7 @@ Contributing

      • Files outside the project (like STL) have to be included with #include <>. Not ""

      -

      +

      LICENSE

      Copyright (c) 2021, Leon Etienne
      @@ -390,20 +421,21 @@ LICENSE
      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      - -
      The main class to interface with.
      -
      void SetCatchHelp(bool catchHelp)
      Sets whether the CmdArgsInterface should automatically catch the –help parameter, print the parameter...
      + +
      static ParamConstraint Require(const std::initializer_list< std::string > &defaultValue={}, bool required=true)
      Constructs a require constraint.
      +
      The main class to interface with.
      +
      static ParamConstraint Incompatibility(const std::initializer_list< std::string > &incompatibleParameters)
      Constructs an incompatibility constraint.
      +
      void SetCatchHelp(bool catchHelp)
      Sets whether the CmdArgsInterface should automatically catch the –help parameter, print the parameter...
      Gets thrown when an non-existent key gets dereferenced.
      -
      void RegisterConstraint(const std::string &key, const ParamConstraint &constraint)
      Will register a constraint for a parameter.
      -
      void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
      Will register an abbreviation (like -f for –force)
      -
      bool HasParam(const std::string &key) const
      Will check wether a parameter exists given a key, or not.
      +
      void RegisterConstraint(const std::string &key, const ParamConstraint &constraint)
      Will register a constraint for a parameter.
      +
      void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
      Will register an abbreviation (like -f for –force)
      +
      bool HasParam(const std::string &key) const
      Will check wether a parameter exists given a key, or not.
      void Parse(const int argc, const char *const *argv)
      Will parse command line arguments.
      static ParamConstraint TypeSafety(DATA_TYPE requiredType, bool constrainType=true)
      Constructs a type-safety constraint.
      -
      static ParamConstraint Require(const std::vector< std::string > &defaultValue={}, bool required=true)
      Constructs a require constraint.
      diff --git a/docs/index_8md.html b/docs/index_8md.html index 16592bf..05c1c76 100644 --- a/docs/index_8md.html +++ b/docs/index_8md.html @@ -77,7 +77,7 @@ $(function() { diff --git a/docs/inherit_graph_1.map b/docs/inherit_graph_1.map index 543bbec..60adf25 100644 --- a/docs/inherit_graph_1.map +++ b/docs/inherit_graph_1.map @@ -1,9 +1,10 @@ - - - - - - - + + + + + + + + diff --git a/docs/inherit_graph_1.md5 b/docs/inherit_graph_1.md5 index 474b477..32e12d8 100644 --- a/docs/inherit_graph_1.md5 +++ b/docs/inherit_graph_1.md5 @@ -1 +1 @@ -e5f16d852b74dd651697116cdb482cbf \ No newline at end of file +414008b1001331bfd5d70936aa6acf74 \ No newline at end of file diff --git a/docs/inherit_graph_1.png b/docs/inherit_graph_1.png index f28e203b39a32909df50e39996c33b66e6d6fcb9..d65deab36533b3289cec411b1257d0155c16be37 100644 GIT binary patch literal 23383 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

      UBb3*_V( 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 literal 22968 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 - - - - - - - + + + + + + + + @@ -122,7 +123,7 @@ $(function() {

      diff --git a/docs/menudata.js b/docs/menudata.js index bb6a937..a4ef47a 100644 --- a/docs/menudata.js +++ b/docs/menudata.js @@ -74,4 +74,7 @@ var menudata={children:[ {text:"Variables",url:"functions_vars.html"}, {text:"Related Functions",url:"functions_rela.html"}]}]}, {text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}]}]} +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/docs/namespaceHazelnp.html b/docs/namespaceHazelnp.html index 4e7c49a..9ab20dc 100644 --- a/docs/namespaceHazelnp.html +++ b/docs/namespaceHazelnp.html @@ -98,6 +98,9 @@ Classes class  HazelnuppConstraintException  Gets thrown something bad happens because of parameter constraints. More...
        +class  HazelnuppConstraintIncompatibleParameters + Gets thrown when a parameter constrained to be incompatible with other parameters gets supplied alongside at least one of those incompatible ones. More...
      +  class  HazelnuppConstraintMissingValue  Gets thrown when a parameter constrained to be required is not provided, and has no default value set. More...
        @@ -251,7 +254,7 @@ Functions diff --git a/docs/namespaceHazelnp_1_1Internal.html b/docs/namespaceHazelnp_1_1Internal.html index fc0f0b3..285f776 100644 --- a/docs/namespaceHazelnp_1_1Internal.html +++ b/docs/namespaceHazelnp_1_1Internal.html @@ -90,7 +90,7 @@ Classes diff --git a/docs/namespaceHazelnp_1_1Placeholders.html b/docs/namespaceHazelnp_1_1Placeholders.html index 2c4c4c0..838e44d 100644 --- a/docs/namespaceHazelnp_1_1Placeholders.html +++ b/docs/namespaceHazelnp_1_1Placeholders.html @@ -117,7 +117,7 @@ Variables diff --git a/docs/namespacemembers.html b/docs/namespacemembers.html index 9c0661d..2caf7e4 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -84,7 +84,7 @@ $(function() { diff --git a/docs/namespacemembers_enum.html b/docs/namespacemembers_enum.html index b00bc80..be263c7 100644 --- a/docs/namespacemembers_enum.html +++ b/docs/namespacemembers_enum.html @@ -78,7 +78,7 @@ $(function() { diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index 6abd69c..43b4d92 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -78,7 +78,7 @@ $(function() { diff --git a/docs/namespacemembers_vars.html b/docs/namespacemembers_vars.html index acc3298..d17fdcd 100644 --- a/docs/namespacemembers_vars.html +++ b/docs/namespacemembers_vars.html @@ -78,7 +78,7 @@ $(function() { diff --git a/docs/namespaces.html b/docs/namespaces.html index 43549cc..8603c0f 100644 --- a/docs/namespaces.html +++ b/docs/namespaces.html @@ -84,7 +84,7 @@ $(function() { diff --git a/docs/search/all_10.js b/docs/search/all_10.js index c4ed650..2e540b6 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -1,4 +1,4 @@ var searchData= [ - ['what_110',['What',['../classHazelnp_1_1HazelnuppException.html#aa86c415a0f2b4ea5f11892145d1ea83e',1,'Hazelnp::HazelnuppException']]] + ['what_115',['What',['../classHazelnp_1_1HazelnuppException.html#aa86c415a0f2b4ea5f11892145d1ea83e',1,'Hazelnp::HazelnuppException']]] ]; diff --git a/docs/search/all_11.js b/docs/search/all_11.js index b124c9e..99c6b4d 100644 --- a/docs/search/all_11.js +++ b/docs/search/all_11.js @@ -1,11 +1,11 @@ var searchData= [ - ['_7ecmdargsinterface_111',['~CmdArgsInterface',['../classHazelnp_1_1CmdArgsInterface.html#aadc75b3b6c9662cfbd4a936468d50466',1,'Hazelnp::CmdArgsInterface']]], - ['_7efloatvalue_112',['~FloatValue',['../classHazelnp_1_1FloatValue.html#a02e61e453c3e8e32d4d527799c11fd4a',1,'Hazelnp::FloatValue']]], - ['_7eintvalue_113',['~IntValue',['../classHazelnp_1_1IntValue.html#af69f25847b0666f9d6c1bb1fed18d917',1,'Hazelnp::IntValue']]], - ['_7elistvalue_114',['~ListValue',['../classHazelnp_1_1ListValue.html#a91f1450f299d46b3301774a6b4eb6c18',1,'Hazelnp::ListValue']]], - ['_7eparameter_115',['~Parameter',['../classHazelnp_1_1Parameter.html#a6e2ade42a712f1d3675653329266e42d',1,'Hazelnp::Parameter']]], - ['_7estringvalue_116',['~StringValue',['../classHazelnp_1_1StringValue.html#a5176062e2110d121466a6855fdc65d6d',1,'Hazelnp::StringValue']]], - ['_7evalue_117',['~Value',['../classHazelnp_1_1Value.html#a977dea61ee5b00b6c6d77ad6ad2c8d4c',1,'Hazelnp::Value']]], - ['_7evoidvalue_118',['~VoidValue',['../classHazelnp_1_1VoidValue.html#a6024b40919c3a6acea92be0439be2db0',1,'Hazelnp::VoidValue']]] + ['_7ecmdargsinterface_116',['~CmdArgsInterface',['../classHazelnp_1_1CmdArgsInterface.html#aadc75b3b6c9662cfbd4a936468d50466',1,'Hazelnp::CmdArgsInterface']]], + ['_7efloatvalue_117',['~FloatValue',['../classHazelnp_1_1FloatValue.html#a02e61e453c3e8e32d4d527799c11fd4a',1,'Hazelnp::FloatValue']]], + ['_7eintvalue_118',['~IntValue',['../classHazelnp_1_1IntValue.html#af69f25847b0666f9d6c1bb1fed18d917',1,'Hazelnp::IntValue']]], + ['_7elistvalue_119',['~ListValue',['../classHazelnp_1_1ListValue.html#a91f1450f299d46b3301774a6b4eb6c18',1,'Hazelnp::ListValue']]], + ['_7eparameter_120',['~Parameter',['../classHazelnp_1_1Parameter.html#a6e2ade42a712f1d3675653329266e42d',1,'Hazelnp::Parameter']]], + ['_7estringvalue_121',['~StringValue',['../classHazelnp_1_1StringValue.html#a5176062e2110d121466a6855fdc65d6d',1,'Hazelnp::StringValue']]], + ['_7evalue_122',['~Value',['../classHazelnp_1_1Value.html#a977dea61ee5b00b6c6d77ad6ad2c8d4c',1,'Hazelnp::Value']]], + ['_7evoidvalue_123',['~VoidValue',['../classHazelnp_1_1VoidValue.html#a6024b40919c3a6acea92be0439be2db0',1,'Hazelnp::VoidValue']]] ]; diff --git a/docs/search/all_5.js b/docs/search/all_5.js index c8eb93b..6771625 100644 --- a/docs/search/all_5.js +++ b/docs/search/all_5.js @@ -5,14 +5,16 @@ var searchData= ['hasparam_41',['HasParam',['../classHazelnp_1_1CmdArgsInterface.html#a3a7fa36fe69ee8bf3b400983a21ecd24',1,'Hazelnp::CmdArgsInterface']]], ['hazelnp_42',['Hazelnp',['../namespaceHazelnp.html',1,'']]], ['hazelnupp_2evcxproj_2efilelistabsolute_2etxt_43',['Hazelnupp.vcxproj.FileListAbsolute.txt',['../Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)'],['../Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)']]], - ['hazelnuppconstraintexception_44',['HazelnuppConstraintException',['../classHazelnp_1_1HazelnuppConstraintException.html',1,'Hazelnp::HazelnuppConstraintException'],['../classHazelnp_1_1HazelnuppConstraintException.html#a4d08002a96bf9b3da3c6e931a51960e9',1,'Hazelnp::HazelnuppConstraintException::HazelnuppConstraintException()'],['../classHazelnp_1_1HazelnuppConstraintException.html#a944f0e6a384e032a762c5892964e1cc0',1,'Hazelnp::HazelnuppConstraintException::HazelnuppConstraintException(const std::string &msg)']]], - ['hazelnuppconstraintmissingvalue_45',['HazelnuppConstraintMissingValue',['../classHazelnp_1_1HazelnuppConstraintMissingValue.html',1,'Hazelnp::HazelnuppConstraintMissingValue'],['../classHazelnp_1_1HazelnuppConstraintMissingValue.html#aad4a7b5573790ddfbe1a453aef71eb10',1,'Hazelnp::HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue()'],['../classHazelnp_1_1HazelnuppConstraintMissingValue.html#a192ef8133047beadf8fc9f585d384c04',1,'Hazelnp::HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue(const std::string &key, const std::string &paramDescription="")']]], - ['hazelnuppconstrainttypemissmatch_46',['HazelnuppConstraintTypeMissmatch',['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html',1,'Hazelnp::HazelnuppConstraintTypeMissmatch'],['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#ab7c9e9afd9d3286e563a7656785242e8',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch()'],['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#a603d91c9af39e53b54e5aa288266cfe4',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch(const std::string &msg)'],['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#abd5ae6630884725b614e8fe603cccdc5',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch(const std::string &key, const DATA_TYPE requiredType, const DATA_TYPE actualType, const std::string &paramDescription="")']]], - ['hazelnuppexception_47',['HazelnuppException',['../classHazelnp_1_1HazelnuppException.html',1,'Hazelnp::HazelnuppException'],['../classHazelnp_1_1HazelnuppException.html#a0b21fd5d4f22e5e677b74eb0acd7c6ff',1,'Hazelnp::HazelnuppException::HazelnuppException()'],['../classHazelnp_1_1HazelnuppException.html#a816f823fe2ebd35076049e33b9f3c05c',1,'Hazelnp::HazelnuppException::HazelnuppException(const std::string &msg)']]], - ['hazelnuppexception_2eh_48',['HazelnuppException.h',['../HazelnuppException_8h.html',1,'']]], - ['hazelnuppinvalidkeyexception_49',['HazelnuppInvalidKeyException',['../classHazelnp_1_1HazelnuppInvalidKeyException.html',1,'Hazelnp::HazelnuppInvalidKeyException'],['../classHazelnp_1_1HazelnuppInvalidKeyException.html#ab23be8f7cb84129fa85ed1e7a0b280a0',1,'Hazelnp::HazelnuppInvalidKeyException::HazelnuppInvalidKeyException()'],['../classHazelnp_1_1HazelnuppInvalidKeyException.html#a18a08dc4efe80a378216460db5769891',1,'Hazelnp::HazelnuppInvalidKeyException::HazelnuppInvalidKeyException(const std::string &msg)']]], - ['hazelnuppvaluenotconvertibleexception_50',['HazelnuppValueNotConvertibleException',['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html',1,'Hazelnp::HazelnuppValueNotConvertibleException'],['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html#a0babee1bb5cec9fdd4abfd86995561f4',1,'Hazelnp::HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException()'],['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html#a7ba376cd7fc7edcb934ee0257d4867f2',1,'Hazelnp::HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException(const std::string &msg)']]], - ['hazelnupp_51',['Hazelnupp',['../index.html',1,'']]], - ['internal_52',['Internal',['../namespaceHazelnp_1_1Internal.html',1,'Hazelnp']]], - ['placeholders_53',['Placeholders',['../namespaceHazelnp_1_1Placeholders.html',1,'Hazelnp']]] + ['hazelnupp_5fversion_44',['HAZELNUPP_VERSION',['../Version_8h.html#a5ade51e925f9cad08d64d4021c8312a0',1,'Version.h']]], + ['hazelnuppconstraintexception_45',['HazelnuppConstraintException',['../classHazelnp_1_1HazelnuppConstraintException.html',1,'Hazelnp::HazelnuppConstraintException'],['../classHazelnp_1_1HazelnuppConstraintException.html#a4d08002a96bf9b3da3c6e931a51960e9',1,'Hazelnp::HazelnuppConstraintException::HazelnuppConstraintException()'],['../classHazelnp_1_1HazelnuppConstraintException.html#a944f0e6a384e032a762c5892964e1cc0',1,'Hazelnp::HazelnuppConstraintException::HazelnuppConstraintException(const std::string &msg)']]], + ['hazelnuppconstraintincompatibleparameters_46',['HazelnuppConstraintIncompatibleParameters',['../classHazelnp_1_1HazelnuppConstraintIncompatibleParameters.html',1,'Hazelnp::HazelnuppConstraintIncompatibleParameters'],['../classHazelnp_1_1HazelnuppConstraintIncompatibleParameters.html#a3eceb69d0d4794252ab41b0d2b22ef3d',1,'Hazelnp::HazelnuppConstraintIncompatibleParameters::HazelnuppConstraintIncompatibleParameters()'],['../classHazelnp_1_1HazelnuppConstraintIncompatibleParameters.html#ad9427954049ceb66f42130ac8476dc46',1,'Hazelnp::HazelnuppConstraintIncompatibleParameters::HazelnuppConstraintIncompatibleParameters(const std::string &key1, const std::string &key2)']]], + ['hazelnuppconstraintmissingvalue_47',['HazelnuppConstraintMissingValue',['../classHazelnp_1_1HazelnuppConstraintMissingValue.html',1,'Hazelnp::HazelnuppConstraintMissingValue'],['../classHazelnp_1_1HazelnuppConstraintMissingValue.html#aad4a7b5573790ddfbe1a453aef71eb10',1,'Hazelnp::HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue()'],['../classHazelnp_1_1HazelnuppConstraintMissingValue.html#a192ef8133047beadf8fc9f585d384c04',1,'Hazelnp::HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue(const std::string &key, const std::string &paramDescription="")']]], + ['hazelnuppconstrainttypemissmatch_48',['HazelnuppConstraintTypeMissmatch',['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html',1,'Hazelnp::HazelnuppConstraintTypeMissmatch'],['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#ab7c9e9afd9d3286e563a7656785242e8',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch()'],['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#a603d91c9af39e53b54e5aa288266cfe4',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch(const std::string &msg)'],['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#abd5ae6630884725b614e8fe603cccdc5',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch(const std::string &key, const DATA_TYPE requiredType, const DATA_TYPE actualType, const std::string &paramDescription="")']]], + ['hazelnuppexception_49',['HazelnuppException',['../classHazelnp_1_1HazelnuppException.html',1,'Hazelnp::HazelnuppException'],['../classHazelnp_1_1HazelnuppException.html#a0b21fd5d4f22e5e677b74eb0acd7c6ff',1,'Hazelnp::HazelnuppException::HazelnuppException()'],['../classHazelnp_1_1HazelnuppException.html#a816f823fe2ebd35076049e33b9f3c05c',1,'Hazelnp::HazelnuppException::HazelnuppException(const std::string &msg)']]], + ['hazelnuppexception_2eh_50',['HazelnuppException.h',['../HazelnuppException_8h.html',1,'']]], + ['hazelnuppinvalidkeyexception_51',['HazelnuppInvalidKeyException',['../classHazelnp_1_1HazelnuppInvalidKeyException.html',1,'Hazelnp::HazelnuppInvalidKeyException'],['../classHazelnp_1_1HazelnuppInvalidKeyException.html#ab23be8f7cb84129fa85ed1e7a0b280a0',1,'Hazelnp::HazelnuppInvalidKeyException::HazelnuppInvalidKeyException()'],['../classHazelnp_1_1HazelnuppInvalidKeyException.html#a18a08dc4efe80a378216460db5769891',1,'Hazelnp::HazelnuppInvalidKeyException::HazelnuppInvalidKeyException(const std::string &msg)']]], + ['hazelnuppvaluenotconvertibleexception_52',['HazelnuppValueNotConvertibleException',['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html',1,'Hazelnp::HazelnuppValueNotConvertibleException'],['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html#a0babee1bb5cec9fdd4abfd86995561f4',1,'Hazelnp::HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException()'],['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html#a7ba376cd7fc7edcb934ee0257d4867f2',1,'Hazelnp::HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException(const std::string &msg)']]], + ['hazelnupp_53',['Hazelnupp',['../index.html',1,'']]], + ['internal_54',['Internal',['../namespaceHazelnp_1_1Internal.html',1,'Hazelnp']]], + ['placeholders_55',['Placeholders',['../namespaceHazelnp_1_1Placeholders.html',1,'Hazelnp']]] ]; diff --git a/docs/search/all_6.js b/docs/search/all_6.js index bc364ef..54c79e0 100644 --- a/docs/search/all_6.js +++ b/docs/search/all_6.js @@ -1,9 +1,11 @@ var searchData= [ - ['index_2emd_54',['index.md',['../index_8md.html',1,'']]], - ['int_55',['INT',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa53f93baa3057821107c750323892fa92',1,'Hazelnp']]], - ['intvalue_56',['IntValue',['../classHazelnp_1_1IntValue.html',1,'Hazelnp::IntValue'],['../classHazelnp_1_1IntValue.html#ac1174f807ce2c085f5a24baed4e3c1ba',1,'Hazelnp::IntValue::IntValue()']]], - ['intvalue_2ecpp_57',['IntValue.cpp',['../IntValue_8cpp.html',1,'']]], - ['intvalue_2eh_58',['IntValue.h',['../IntValue_8h.html',1,'']]], - ['isnumeric_59',['IsNumeric',['../classHazelnp_1_1Internal_1_1StringTools.html#a1abf1454a223165acfb52f2a246c8215',1,'Hazelnp::Internal::StringTools']]] + ['incompatibility_56',['Incompatibility',['../structHazelnp_1_1ParamConstraint.html#a20fa41460106b5327a51114f8a187871',1,'Hazelnp::ParamConstraint::Incompatibility(const std::initializer_list< std::string > &incompatibleParameters)'],['../structHazelnp_1_1ParamConstraint.html#a6bb383f8945fb99cbd2370fd9a4bc6fc',1,'Hazelnp::ParamConstraint::Incompatibility(const std::string &incompatibleParameters)']]], + ['incompatibleparameters_57',['incompatibleParameters',['../structHazelnp_1_1ParamConstraint.html#acf45734665238b51483f77701039108c',1,'Hazelnp::ParamConstraint']]], + ['index_2emd_58',['index.md',['../index_8md.html',1,'']]], + ['int_59',['INT',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa53f93baa3057821107c750323892fa92',1,'Hazelnp']]], + ['intvalue_60',['IntValue',['../classHazelnp_1_1IntValue.html',1,'Hazelnp::IntValue'],['../classHazelnp_1_1IntValue.html#ac1174f807ce2c085f5a24baed4e3c1ba',1,'Hazelnp::IntValue::IntValue()']]], + ['intvalue_2ecpp_61',['IntValue.cpp',['../IntValue_8cpp.html',1,'']]], + ['intvalue_2eh_62',['IntValue.h',['../IntValue_8h.html',1,'']]], + ['isnumeric_63',['IsNumeric',['../classHazelnp_1_1Internal_1_1StringTools.html#a1abf1454a223165acfb52f2a246c8215',1,'Hazelnp::Internal::StringTools']]] ]; diff --git a/docs/search/all_7.js b/docs/search/all_7.js index 576c771..f32f427 100644 --- a/docs/search/all_7.js +++ b/docs/search/all_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['key_60',['Key',['../classHazelnp_1_1Parameter.html#a7acd68ce06eec06ab286b1a062f9c8d6',1,'Hazelnp::Parameter']]] + ['key_64',['Key',['../classHazelnp_1_1Parameter.html#a7acd68ce06eec06ab286b1a062f9c8d6',1,'Hazelnp::Parameter']]] ]; diff --git a/docs/search/all_8.js b/docs/search/all_8.js index c8e0aeb..6c49daa 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -1,7 +1,7 @@ var searchData= [ - ['list_61',['LIST',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa298cb25408234de02baf2085803a464a',1,'Hazelnp']]], - ['listvalue_62',['ListValue',['../classHazelnp_1_1ListValue.html',1,'Hazelnp::ListValue'],['../classHazelnp_1_1ListValue.html#a6082aaa506b31496720a168da8ab2708',1,'Hazelnp::ListValue::ListValue()']]], - ['listvalue_2ecpp_63',['ListValue.cpp',['../ListValue_8cpp.html',1,'']]], - ['listvalue_2eh_64',['ListValue.h',['../ListValue_8h.html',1,'']]] + ['list_65',['LIST',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa298cb25408234de02baf2085803a464a',1,'Hazelnp']]], + ['listvalue_66',['ListValue',['../classHazelnp_1_1ListValue.html',1,'Hazelnp::ListValue'],['../classHazelnp_1_1ListValue.html#a6082aaa506b31496720a168da8ab2708',1,'Hazelnp::ListValue::ListValue()']]], + ['listvalue_2ecpp_67',['ListValue.cpp',['../ListValue_8cpp.html',1,'']]], + ['listvalue_2eh_68',['ListValue.h',['../ListValue_8h.html',1,'']]] ]; diff --git a/docs/search/all_9.js b/docs/search/all_9.js index 684fed3..108a8ed 100644 --- a/docs/search/all_9.js +++ b/docs/search/all_9.js @@ -1,4 +1,4 @@ var searchData= [ - ['message_65',['message',['../classHazelnp_1_1HazelnuppException.html#aa905cabcd12f542dfc67638732737e88',1,'Hazelnp::HazelnuppException']]] + ['message_69',['message',['../classHazelnp_1_1HazelnuppException.html#aa905cabcd12f542dfc67638732737e88',1,'Hazelnp::HazelnuppException']]] ]; diff --git a/docs/search/all_a.js b/docs/search/all_a.js index 7119dcf..8b7a11b 100644 --- a/docs/search/all_a.js +++ b/docs/search/all_a.js @@ -1,11 +1,11 @@ var searchData= [ - ['operator_20double_66',['operator double',['../classHazelnp_1_1FloatValue.html#ae02de376bbb2b76e0f9d16b1fc4de06d',1,'Hazelnp::FloatValue']]], - ['operator_20int_67',['operator int',['../classHazelnp_1_1IntValue.html#ab30a38c8f58cefd7cbf365c4aeae79bd',1,'Hazelnp::IntValue']]], - ['operator_20long_20double_68',['operator long double',['../classHazelnp_1_1FloatValue.html#ad0d4c589190fbab7e6c4d8fcc130ac1b',1,'Hazelnp::FloatValue']]], - ['operator_20long_20long_20int_69',['operator long long int',['../classHazelnp_1_1IntValue.html#a45b283dae9904ad0643035d3ee5883eb',1,'Hazelnp::IntValue']]], - ['operator_3c_3c_70',['operator<<',['../classHazelnp_1_1Parameter.html#a11b3529badcbf99b46262772472495c7',1,'Hazelnp::Parameter::operator<<()'],['../classHazelnp_1_1Value.html#ad29db86c4a2dec5bc8d0006031b07211',1,'Hazelnp::Value::operator<<()']]], - ['operator_5b_5d_71',['operator[]',['../classHazelnp_1_1CmdArgsInterface.html#af5e43c1067fb6c1074d9be3427c7a415',1,'Hazelnp::CmdArgsInterface']]], - ['string_72',['string',['../classHazelnp_1_1StringValue.html#a23449775f14f828d29b115de040a696b',1,'Hazelnp::StringValue']]], - ['vector_3c_20value_20_2a_20_3e_73',['vector< Value * >',['../classHazelnp_1_1ListValue.html#a5d92ff2b9a1fa92fbc303ac4d07765d0',1,'Hazelnp::ListValue']]] + ['operator_20double_70',['operator double',['../classHazelnp_1_1FloatValue.html#ae02de376bbb2b76e0f9d16b1fc4de06d',1,'Hazelnp::FloatValue']]], + ['operator_20int_71',['operator int',['../classHazelnp_1_1IntValue.html#ab30a38c8f58cefd7cbf365c4aeae79bd',1,'Hazelnp::IntValue']]], + ['operator_20long_20double_72',['operator long double',['../classHazelnp_1_1FloatValue.html#ad0d4c589190fbab7e6c4d8fcc130ac1b',1,'Hazelnp::FloatValue']]], + ['operator_20long_20long_20int_73',['operator long long int',['../classHazelnp_1_1IntValue.html#a45b283dae9904ad0643035d3ee5883eb',1,'Hazelnp::IntValue']]], + ['operator_3c_3c_74',['operator<<',['../classHazelnp_1_1Parameter.html#a11b3529badcbf99b46262772472495c7',1,'Hazelnp::Parameter::operator<<()'],['../classHazelnp_1_1Value.html#ad29db86c4a2dec5bc8d0006031b07211',1,'Hazelnp::Value::operator<<()']]], + ['operator_5b_5d_75',['operator[]',['../classHazelnp_1_1CmdArgsInterface.html#af5e43c1067fb6c1074d9be3427c7a415',1,'Hazelnp::CmdArgsInterface']]], + ['string_76',['string',['../classHazelnp_1_1StringValue.html#a23449775f14f828d29b115de040a696b',1,'Hazelnp::StringValue']]], + ['vector_3c_20value_20_2a_20_3e_77',['vector< Value * >',['../classHazelnp_1_1ListValue.html#a5d92ff2b9a1fa92fbc303ac4d07765d0',1,'Hazelnp::ListValue']]] ]; diff --git a/docs/search/all_b.js b/docs/search/all_b.js index c035056..0547704 100644 --- a/docs/search/all_b.js +++ b/docs/search/all_b.js @@ -1,11 +1,11 @@ var searchData= [ - ['paramconstraint_74',['ParamConstraint',['../structHazelnp_1_1ParamConstraint.html',1,'Hazelnp::ParamConstraint'],['../structHazelnp_1_1ParamConstraint.html#afa9e1b4378c9fa1b4a7b5b792c062cbe',1,'Hazelnp::ParamConstraint::ParamConstraint()=default'],['../structHazelnp_1_1ParamConstraint.html#af261299848888fb106f5ba3b4c5a72ba',1,'Hazelnp::ParamConstraint::ParamConstraint(bool constrainType, DATA_TYPE requiredType, const std::vector< std::string > &defaultValue, bool required)']]], - ['paramconstraint_2eh_75',['ParamConstraint.h',['../ParamConstraint_8h.html',1,'']]], - ['parameter_76',['Parameter',['../classHazelnp_1_1Parameter.html',1,'Hazelnp::Parameter'],['../classHazelnp_1_1Parameter.html#a0c9faefc26cc9d8c886ef71e39e2f90c',1,'Hazelnp::Parameter::Parameter()']]], - ['parameter_2ecpp_77',['Parameter.cpp',['../Parameter_8cpp.html',1,'']]], - ['parameter_2eh_78',['Parameter.h',['../Parameter_8h.html',1,'']]], - ['parse_79',['Parse',['../classHazelnp_1_1CmdArgsInterface.html#a1f4845041e08b3335510de44fafaee19',1,'Hazelnp::CmdArgsInterface']]], - ['parsenumber_80',['ParseNumber',['../classHazelnp_1_1Internal_1_1StringTools.html#a3cc71bfffcad9a4334e74aac69dbfd68',1,'Hazelnp::Internal::StringTools']]], - ['placeholders_2eh_81',['Placeholders.h',['../Placeholders_8h.html',1,'']]] + ['paramconstraint_78',['ParamConstraint',['../structHazelnp_1_1ParamConstraint.html',1,'Hazelnp::ParamConstraint'],['../structHazelnp_1_1ParamConstraint.html#afa9e1b4378c9fa1b4a7b5b792c062cbe',1,'Hazelnp::ParamConstraint::ParamConstraint()=default'],['../structHazelnp_1_1ParamConstraint.html#aea39497a14939fa887c236ee1e755cb3',1,'Hazelnp::ParamConstraint::ParamConstraint(bool constrainType, DATA_TYPE requiredType, const std::initializer_list< std::string > &defaultValue, bool required, const std::initializer_list< std::string > &incompatibleParameters)']]], + ['paramconstraint_2eh_79',['ParamConstraint.h',['../ParamConstraint_8h.html',1,'']]], + ['parameter_80',['Parameter',['../classHazelnp_1_1Parameter.html',1,'Hazelnp::Parameter'],['../classHazelnp_1_1Parameter.html#a0c9faefc26cc9d8c886ef71e39e2f90c',1,'Hazelnp::Parameter::Parameter()']]], + ['parameter_2ecpp_81',['Parameter.cpp',['../Parameter_8cpp.html',1,'']]], + ['parameter_2eh_82',['Parameter.h',['../Parameter_8h.html',1,'']]], + ['parse_83',['Parse',['../classHazelnp_1_1CmdArgsInterface.html#a1f4845041e08b3335510de44fafaee19',1,'Hazelnp::CmdArgsInterface']]], + ['parsenumber_84',['ParseNumber',['../classHazelnp_1_1Internal_1_1StringTools.html#a3cc71bfffcad9a4334e74aac69dbfd68',1,'Hazelnp::Internal::StringTools']]], + ['placeholders_2eh_85',['Placeholders.h',['../Placeholders_8h.html',1,'']]] ]; diff --git a/docs/search/all_c.js b/docs/search/all_c.js index 3906c9e..691adcf 100644 --- a/docs/search/all_c.js +++ b/docs/search/all_c.js @@ -1,10 +1,10 @@ var searchData= [ - ['registerabbreviation_82',['RegisterAbbreviation',['../classHazelnp_1_1CmdArgsInterface.html#aaccf591a74408aeb4363033fe8cb2224',1,'Hazelnp::CmdArgsInterface']]], - ['registerconstraint_83',['RegisterConstraint',['../classHazelnp_1_1CmdArgsInterface.html#aa30222df012f357455f90e3620346bb2',1,'Hazelnp::CmdArgsInterface']]], - ['registerdescription_84',['RegisterDescription',['../classHazelnp_1_1CmdArgsInterface.html#a6589d2e818ba32f2a3e5b5a6a5e2bf1e',1,'Hazelnp::CmdArgsInterface']]], - ['replace_85',['Replace',['../classHazelnp_1_1Internal_1_1StringTools.html#ac45f8b6d0572443e9d2597447091b000',1,'Hazelnp::Internal::StringTools::Replace(const std::string &str, const char find, const std::string &subst)'],['../classHazelnp_1_1Internal_1_1StringTools.html#afaebf388806c331db0757231b0366fd7',1,'Hazelnp::Internal::StringTools::Replace(const std::string &str, const std::string &find, const std::string &subst)']]], - ['require_86',['Require',['../structHazelnp_1_1ParamConstraint.html#a926e12fcb2fd0d031452c4bcc950bd6c',1,'Hazelnp::ParamConstraint']]], - ['required_87',['required',['../structHazelnp_1_1ParamConstraint.html#a8ccf3ebecc2d9d0105e181814af2943c',1,'Hazelnp::ParamConstraint']]], - ['requiredtype_88',['requiredType',['../structHazelnp_1_1ParamConstraint.html#a203b6fd1b9788a529aa0f15fe94fd24a',1,'Hazelnp::ParamConstraint']]] + ['registerabbreviation_86',['RegisterAbbreviation',['../classHazelnp_1_1CmdArgsInterface.html#aaccf591a74408aeb4363033fe8cb2224',1,'Hazelnp::CmdArgsInterface']]], + ['registerconstraint_87',['RegisterConstraint',['../classHazelnp_1_1CmdArgsInterface.html#aa30222df012f357455f90e3620346bb2',1,'Hazelnp::CmdArgsInterface']]], + ['registerdescription_88',['RegisterDescription',['../classHazelnp_1_1CmdArgsInterface.html#a6589d2e818ba32f2a3e5b5a6a5e2bf1e',1,'Hazelnp::CmdArgsInterface']]], + ['replace_89',['Replace',['../classHazelnp_1_1Internal_1_1StringTools.html#ac45f8b6d0572443e9d2597447091b000',1,'Hazelnp::Internal::StringTools::Replace(const std::string &str, const char find, const std::string &subst)'],['../classHazelnp_1_1Internal_1_1StringTools.html#afaebf388806c331db0757231b0366fd7',1,'Hazelnp::Internal::StringTools::Replace(const std::string &str, const std::string &find, const std::string &subst)']]], + ['require_90',['Require',['../structHazelnp_1_1ParamConstraint.html#a8a7e5d7ddffc3cfbb54ac6823dd7eded',1,'Hazelnp::ParamConstraint']]], + ['required_91',['required',['../structHazelnp_1_1ParamConstraint.html#a8ccf3ebecc2d9d0105e181814af2943c',1,'Hazelnp::ParamConstraint']]], + ['requiredtype_92',['requiredType',['../structHazelnp_1_1ParamConstraint.html#a203b6fd1b9788a529aa0f15fe94fd24a',1,'Hazelnp::ParamConstraint']]] ]; diff --git a/docs/search/all_d.js b/docs/search/all_d.js index de08d07..48b65a4 100644 --- a/docs/search/all_d.js +++ b/docs/search/all_d.js @@ -1,14 +1,14 @@ var searchData= [ - ['setbriefdescription_89',['SetBriefDescription',['../classHazelnp_1_1CmdArgsInterface.html#a67ba6cb3176884c85dd56fc9084ab66a',1,'Hazelnp::CmdArgsInterface']]], - ['setcatchhelp_90',['SetCatchHelp',['../classHazelnp_1_1CmdArgsInterface.html#abf553ed4acabf9e1db357715bc10533c',1,'Hazelnp::CmdArgsInterface']]], - ['setcrashonfail_91',['SetCrashOnFail',['../classHazelnp_1_1CmdArgsInterface.html#a16a3a02f77d240d8cf51cd4ee1797113',1,'Hazelnp::CmdArgsInterface']]], - ['splitstring_92',['SplitString',['../classHazelnp_1_1Internal_1_1StringTools.html#aaf3aae30ed06c37d18f79b8450061ad1',1,'Hazelnp::Internal::StringTools::SplitString(const std::string &str, const char delimiter)'],['../classHazelnp_1_1Internal_1_1StringTools.html#a8cb6e05d822c184a8e982327c01fdb03',1,'Hazelnp::Internal::StringTools::SplitString(const std::string &str, const std::string &delimiter)']]], - ['string_93',['STRING',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa63b588d5559f64f89a416e656880b949',1,'Hazelnp']]], - ['stringtools_94',['StringTools',['../classHazelnp_1_1Internal_1_1StringTools.html',1,'Hazelnp::Internal']]], - ['stringtools_2ecpp_95',['StringTools.cpp',['../StringTools_8cpp.html',1,'']]], - ['stringtools_2eh_96',['StringTools.h',['../StringTools_8h.html',1,'']]], - ['stringvalue_97',['StringValue',['../classHazelnp_1_1StringValue.html',1,'Hazelnp::StringValue'],['../classHazelnp_1_1StringValue.html#a24dad2deec92b51bf60a11400cc8c204',1,'Hazelnp::StringValue::StringValue()']]], - ['stringvalue_2ecpp_98',['StringValue.cpp',['../StringValue_8cpp.html',1,'']]], - ['stringvalue_2eh_99',['StringValue.h',['../StringValue_8h.html',1,'']]] + ['setbriefdescription_93',['SetBriefDescription',['../classHazelnp_1_1CmdArgsInterface.html#a67ba6cb3176884c85dd56fc9084ab66a',1,'Hazelnp::CmdArgsInterface']]], + ['setcatchhelp_94',['SetCatchHelp',['../classHazelnp_1_1CmdArgsInterface.html#abf553ed4acabf9e1db357715bc10533c',1,'Hazelnp::CmdArgsInterface']]], + ['setcrashonfail_95',['SetCrashOnFail',['../classHazelnp_1_1CmdArgsInterface.html#a16a3a02f77d240d8cf51cd4ee1797113',1,'Hazelnp::CmdArgsInterface']]], + ['splitstring_96',['SplitString',['../classHazelnp_1_1Internal_1_1StringTools.html#aaf3aae30ed06c37d18f79b8450061ad1',1,'Hazelnp::Internal::StringTools::SplitString(const std::string &str, const char delimiter)'],['../classHazelnp_1_1Internal_1_1StringTools.html#a8cb6e05d822c184a8e982327c01fdb03',1,'Hazelnp::Internal::StringTools::SplitString(const std::string &str, const std::string &delimiter)']]], + ['string_97',['STRING',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa63b588d5559f64f89a416e656880b949',1,'Hazelnp']]], + ['stringtools_98',['StringTools',['../classHazelnp_1_1Internal_1_1StringTools.html',1,'Hazelnp::Internal']]], + ['stringtools_2ecpp_99',['StringTools.cpp',['../StringTools_8cpp.html',1,'']]], + ['stringtools_2eh_100',['StringTools.h',['../StringTools_8h.html',1,'']]], + ['stringvalue_101',['StringValue',['../classHazelnp_1_1StringValue.html',1,'Hazelnp::StringValue'],['../classHazelnp_1_1StringValue.html#a24dad2deec92b51bf60a11400cc8c204',1,'Hazelnp::StringValue::StringValue()']]], + ['stringvalue_2ecpp_102',['StringValue.cpp',['../StringValue_8cpp.html',1,'']]], + ['stringvalue_2eh_103',['StringValue.h',['../StringValue_8h.html',1,'']]] ]; diff --git a/docs/search/all_e.js b/docs/search/all_e.js index 91dbee2..992b165 100644 --- a/docs/search/all_e.js +++ b/docs/search/all_e.js @@ -1,6 +1,6 @@ var searchData= [ - ['tolower_100',['ToLower',['../classHazelnp_1_1Internal_1_1StringTools.html#a10f61d7d8bcbfee50882bae801c0e68c',1,'Hazelnp::Internal::StringTools']]], - ['type_101',['type',['../classHazelnp_1_1Value.html#ae5760a30c237095db595c466372e3c23',1,'Hazelnp::Value']]], - ['typesafety_102',['TypeSafety',['../structHazelnp_1_1ParamConstraint.html#a7df61dbc8dbaff4bc596fdf2c0532d5b',1,'Hazelnp::ParamConstraint']]] + ['tolower_104',['ToLower',['../classHazelnp_1_1Internal_1_1StringTools.html#a10f61d7d8bcbfee50882bae801c0e68c',1,'Hazelnp::Internal::StringTools']]], + ['type_105',['type',['../classHazelnp_1_1Value.html#ae5760a30c237095db595c466372e3c23',1,'Hazelnp::Value']]], + ['typesafety_106',['TypeSafety',['../structHazelnp_1_1ParamConstraint.html#a7df61dbc8dbaff4bc596fdf2c0532d5b',1,'Hazelnp::ParamConstraint']]] ]; diff --git a/docs/search/all_f.js b/docs/search/all_f.js index 5977308..671cdaf 100644 --- a/docs/search/all_f.js +++ b/docs/search/all_f.js @@ -1,10 +1,11 @@ var searchData= [ - ['value_103',['Value',['../classHazelnp_1_1Value.html',1,'Hazelnp::Value'],['../classHazelnp_1_1Value.html#a8455d65bb2d939e850d6772dfbf8bfec',1,'Hazelnp::Value::Value()']]], - ['value_2ecpp_104',['Value.cpp',['../Value_8cpp.html',1,'']]], - ['value_2eh_105',['Value.h',['../Value_8h.html',1,'']]], - ['void_106',['VOID',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa6d0c9fc747131795e6e5d0c5119f12cb',1,'Hazelnp']]], - ['voidvalue_107',['VoidValue',['../classHazelnp_1_1VoidValue.html',1,'Hazelnp::VoidValue'],['../classHazelnp_1_1VoidValue.html#a75abf334b7f55cd149d2bb1962f2d8f1',1,'Hazelnp::VoidValue::VoidValue()']]], - ['voidvalue_2ecpp_108',['VoidValue.cpp',['../VoidValue_8cpp.html',1,'']]], - ['voidvalue_2eh_109',['VoidValue.h',['../VoidValue_8h.html',1,'']]] + ['value_107',['Value',['../classHazelnp_1_1Value.html',1,'Hazelnp::Value'],['../classHazelnp_1_1Value.html#a8455d65bb2d939e850d6772dfbf8bfec',1,'Hazelnp::Value::Value()']]], + ['value_2ecpp_108',['Value.cpp',['../Value_8cpp.html',1,'']]], + ['value_2eh_109',['Value.h',['../Value_8h.html',1,'']]], + ['version_2eh_110',['Version.h',['../Version_8h.html',1,'']]], + ['void_111',['VOID',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa6d0c9fc747131795e6e5d0c5119f12cb',1,'Hazelnp']]], + ['voidvalue_112',['VoidValue',['../classHazelnp_1_1VoidValue.html',1,'Hazelnp::VoidValue'],['../classHazelnp_1_1VoidValue.html#a75abf334b7f55cd149d2bb1962f2d8f1',1,'Hazelnp::VoidValue::VoidValue()']]], + ['voidvalue_2ecpp_113',['VoidValue.cpp',['../VoidValue_8cpp.html',1,'']]], + ['voidvalue_2eh_114',['VoidValue.h',['../VoidValue_8h.html',1,'']]] ]; diff --git a/docs/search/classes_0.js b/docs/search/classes_0.js index 03c410e..6fb5b87 100644 --- a/docs/search/classes_0.js +++ b/docs/search/classes_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['cmdargsinterface_119',['CmdArgsInterface',['../classHazelnp_1_1CmdArgsInterface.html',1,'Hazelnp']]] + ['cmdargsinterface_124',['CmdArgsInterface',['../classHazelnp_1_1CmdArgsInterface.html',1,'Hazelnp']]] ]; diff --git a/docs/search/classes_1.js b/docs/search/classes_1.js index 37a7664..f11c5f3 100644 --- a/docs/search/classes_1.js +++ b/docs/search/classes_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['floatvalue_120',['FloatValue',['../classHazelnp_1_1FloatValue.html',1,'Hazelnp']]] + ['floatvalue_125',['FloatValue',['../classHazelnp_1_1FloatValue.html',1,'Hazelnp']]] ]; diff --git a/docs/search/classes_2.js b/docs/search/classes_2.js index b7e3cff..10657b2 100644 --- a/docs/search/classes_2.js +++ b/docs/search/classes_2.js @@ -1,9 +1,10 @@ var searchData= [ - ['hazelnuppconstraintexception_121',['HazelnuppConstraintException',['../classHazelnp_1_1HazelnuppConstraintException.html',1,'Hazelnp']]], - ['hazelnuppconstraintmissingvalue_122',['HazelnuppConstraintMissingValue',['../classHazelnp_1_1HazelnuppConstraintMissingValue.html',1,'Hazelnp']]], - ['hazelnuppconstrainttypemissmatch_123',['HazelnuppConstraintTypeMissmatch',['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html',1,'Hazelnp']]], - ['hazelnuppexception_124',['HazelnuppException',['../classHazelnp_1_1HazelnuppException.html',1,'Hazelnp']]], - ['hazelnuppinvalidkeyexception_125',['HazelnuppInvalidKeyException',['../classHazelnp_1_1HazelnuppInvalidKeyException.html',1,'Hazelnp']]], - ['hazelnuppvaluenotconvertibleexception_126',['HazelnuppValueNotConvertibleException',['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html',1,'Hazelnp']]] + ['hazelnuppconstraintexception_126',['HazelnuppConstraintException',['../classHazelnp_1_1HazelnuppConstraintException.html',1,'Hazelnp']]], + ['hazelnuppconstraintincompatibleparameters_127',['HazelnuppConstraintIncompatibleParameters',['../classHazelnp_1_1HazelnuppConstraintIncompatibleParameters.html',1,'Hazelnp']]], + ['hazelnuppconstraintmissingvalue_128',['HazelnuppConstraintMissingValue',['../classHazelnp_1_1HazelnuppConstraintMissingValue.html',1,'Hazelnp']]], + ['hazelnuppconstrainttypemissmatch_129',['HazelnuppConstraintTypeMissmatch',['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html',1,'Hazelnp']]], + ['hazelnuppexception_130',['HazelnuppException',['../classHazelnp_1_1HazelnuppException.html',1,'Hazelnp']]], + ['hazelnuppinvalidkeyexception_131',['HazelnuppInvalidKeyException',['../classHazelnp_1_1HazelnuppInvalidKeyException.html',1,'Hazelnp']]], + ['hazelnuppvaluenotconvertibleexception_132',['HazelnuppValueNotConvertibleException',['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html',1,'Hazelnp']]] ]; diff --git a/docs/search/classes_3.js b/docs/search/classes_3.js index f02bcf7..1018705 100644 --- a/docs/search/classes_3.js +++ b/docs/search/classes_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['intvalue_127',['IntValue',['../classHazelnp_1_1IntValue.html',1,'Hazelnp']]] + ['intvalue_133',['IntValue',['../classHazelnp_1_1IntValue.html',1,'Hazelnp']]] ]; diff --git a/docs/search/classes_4.js b/docs/search/classes_4.js index 6a957d1..930ee9a 100644 --- a/docs/search/classes_4.js +++ b/docs/search/classes_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['listvalue_128',['ListValue',['../classHazelnp_1_1ListValue.html',1,'Hazelnp']]] + ['listvalue_134',['ListValue',['../classHazelnp_1_1ListValue.html',1,'Hazelnp']]] ]; diff --git a/docs/search/classes_5.js b/docs/search/classes_5.js index 6758c3e..f261d9b 100644 --- a/docs/search/classes_5.js +++ b/docs/search/classes_5.js @@ -1,5 +1,5 @@ var searchData= [ - ['paramconstraint_129',['ParamConstraint',['../structHazelnp_1_1ParamConstraint.html',1,'Hazelnp']]], - ['parameter_130',['Parameter',['../classHazelnp_1_1Parameter.html',1,'Hazelnp']]] + ['paramconstraint_135',['ParamConstraint',['../structHazelnp_1_1ParamConstraint.html',1,'Hazelnp']]], + ['parameter_136',['Parameter',['../classHazelnp_1_1Parameter.html',1,'Hazelnp']]] ]; diff --git a/docs/search/classes_6.js b/docs/search/classes_6.js index 2fbe838..994998b 100644 --- a/docs/search/classes_6.js +++ b/docs/search/classes_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['stringtools_131',['StringTools',['../classHazelnp_1_1Internal_1_1StringTools.html',1,'Hazelnp::Internal']]], - ['stringvalue_132',['StringValue',['../classHazelnp_1_1StringValue.html',1,'Hazelnp']]] + ['stringtools_137',['StringTools',['../classHazelnp_1_1Internal_1_1StringTools.html',1,'Hazelnp::Internal']]], + ['stringvalue_138',['StringValue',['../classHazelnp_1_1StringValue.html',1,'Hazelnp']]] ]; diff --git a/docs/search/classes_7.js b/docs/search/classes_7.js index e28cc7c..053e16d 100644 --- a/docs/search/classes_7.js +++ b/docs/search/classes_7.js @@ -1,5 +1,5 @@ var searchData= [ - ['value_133',['Value',['../classHazelnp_1_1Value.html',1,'Hazelnp']]], - ['voidvalue_134',['VoidValue',['../classHazelnp_1_1VoidValue.html',1,'Hazelnp']]] + ['value_139',['Value',['../classHazelnp_1_1Value.html',1,'Hazelnp']]], + ['voidvalue_140',['VoidValue',['../classHazelnp_1_1VoidValue.html',1,'Hazelnp']]] ]; diff --git a/docs/search/defines_0.js b/docs/search/defines_0.js index 6041d19..2ee2760 100644 --- a/docs/search/defines_0.js +++ b/docs/search/defines_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['c_5fify_237',['C_Ify',['../helper_8h.html#afb631a54ed93a93015e671fcbec7ac81',1,'helper.h']]] + ['hazelnupp_5fversion_263',['HAZELNUPP_VERSION',['../Version_8h.html#a5ade51e925f9cad08d64d4021c8312a0',1,'Version.h']]] ]; diff --git a/docs/search/enums_0.js b/docs/search/enums_0.js index 04a6ea2..ea05df6 100644 --- a/docs/search/enums_0.js +++ b/docs/search/enums_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['data_5ftype_245',['DATA_TYPE',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803f',1,'Hazelnp']]] + ['data_5ftype_255',['DATA_TYPE',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803f',1,'Hazelnp']]] ]; diff --git a/docs/search/enumvalues_0.js b/docs/search/enumvalues_0.js index 9e04d3c..6d7bd01 100644 --- a/docs/search/enumvalues_0.js +++ b/docs/search/enumvalues_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['float_246',['FLOAT',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fae738c26bf4ce1037fa81b039a915cbf6',1,'Hazelnp']]] + ['float_256',['FLOAT',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fae738c26bf4ce1037fa81b039a915cbf6',1,'Hazelnp']]] ]; diff --git a/docs/search/enumvalues_1.js b/docs/search/enumvalues_1.js index e392af2..bf96a19 100644 --- a/docs/search/enumvalues_1.js +++ b/docs/search/enumvalues_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['int_247',['INT',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa53f93baa3057821107c750323892fa92',1,'Hazelnp']]] + ['int_257',['INT',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa53f93baa3057821107c750323892fa92',1,'Hazelnp']]] ]; diff --git a/docs/search/enumvalues_2.js b/docs/search/enumvalues_2.js index edeb30e..92031f2 100644 --- a/docs/search/enumvalues_2.js +++ b/docs/search/enumvalues_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['list_248',['LIST',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa298cb25408234de02baf2085803a464a',1,'Hazelnp']]] + ['list_258',['LIST',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa298cb25408234de02baf2085803a464a',1,'Hazelnp']]] ]; diff --git a/docs/search/enumvalues_3.js b/docs/search/enumvalues_3.js index 81f34a1..9ad98ba 100644 --- a/docs/search/enumvalues_3.js +++ b/docs/search/enumvalues_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['string_249',['STRING',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa63b588d5559f64f89a416e656880b949',1,'Hazelnp']]] + ['string_259',['STRING',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa63b588d5559f64f89a416e656880b949',1,'Hazelnp']]] ]; diff --git a/docs/search/enumvalues_4.js b/docs/search/enumvalues_4.js index 35fa611..b0c53b7 100644 --- a/docs/search/enumvalues_4.js +++ b/docs/search/enumvalues_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['void_250',['VOID',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa6d0c9fc747131795e6e5d0c5119f12cb',1,'Hazelnp']]] + ['void_260',['VOID',['../namespaceHazelnp.html#a07b61ac22ce9cd97eceebdf9487f803fa6d0c9fc747131795e6e5d0c5119f12cb',1,'Hazelnp']]] ]; diff --git a/docs/search/files_0.js b/docs/search/files_0.js index 7564601..94ca31d 100644 --- a/docs/search/files_0.js +++ b/docs/search/files_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['cmdargsinterface_2ecpp_138',['CmdArgsInterface.cpp',['../CmdArgsInterface_8cpp.html',1,'']]], - ['cmdargsinterface_2eh_139',['CmdArgsInterface.h',['../CmdArgsInterface_8h.html',1,'']]] + ['cmdargsinterface_2ecpp_144',['CmdArgsInterface.cpp',['../CmdArgsInterface_8cpp.html',1,'']]], + ['cmdargsinterface_2eh_145',['CmdArgsInterface.h',['../CmdArgsInterface_8h.html',1,'']]] ]; diff --git a/docs/search/files_1.js b/docs/search/files_1.js index 2a6bcc6..0ade363 100644 --- a/docs/search/files_1.js +++ b/docs/search/files_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['datatype_2eh_140',['DataType.h',['../DataType_8h.html',1,'']]] + ['datatype_2eh_146',['DataType.h',['../DataType_8h.html',1,'']]] ]; diff --git a/docs/search/files_2.js b/docs/search/files_2.js index 46c1b38..4ebe7cf 100644 --- a/docs/search/files_2.js +++ b/docs/search/files_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['floatvalue_2ecpp_141',['FloatValue.cpp',['../FloatValue_8cpp.html',1,'']]], - ['floatvalue_2eh_142',['FloatValue.h',['../FloatValue_8h.html',1,'']]] + ['floatvalue_2ecpp_147',['FloatValue.cpp',['../FloatValue_8cpp.html',1,'']]], + ['floatvalue_2eh_148',['FloatValue.h',['../FloatValue_8h.html',1,'']]] ]; diff --git a/docs/search/files_3.js b/docs/search/files_3.js index bc1fb93..7f17fcc 100644 --- a/docs/search/files_3.js +++ b/docs/search/files_3.js @@ -1,5 +1,5 @@ var searchData= [ - ['hazelnupp_2evcxproj_2efilelistabsolute_2etxt_143',['Hazelnupp.vcxproj.FileListAbsolute.txt',['../Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)'],['../Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)']]], - ['hazelnuppexception_2eh_144',['HazelnuppException.h',['../HazelnuppException_8h.html',1,'']]] + ['hazelnupp_2evcxproj_2efilelistabsolute_2etxt_149',['Hazelnupp.vcxproj.FileListAbsolute.txt',['../Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)'],['../Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)']]], + ['hazelnuppexception_2eh_150',['HazelnuppException.h',['../HazelnuppException_8h.html',1,'']]] ]; diff --git a/docs/search/files_4.js b/docs/search/files_4.js index bfd6c4c..584662b 100644 --- a/docs/search/files_4.js +++ b/docs/search/files_4.js @@ -1,6 +1,6 @@ var searchData= [ - ['index_2emd_145',['index.md',['../index_8md.html',1,'']]], - ['intvalue_2ecpp_146',['IntValue.cpp',['../IntValue_8cpp.html',1,'']]], - ['intvalue_2eh_147',['IntValue.h',['../IntValue_8h.html',1,'']]] + ['index_2emd_151',['index.md',['../index_8md.html',1,'']]], + ['intvalue_2ecpp_152',['IntValue.cpp',['../IntValue_8cpp.html',1,'']]], + ['intvalue_2eh_153',['IntValue.h',['../IntValue_8h.html',1,'']]] ]; diff --git a/docs/search/files_5.js b/docs/search/files_5.js index 4e124a5..54fb4b6 100644 --- a/docs/search/files_5.js +++ b/docs/search/files_5.js @@ -1,5 +1,5 @@ var searchData= [ - ['listvalue_2ecpp_148',['ListValue.cpp',['../ListValue_8cpp.html',1,'']]], - ['listvalue_2eh_149',['ListValue.h',['../ListValue_8h.html',1,'']]] + ['listvalue_2ecpp_154',['ListValue.cpp',['../ListValue_8cpp.html',1,'']]], + ['listvalue_2eh_155',['ListValue.h',['../ListValue_8h.html',1,'']]] ]; diff --git a/docs/search/files_6.js b/docs/search/files_6.js index 1786ea5..4aa7264 100644 --- a/docs/search/files_6.js +++ b/docs/search/files_6.js @@ -1,7 +1,7 @@ var searchData= [ - ['paramconstraint_2eh_150',['ParamConstraint.h',['../ParamConstraint_8h.html',1,'']]], - ['parameter_2ecpp_151',['Parameter.cpp',['../Parameter_8cpp.html',1,'']]], - ['parameter_2eh_152',['Parameter.h',['../Parameter_8h.html',1,'']]], - ['placeholders_2eh_153',['Placeholders.h',['../Placeholders_8h.html',1,'']]] + ['paramconstraint_2eh_156',['ParamConstraint.h',['../ParamConstraint_8h.html',1,'']]], + ['parameter_2ecpp_157',['Parameter.cpp',['../Parameter_8cpp.html',1,'']]], + ['parameter_2eh_158',['Parameter.h',['../Parameter_8h.html',1,'']]], + ['placeholders_2eh_159',['Placeholders.h',['../Placeholders_8h.html',1,'']]] ]; diff --git a/docs/search/files_7.js b/docs/search/files_7.js index a7fec03..9249c5a 100644 --- a/docs/search/files_7.js +++ b/docs/search/files_7.js @@ -1,7 +1,7 @@ var searchData= [ - ['stringtools_2ecpp_154',['StringTools.cpp',['../StringTools_8cpp.html',1,'']]], - ['stringtools_2eh_155',['StringTools.h',['../StringTools_8h.html',1,'']]], - ['stringvalue_2ecpp_156',['StringValue.cpp',['../StringValue_8cpp.html',1,'']]], - ['stringvalue_2eh_157',['StringValue.h',['../StringValue_8h.html',1,'']]] + ['stringtools_2ecpp_160',['StringTools.cpp',['../StringTools_8cpp.html',1,'']]], + ['stringtools_2eh_161',['StringTools.h',['../StringTools_8h.html',1,'']]], + ['stringvalue_2ecpp_162',['StringValue.cpp',['../StringValue_8cpp.html',1,'']]], + ['stringvalue_2eh_163',['StringValue.h',['../StringValue_8h.html',1,'']]] ]; diff --git a/docs/search/files_8.js b/docs/search/files_8.js index f23792e..b5deb07 100644 --- a/docs/search/files_8.js +++ b/docs/search/files_8.js @@ -1,7 +1,8 @@ var searchData= [ - ['value_2ecpp_158',['Value.cpp',['../Value_8cpp.html',1,'']]], - ['value_2eh_159',['Value.h',['../Value_8h.html',1,'']]], - ['voidvalue_2ecpp_160',['VoidValue.cpp',['../VoidValue_8cpp.html',1,'']]], - ['voidvalue_2eh_161',['VoidValue.h',['../VoidValue_8h.html',1,'']]] + ['value_2ecpp_164',['Value.cpp',['../Value_8cpp.html',1,'']]], + ['value_2eh_165',['Value.h',['../Value_8h.html',1,'']]], + ['version_2eh_166',['Version.h',['../Version_8h.html',1,'']]], + ['voidvalue_2ecpp_167',['VoidValue.cpp',['../VoidValue_8cpp.html',1,'']]], + ['voidvalue_2eh_168',['VoidValue.h',['../VoidValue_8h.html',1,'']]] ]; diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js index 7545802..3f8c4d1 100644 --- a/docs/search/functions_0.js +++ b/docs/search/functions_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['addvalue_162',['AddValue',['../classHazelnp_1_1ListValue.html#af8787d266aa353d3f96e2c76cce76c41',1,'Hazelnp::ListValue']]] + ['addvalue_169',['AddValue',['../classHazelnp_1_1ListValue.html#af8787d266aa353d3f96e2c76cce76c41',1,'Hazelnp::ListValue']]] ]; diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js index 7e9f5f4..e438052 100644 --- a/docs/search/functions_1.js +++ b/docs/search/functions_1.js @@ -1,11 +1,11 @@ var searchData= [ - ['clearabbreviation_163',['ClearAbbreviation',['../classHazelnp_1_1CmdArgsInterface.html#a31f690bd95d5469d38af816183cbe3e7',1,'Hazelnp::CmdArgsInterface']]], - ['clearabbreviations_164',['ClearAbbreviations',['../classHazelnp_1_1CmdArgsInterface.html#a019e48f48427e7caa76c964bd0f117d0',1,'Hazelnp::CmdArgsInterface']]], - ['clearconstraint_165',['ClearConstraint',['../classHazelnp_1_1CmdArgsInterface.html#a112d2d5e3fd1cf1507592389c8454984',1,'Hazelnp::CmdArgsInterface']]], - ['clearconstraints_166',['ClearConstraints',['../classHazelnp_1_1CmdArgsInterface.html#ad472671fb12450b8d929418fbbffbe40',1,'Hazelnp::CmdArgsInterface']]], - ['cleardescription_167',['ClearDescription',['../classHazelnp_1_1CmdArgsInterface.html#a62889ce1faa90d0f20be3ae45803baa0',1,'Hazelnp::CmdArgsInterface']]], - ['cleardescriptions_168',['ClearDescriptions',['../classHazelnp_1_1CmdArgsInterface.html#a328dbc265e7ffa9ab526ed8aa755e107',1,'Hazelnp::CmdArgsInterface']]], - ['cmdargsinterface_169',['CmdArgsInterface',['../classHazelnp_1_1CmdArgsInterface.html#aa1189c249bf0d8a4fbd5fb8f03a30212',1,'Hazelnp::CmdArgsInterface::CmdArgsInterface()'],['../classHazelnp_1_1CmdArgsInterface.html#ad79ff83ead06900eb7b45d6c563703d9',1,'Hazelnp::CmdArgsInterface::CmdArgsInterface(const int argc, const char *const *argv)']]], - ['contains_170',['Contains',['../classHazelnp_1_1Internal_1_1StringTools.html#a4f1ff9fb44995407ea45b8c7c67ffeb6',1,'Hazelnp::Internal::StringTools']]] + ['clearabbreviation_170',['ClearAbbreviation',['../classHazelnp_1_1CmdArgsInterface.html#a31f690bd95d5469d38af816183cbe3e7',1,'Hazelnp::CmdArgsInterface']]], + ['clearabbreviations_171',['ClearAbbreviations',['../classHazelnp_1_1CmdArgsInterface.html#a019e48f48427e7caa76c964bd0f117d0',1,'Hazelnp::CmdArgsInterface']]], + ['clearconstraint_172',['ClearConstraint',['../classHazelnp_1_1CmdArgsInterface.html#a112d2d5e3fd1cf1507592389c8454984',1,'Hazelnp::CmdArgsInterface']]], + ['clearconstraints_173',['ClearConstraints',['../classHazelnp_1_1CmdArgsInterface.html#ad472671fb12450b8d929418fbbffbe40',1,'Hazelnp::CmdArgsInterface']]], + ['cleardescription_174',['ClearDescription',['../classHazelnp_1_1CmdArgsInterface.html#a62889ce1faa90d0f20be3ae45803baa0',1,'Hazelnp::CmdArgsInterface']]], + ['cleardescriptions_175',['ClearDescriptions',['../classHazelnp_1_1CmdArgsInterface.html#a328dbc265e7ffa9ab526ed8aa755e107',1,'Hazelnp::CmdArgsInterface']]], + ['cmdargsinterface_176',['CmdArgsInterface',['../classHazelnp_1_1CmdArgsInterface.html#aa1189c249bf0d8a4fbd5fb8f03a30212',1,'Hazelnp::CmdArgsInterface::CmdArgsInterface()'],['../classHazelnp_1_1CmdArgsInterface.html#ad79ff83ead06900eb7b45d6c563703d9',1,'Hazelnp::CmdArgsInterface::CmdArgsInterface(const int argc, const char *const *argv)']]], + ['contains_177',['Contains',['../classHazelnp_1_1Internal_1_1StringTools.html#a4f1ff9fb44995407ea45b8c7c67ffeb6',1,'Hazelnp::Internal::StringTools']]] ]; diff --git a/docs/search/functions_10.js b/docs/search/functions_10.js index 0651ed5..db0bc48 100644 --- a/docs/search/functions_10.js +++ b/docs/search/functions_10.js @@ -1,11 +1,11 @@ var searchData= [ - ['_7ecmdargsinterface_230',['~CmdArgsInterface',['../classHazelnp_1_1CmdArgsInterface.html#aadc75b3b6c9662cfbd4a936468d50466',1,'Hazelnp::CmdArgsInterface']]], - ['_7efloatvalue_231',['~FloatValue',['../classHazelnp_1_1FloatValue.html#a02e61e453c3e8e32d4d527799c11fd4a',1,'Hazelnp::FloatValue']]], - ['_7eintvalue_232',['~IntValue',['../classHazelnp_1_1IntValue.html#af69f25847b0666f9d6c1bb1fed18d917',1,'Hazelnp::IntValue']]], - ['_7elistvalue_233',['~ListValue',['../classHazelnp_1_1ListValue.html#a91f1450f299d46b3301774a6b4eb6c18',1,'Hazelnp::ListValue']]], - ['_7eparameter_234',['~Parameter',['../classHazelnp_1_1Parameter.html#a6e2ade42a712f1d3675653329266e42d',1,'Hazelnp::Parameter']]], - ['_7estringvalue_235',['~StringValue',['../classHazelnp_1_1StringValue.html#a5176062e2110d121466a6855fdc65d6d',1,'Hazelnp::StringValue']]], - ['_7evalue_236',['~Value',['../classHazelnp_1_1Value.html#a977dea61ee5b00b6c6d77ad6ad2c8d4c',1,'Hazelnp::Value']]], - ['_7evoidvalue_237',['~VoidValue',['../classHazelnp_1_1VoidValue.html#a6024b40919c3a6acea92be0439be2db0',1,'Hazelnp::VoidValue']]] + ['_7ecmdargsinterface_239',['~CmdArgsInterface',['../classHazelnp_1_1CmdArgsInterface.html#aadc75b3b6c9662cfbd4a936468d50466',1,'Hazelnp::CmdArgsInterface']]], + ['_7efloatvalue_240',['~FloatValue',['../classHazelnp_1_1FloatValue.html#a02e61e453c3e8e32d4d527799c11fd4a',1,'Hazelnp::FloatValue']]], + ['_7eintvalue_241',['~IntValue',['../classHazelnp_1_1IntValue.html#af69f25847b0666f9d6c1bb1fed18d917',1,'Hazelnp::IntValue']]], + ['_7elistvalue_242',['~ListValue',['../classHazelnp_1_1ListValue.html#a91f1450f299d46b3301774a6b4eb6c18',1,'Hazelnp::ListValue']]], + ['_7eparameter_243',['~Parameter',['../classHazelnp_1_1Parameter.html#a6e2ade42a712f1d3675653329266e42d',1,'Hazelnp::Parameter']]], + ['_7estringvalue_244',['~StringValue',['../classHazelnp_1_1StringValue.html#a5176062e2110d121466a6855fdc65d6d',1,'Hazelnp::StringValue']]], + ['_7evalue_245',['~Value',['../classHazelnp_1_1Value.html#a977dea61ee5b00b6c6d77ad6ad2c8d4c',1,'Hazelnp::Value']]], + ['_7evoidvalue_246',['~VoidValue',['../classHazelnp_1_1VoidValue.html#a6024b40919c3a6acea92be0439be2db0',1,'Hazelnp::VoidValue']]] ]; diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js index abf5c3a..45c7f9b 100644 --- a/docs/search/functions_2.js +++ b/docs/search/functions_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['datatypetostring_171',['DataTypeToString',['../namespaceHazelnp.html#a7fb1e5ad9e2ecb6c0025beb19f11621b',1,'Hazelnp']]], - ['deepcopy_172',['Deepcopy',['../classHazelnp_1_1FloatValue.html#ab071916339a0d5a266d821ebbc8f12b0',1,'Hazelnp::FloatValue::Deepcopy()'],['../classHazelnp_1_1IntValue.html#aa599004242b27f8f3e246b88742b034e',1,'Hazelnp::IntValue::Deepcopy()'],['../classHazelnp_1_1ListValue.html#a51c89ff315026b03d908345c6f58169d',1,'Hazelnp::ListValue::Deepcopy()'],['../classHazelnp_1_1StringValue.html#a1952487a786fb53cb0b9aefdb3367268',1,'Hazelnp::StringValue::Deepcopy()'],['../classHazelnp_1_1Value.html#aec9bc16f1630734c79bc69e916622dc6',1,'Hazelnp::Value::Deepcopy()'],['../classHazelnp_1_1VoidValue.html#ac36e85add840057659ec24484548165f',1,'Hazelnp::VoidValue::Deepcopy()']]] + ['datatypetostring_178',['DataTypeToString',['../namespaceHazelnp.html#a7fb1e5ad9e2ecb6c0025beb19f11621b',1,'Hazelnp']]], + ['deepcopy_179',['Deepcopy',['../classHazelnp_1_1FloatValue.html#ab071916339a0d5a266d821ebbc8f12b0',1,'Hazelnp::FloatValue::Deepcopy()'],['../classHazelnp_1_1IntValue.html#aa599004242b27f8f3e246b88742b034e',1,'Hazelnp::IntValue::Deepcopy()'],['../classHazelnp_1_1ListValue.html#a51c89ff315026b03d908345c6f58169d',1,'Hazelnp::ListValue::Deepcopy()'],['../classHazelnp_1_1StringValue.html#a1952487a786fb53cb0b9aefdb3367268',1,'Hazelnp::StringValue::Deepcopy()'],['../classHazelnp_1_1Value.html#aec9bc16f1630734c79bc69e916622dc6',1,'Hazelnp::Value::Deepcopy()'],['../classHazelnp_1_1VoidValue.html#ac36e85add840057659ec24484548165f',1,'Hazelnp::VoidValue::Deepcopy()']]] ]; diff --git a/docs/search/functions_3.js b/docs/search/functions_3.js index a9c1686..f724f3f 100644 --- a/docs/search/functions_3.js +++ b/docs/search/functions_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['floatvalue_173',['FloatValue',['../classHazelnp_1_1FloatValue.html#a6bb35564e3331a3feb57b08caad0df44',1,'Hazelnp::FloatValue']]] + ['floatvalue_180',['FloatValue',['../classHazelnp_1_1FloatValue.html#a6bb35564e3331a3feb57b08caad0df44',1,'Hazelnp::FloatValue']]] ]; diff --git a/docs/search/functions_4.js b/docs/search/functions_4.js index 85b3f72..7d94824 100644 --- a/docs/search/functions_4.js +++ b/docs/search/functions_4.js @@ -1,20 +1,20 @@ var searchData= [ - ['generatedocumentation_174',['GenerateDocumentation',['../classHazelnp_1_1CmdArgsInterface.html#a9b9bc5c4443799ea847077e9cefb1927',1,'Hazelnp::CmdArgsInterface']]], - ['getabbreviation_175',['GetAbbreviation',['../classHazelnp_1_1CmdArgsInterface.html#a1486bfef870e6502aefc23b11ce6caaf',1,'Hazelnp::CmdArgsInterface']]], - ['getasosstring_176',['GetAsOsString',['../classHazelnp_1_1FloatValue.html#a6c9a4b70a7618252f56d9062c483531c',1,'Hazelnp::FloatValue::GetAsOsString()'],['../classHazelnp_1_1IntValue.html#a7d7dbda9a051084600d3eabdac96ee45',1,'Hazelnp::IntValue::GetAsOsString()'],['../classHazelnp_1_1ListValue.html#a5b1f8af329e48c5469fee16634b7889c',1,'Hazelnp::ListValue::GetAsOsString()'],['../classHazelnp_1_1StringValue.html#a71869ee46b88a3cbb9571f481f0c216d',1,'Hazelnp::StringValue::GetAsOsString()'],['../classHazelnp_1_1Value.html#ae1fdc694ed1c2b3080ad3929efda0a0e',1,'Hazelnp::Value::GetAsOsString()'],['../classHazelnp_1_1VoidValue.html#a44b1917d9ba41ee91e2131432e01ec90',1,'Hazelnp::VoidValue::GetAsOsString()']]], - ['getbriefdescription_177',['GetBriefDescription',['../classHazelnp_1_1CmdArgsInterface.html#a1945208a97707b2e3c654424f0760441',1,'Hazelnp::CmdArgsInterface']]], - ['getcatchhelp_178',['GetCatchHelp',['../classHazelnp_1_1CmdArgsInterface.html#a1026d98c23659b6d3d108b231806a1e3',1,'Hazelnp::CmdArgsInterface']]], - ['getconstraint_179',['GetConstraint',['../classHazelnp_1_1CmdArgsInterface.html#adec82884377a5193f68dcc7b6ef69d8b',1,'Hazelnp::CmdArgsInterface']]], - ['getcrashonfail_180',['GetCrashOnFail',['../classHazelnp_1_1CmdArgsInterface.html#a3e60c7a90c11bdc634d0f5d0dba5064c',1,'Hazelnp::CmdArgsInterface']]], - ['getdatatype_181',['GetDataType',['../classHazelnp_1_1Value.html#adbb80bf6d455a316e6e5103353429993',1,'Hazelnp::Value']]], - ['getdescription_182',['GetDescription',['../classHazelnp_1_1CmdArgsInterface.html#a89bc3f54d7ff0740549dbdf7b7f727e3',1,'Hazelnp::CmdArgsInterface']]], - ['getexecutablename_183',['GetExecutableName',['../classHazelnp_1_1CmdArgsInterface.html#afe83a815b21d37b3d2a6d0ef67137faf',1,'Hazelnp::CmdArgsInterface']]], - ['getfloat32_184',['GetFloat32',['../classHazelnp_1_1FloatValue.html#a1653ab3f4fa1700cf1b618ac6552ea81',1,'Hazelnp::FloatValue::GetFloat32()'],['../classHazelnp_1_1IntValue.html#ad0734e4cf67bac0bcc58251a4b3e56c4',1,'Hazelnp::IntValue::GetFloat32()'],['../classHazelnp_1_1ListValue.html#a637fec02ed7f7325554e494fc7cd4e86',1,'Hazelnp::ListValue::GetFloat32()'],['../classHazelnp_1_1StringValue.html#a31fc4d2517a7454c1e9f329df2f14be7',1,'Hazelnp::StringValue::GetFloat32()'],['../classHazelnp_1_1Value.html#a64eeb2943ccea6e16ce4e6f53a6e9b6d',1,'Hazelnp::Value::GetFloat32()'],['../classHazelnp_1_1VoidValue.html#a6d39d2983e54e1a407c66e303273aa48',1,'Hazelnp::VoidValue::GetFloat32()']]], - ['getfloat64_185',['GetFloat64',['../classHazelnp_1_1FloatValue.html#add33b370ef691ccb2f0957d0fe4ef6f9',1,'Hazelnp::FloatValue::GetFloat64()'],['../classHazelnp_1_1IntValue.html#a5ceb2030e8a2a665953fdd4f1715e6a5',1,'Hazelnp::IntValue::GetFloat64()'],['../classHazelnp_1_1ListValue.html#a571178db1c9d23f6c685ea8898dbb60e',1,'Hazelnp::ListValue::GetFloat64()'],['../classHazelnp_1_1StringValue.html#a74bedb828c901a4895062f62303b9653',1,'Hazelnp::StringValue::GetFloat64()'],['../classHazelnp_1_1Value.html#af645b9d78970d102360be37fc18e9e8a',1,'Hazelnp::Value::GetFloat64()'],['../classHazelnp_1_1VoidValue.html#a18b6f0d697c5f9286372a05927e4759c',1,'Hazelnp::VoidValue::GetFloat64()']]], - ['getint32_186',['GetInt32',['../classHazelnp_1_1FloatValue.html#a565741e80cd99a4d2af861ddc3c2dc99',1,'Hazelnp::FloatValue::GetInt32()'],['../classHazelnp_1_1IntValue.html#a163f21536fa49491aa0ae03c8091344a',1,'Hazelnp::IntValue::GetInt32()'],['../classHazelnp_1_1ListValue.html#a565c2b86fcfb3a13de29e59d95a358e7',1,'Hazelnp::ListValue::GetInt32()'],['../classHazelnp_1_1StringValue.html#ac8b53a7792ff1ed048722e2e404f3e6b',1,'Hazelnp::StringValue::GetInt32()'],['../classHazelnp_1_1Value.html#a2cb73333bdeca657dfbf6c8b2e50a5ef',1,'Hazelnp::Value::GetInt32()'],['../classHazelnp_1_1VoidValue.html#a5b7f50c390ef8f3636ba211a72a78065',1,'Hazelnp::VoidValue::GetInt32()']]], - ['getint64_187',['GetInt64',['../classHazelnp_1_1FloatValue.html#a762520d504d4564c48cf3bbefbb0f183',1,'Hazelnp::FloatValue::GetInt64()'],['../classHazelnp_1_1IntValue.html#ae0643023dfd56eafe2e3da5a4ba13080',1,'Hazelnp::IntValue::GetInt64()'],['../classHazelnp_1_1ListValue.html#a9a7a1161ddeb3e56eaafee5f10f75995',1,'Hazelnp::ListValue::GetInt64()'],['../classHazelnp_1_1StringValue.html#aabdc7d681945403d24df6a8fe27948af',1,'Hazelnp::StringValue::GetInt64()'],['../classHazelnp_1_1Value.html#a92d75905211e964cb900bdc868ed12a7',1,'Hazelnp::Value::GetInt64()'],['../classHazelnp_1_1VoidValue.html#a3806945596866f3630dc5426a6b55e58',1,'Hazelnp::VoidValue::GetInt64()']]], - ['getlist_188',['GetList',['../classHazelnp_1_1FloatValue.html#a60b2698f28f1aacac0b67b6453c89fd1',1,'Hazelnp::FloatValue::GetList()'],['../classHazelnp_1_1IntValue.html#acc74ba6070a516a4bcad10bb113d6fa2',1,'Hazelnp::IntValue::GetList()'],['../classHazelnp_1_1ListValue.html#ad578d9088c0375cd9b9c6658e5d9ba1f',1,'Hazelnp::ListValue::GetList()'],['../classHazelnp_1_1StringValue.html#a2b2810350b5eb7e58062ad095320aa69',1,'Hazelnp::StringValue::GetList()'],['../classHazelnp_1_1Value.html#a358092f951e817cd2a878225b5b1c869',1,'Hazelnp::Value::GetList()'],['../classHazelnp_1_1VoidValue.html#aba53ae37d415959b583f33f3e381be16',1,'Hazelnp::VoidValue::GetList()']]], - ['getstring_189',['GetString',['../classHazelnp_1_1FloatValue.html#afd5d078683f410cb9d450c61f12f250d',1,'Hazelnp::FloatValue::GetString()'],['../classHazelnp_1_1IntValue.html#a3631e3b16f010889e942c0c0f72d403c',1,'Hazelnp::IntValue::GetString()'],['../classHazelnp_1_1ListValue.html#aeaf80c07236045a77d72349ebcfc3b89',1,'Hazelnp::ListValue::GetString()'],['../classHazelnp_1_1StringValue.html#a7ed55493cfd25274f8571c1ea45f93e5',1,'Hazelnp::StringValue::GetString()'],['../classHazelnp_1_1Value.html#a1446705c062026f03866d0f452c39501',1,'Hazelnp::Value::GetString()'],['../classHazelnp_1_1VoidValue.html#a5af0c47a873b84226df47a90e63b2acd',1,'Hazelnp::VoidValue::GetString()']]], - ['getvalue_190',['GetValue',['../classHazelnp_1_1FloatValue.html#a2ad79d8bfe75e45120d1fce132a89b8f',1,'Hazelnp::FloatValue::GetValue()'],['../classHazelnp_1_1IntValue.html#a89967cafbdeb21362336067b772808c7',1,'Hazelnp::IntValue::GetValue()'],['../classHazelnp_1_1ListValue.html#a7907ae7433e4011157f1b31dd5339702',1,'Hazelnp::ListValue::GetValue()'],['../classHazelnp_1_1Parameter.html#a4ab8ba022bde4a0175e5ceb8e3a598af',1,'Hazelnp::Parameter::GetValue()'],['../classHazelnp_1_1StringValue.html#a521a573887a3f31718f74e71ff01e86e',1,'Hazelnp::StringValue::GetValue()']]] + ['generatedocumentation_181',['GenerateDocumentation',['../classHazelnp_1_1CmdArgsInterface.html#a9b9bc5c4443799ea847077e9cefb1927',1,'Hazelnp::CmdArgsInterface']]], + ['getabbreviation_182',['GetAbbreviation',['../classHazelnp_1_1CmdArgsInterface.html#a1486bfef870e6502aefc23b11ce6caaf',1,'Hazelnp::CmdArgsInterface']]], + ['getasosstring_183',['GetAsOsString',['../classHazelnp_1_1FloatValue.html#a6c9a4b70a7618252f56d9062c483531c',1,'Hazelnp::FloatValue::GetAsOsString()'],['../classHazelnp_1_1IntValue.html#a7d7dbda9a051084600d3eabdac96ee45',1,'Hazelnp::IntValue::GetAsOsString()'],['../classHazelnp_1_1ListValue.html#a5b1f8af329e48c5469fee16634b7889c',1,'Hazelnp::ListValue::GetAsOsString()'],['../classHazelnp_1_1StringValue.html#a71869ee46b88a3cbb9571f481f0c216d',1,'Hazelnp::StringValue::GetAsOsString()'],['../classHazelnp_1_1Value.html#ae1fdc694ed1c2b3080ad3929efda0a0e',1,'Hazelnp::Value::GetAsOsString()'],['../classHazelnp_1_1VoidValue.html#a44b1917d9ba41ee91e2131432e01ec90',1,'Hazelnp::VoidValue::GetAsOsString()']]], + ['getbriefdescription_184',['GetBriefDescription',['../classHazelnp_1_1CmdArgsInterface.html#a1945208a97707b2e3c654424f0760441',1,'Hazelnp::CmdArgsInterface']]], + ['getcatchhelp_185',['GetCatchHelp',['../classHazelnp_1_1CmdArgsInterface.html#a1026d98c23659b6d3d108b231806a1e3',1,'Hazelnp::CmdArgsInterface']]], + ['getconstraint_186',['GetConstraint',['../classHazelnp_1_1CmdArgsInterface.html#adec82884377a5193f68dcc7b6ef69d8b',1,'Hazelnp::CmdArgsInterface']]], + ['getcrashonfail_187',['GetCrashOnFail',['../classHazelnp_1_1CmdArgsInterface.html#a3e60c7a90c11bdc634d0f5d0dba5064c',1,'Hazelnp::CmdArgsInterface']]], + ['getdatatype_188',['GetDataType',['../classHazelnp_1_1Value.html#adbb80bf6d455a316e6e5103353429993',1,'Hazelnp::Value']]], + ['getdescription_189',['GetDescription',['../classHazelnp_1_1CmdArgsInterface.html#a89bc3f54d7ff0740549dbdf7b7f727e3',1,'Hazelnp::CmdArgsInterface']]], + ['getexecutablename_190',['GetExecutableName',['../classHazelnp_1_1CmdArgsInterface.html#afe83a815b21d37b3d2a6d0ef67137faf',1,'Hazelnp::CmdArgsInterface']]], + ['getfloat32_191',['GetFloat32',['../classHazelnp_1_1FloatValue.html#a1653ab3f4fa1700cf1b618ac6552ea81',1,'Hazelnp::FloatValue::GetFloat32()'],['../classHazelnp_1_1IntValue.html#ad0734e4cf67bac0bcc58251a4b3e56c4',1,'Hazelnp::IntValue::GetFloat32()'],['../classHazelnp_1_1ListValue.html#a637fec02ed7f7325554e494fc7cd4e86',1,'Hazelnp::ListValue::GetFloat32()'],['../classHazelnp_1_1StringValue.html#a31fc4d2517a7454c1e9f329df2f14be7',1,'Hazelnp::StringValue::GetFloat32()'],['../classHazelnp_1_1Value.html#a64eeb2943ccea6e16ce4e6f53a6e9b6d',1,'Hazelnp::Value::GetFloat32()'],['../classHazelnp_1_1VoidValue.html#a6d39d2983e54e1a407c66e303273aa48',1,'Hazelnp::VoidValue::GetFloat32()']]], + ['getfloat64_192',['GetFloat64',['../classHazelnp_1_1FloatValue.html#add33b370ef691ccb2f0957d0fe4ef6f9',1,'Hazelnp::FloatValue::GetFloat64()'],['../classHazelnp_1_1IntValue.html#a5ceb2030e8a2a665953fdd4f1715e6a5',1,'Hazelnp::IntValue::GetFloat64()'],['../classHazelnp_1_1ListValue.html#a571178db1c9d23f6c685ea8898dbb60e',1,'Hazelnp::ListValue::GetFloat64()'],['../classHazelnp_1_1StringValue.html#a74bedb828c901a4895062f62303b9653',1,'Hazelnp::StringValue::GetFloat64()'],['../classHazelnp_1_1Value.html#af645b9d78970d102360be37fc18e9e8a',1,'Hazelnp::Value::GetFloat64()'],['../classHazelnp_1_1VoidValue.html#a18b6f0d697c5f9286372a05927e4759c',1,'Hazelnp::VoidValue::GetFloat64()']]], + ['getint32_193',['GetInt32',['../classHazelnp_1_1FloatValue.html#a565741e80cd99a4d2af861ddc3c2dc99',1,'Hazelnp::FloatValue::GetInt32()'],['../classHazelnp_1_1IntValue.html#a163f21536fa49491aa0ae03c8091344a',1,'Hazelnp::IntValue::GetInt32()'],['../classHazelnp_1_1ListValue.html#a565c2b86fcfb3a13de29e59d95a358e7',1,'Hazelnp::ListValue::GetInt32()'],['../classHazelnp_1_1StringValue.html#ac8b53a7792ff1ed048722e2e404f3e6b',1,'Hazelnp::StringValue::GetInt32()'],['../classHazelnp_1_1Value.html#a2cb73333bdeca657dfbf6c8b2e50a5ef',1,'Hazelnp::Value::GetInt32()'],['../classHazelnp_1_1VoidValue.html#a5b7f50c390ef8f3636ba211a72a78065',1,'Hazelnp::VoidValue::GetInt32()']]], + ['getint64_194',['GetInt64',['../classHazelnp_1_1FloatValue.html#a762520d504d4564c48cf3bbefbb0f183',1,'Hazelnp::FloatValue::GetInt64()'],['../classHazelnp_1_1IntValue.html#ae0643023dfd56eafe2e3da5a4ba13080',1,'Hazelnp::IntValue::GetInt64()'],['../classHazelnp_1_1ListValue.html#a9a7a1161ddeb3e56eaafee5f10f75995',1,'Hazelnp::ListValue::GetInt64()'],['../classHazelnp_1_1StringValue.html#aabdc7d681945403d24df6a8fe27948af',1,'Hazelnp::StringValue::GetInt64()'],['../classHazelnp_1_1Value.html#a92d75905211e964cb900bdc868ed12a7',1,'Hazelnp::Value::GetInt64()'],['../classHazelnp_1_1VoidValue.html#a3806945596866f3630dc5426a6b55e58',1,'Hazelnp::VoidValue::GetInt64()']]], + ['getlist_195',['GetList',['../classHazelnp_1_1FloatValue.html#a60b2698f28f1aacac0b67b6453c89fd1',1,'Hazelnp::FloatValue::GetList()'],['../classHazelnp_1_1IntValue.html#acc74ba6070a516a4bcad10bb113d6fa2',1,'Hazelnp::IntValue::GetList()'],['../classHazelnp_1_1ListValue.html#ad578d9088c0375cd9b9c6658e5d9ba1f',1,'Hazelnp::ListValue::GetList()'],['../classHazelnp_1_1StringValue.html#a2b2810350b5eb7e58062ad095320aa69',1,'Hazelnp::StringValue::GetList()'],['../classHazelnp_1_1Value.html#a358092f951e817cd2a878225b5b1c869',1,'Hazelnp::Value::GetList()'],['../classHazelnp_1_1VoidValue.html#aba53ae37d415959b583f33f3e381be16',1,'Hazelnp::VoidValue::GetList()']]], + ['getstring_196',['GetString',['../classHazelnp_1_1FloatValue.html#afd5d078683f410cb9d450c61f12f250d',1,'Hazelnp::FloatValue::GetString()'],['../classHazelnp_1_1IntValue.html#a3631e3b16f010889e942c0c0f72d403c',1,'Hazelnp::IntValue::GetString()'],['../classHazelnp_1_1ListValue.html#aeaf80c07236045a77d72349ebcfc3b89',1,'Hazelnp::ListValue::GetString()'],['../classHazelnp_1_1StringValue.html#a7ed55493cfd25274f8571c1ea45f93e5',1,'Hazelnp::StringValue::GetString()'],['../classHazelnp_1_1Value.html#a1446705c062026f03866d0f452c39501',1,'Hazelnp::Value::GetString()'],['../classHazelnp_1_1VoidValue.html#a5af0c47a873b84226df47a90e63b2acd',1,'Hazelnp::VoidValue::GetString()']]], + ['getvalue_197',['GetValue',['../classHazelnp_1_1FloatValue.html#a2ad79d8bfe75e45120d1fce132a89b8f',1,'Hazelnp::FloatValue::GetValue()'],['../classHazelnp_1_1IntValue.html#a89967cafbdeb21362336067b772808c7',1,'Hazelnp::IntValue::GetValue()'],['../classHazelnp_1_1ListValue.html#a7907ae7433e4011157f1b31dd5339702',1,'Hazelnp::ListValue::GetValue()'],['../classHazelnp_1_1Parameter.html#a4ab8ba022bde4a0175e5ceb8e3a598af',1,'Hazelnp::Parameter::GetValue()'],['../classHazelnp_1_1StringValue.html#a521a573887a3f31718f74e71ff01e86e',1,'Hazelnp::StringValue::GetValue()']]] ]; diff --git a/docs/search/functions_5.js b/docs/search/functions_5.js index 979e05e..230a680 100644 --- a/docs/search/functions_5.js +++ b/docs/search/functions_5.js @@ -1,12 +1,13 @@ var searchData= [ - ['hasabbreviation_191',['HasAbbreviation',['../classHazelnp_1_1CmdArgsInterface.html#a58b81709e631cee5f3db3f3f48611fe9',1,'Hazelnp::CmdArgsInterface']]], - ['hasdescription_192',['HasDescription',['../classHazelnp_1_1CmdArgsInterface.html#a5003f826ee31c6365bf4b6e8b2c8d9f1',1,'Hazelnp::CmdArgsInterface']]], - ['hasparam_193',['HasParam',['../classHazelnp_1_1CmdArgsInterface.html#a3a7fa36fe69ee8bf3b400983a21ecd24',1,'Hazelnp::CmdArgsInterface']]], - ['hazelnuppconstraintexception_194',['HazelnuppConstraintException',['../classHazelnp_1_1HazelnuppConstraintException.html#a4d08002a96bf9b3da3c6e931a51960e9',1,'Hazelnp::HazelnuppConstraintException::HazelnuppConstraintException()'],['../classHazelnp_1_1HazelnuppConstraintException.html#a944f0e6a384e032a762c5892964e1cc0',1,'Hazelnp::HazelnuppConstraintException::HazelnuppConstraintException(const std::string &msg)']]], - ['hazelnuppconstraintmissingvalue_195',['HazelnuppConstraintMissingValue',['../classHazelnp_1_1HazelnuppConstraintMissingValue.html#aad4a7b5573790ddfbe1a453aef71eb10',1,'Hazelnp::HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue()'],['../classHazelnp_1_1HazelnuppConstraintMissingValue.html#a192ef8133047beadf8fc9f585d384c04',1,'Hazelnp::HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue(const std::string &key, const std::string &paramDescription="")']]], - ['hazelnuppconstrainttypemissmatch_196',['HazelnuppConstraintTypeMissmatch',['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#ab7c9e9afd9d3286e563a7656785242e8',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch()'],['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#a603d91c9af39e53b54e5aa288266cfe4',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch(const std::string &msg)'],['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#abd5ae6630884725b614e8fe603cccdc5',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch(const std::string &key, const DATA_TYPE requiredType, const DATA_TYPE actualType, const std::string &paramDescription="")']]], - ['hazelnuppexception_197',['HazelnuppException',['../classHazelnp_1_1HazelnuppException.html#a0b21fd5d4f22e5e677b74eb0acd7c6ff',1,'Hazelnp::HazelnuppException::HazelnuppException()'],['../classHazelnp_1_1HazelnuppException.html#a816f823fe2ebd35076049e33b9f3c05c',1,'Hazelnp::HazelnuppException::HazelnuppException(const std::string &msg)']]], - ['hazelnuppinvalidkeyexception_198',['HazelnuppInvalidKeyException',['../classHazelnp_1_1HazelnuppInvalidKeyException.html#ab23be8f7cb84129fa85ed1e7a0b280a0',1,'Hazelnp::HazelnuppInvalidKeyException::HazelnuppInvalidKeyException()'],['../classHazelnp_1_1HazelnuppInvalidKeyException.html#a18a08dc4efe80a378216460db5769891',1,'Hazelnp::HazelnuppInvalidKeyException::HazelnuppInvalidKeyException(const std::string &msg)']]], - ['hazelnuppvaluenotconvertibleexception_199',['HazelnuppValueNotConvertibleException',['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html#a0babee1bb5cec9fdd4abfd86995561f4',1,'Hazelnp::HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException()'],['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html#a7ba376cd7fc7edcb934ee0257d4867f2',1,'Hazelnp::HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException(const std::string &msg)']]] + ['hasabbreviation_198',['HasAbbreviation',['../classHazelnp_1_1CmdArgsInterface.html#a58b81709e631cee5f3db3f3f48611fe9',1,'Hazelnp::CmdArgsInterface']]], + ['hasdescription_199',['HasDescription',['../classHazelnp_1_1CmdArgsInterface.html#a5003f826ee31c6365bf4b6e8b2c8d9f1',1,'Hazelnp::CmdArgsInterface']]], + ['hasparam_200',['HasParam',['../classHazelnp_1_1CmdArgsInterface.html#a3a7fa36fe69ee8bf3b400983a21ecd24',1,'Hazelnp::CmdArgsInterface']]], + ['hazelnuppconstraintexception_201',['HazelnuppConstraintException',['../classHazelnp_1_1HazelnuppConstraintException.html#a4d08002a96bf9b3da3c6e931a51960e9',1,'Hazelnp::HazelnuppConstraintException::HazelnuppConstraintException()'],['../classHazelnp_1_1HazelnuppConstraintException.html#a944f0e6a384e032a762c5892964e1cc0',1,'Hazelnp::HazelnuppConstraintException::HazelnuppConstraintException(const std::string &msg)']]], + ['hazelnuppconstraintincompatibleparameters_202',['HazelnuppConstraintIncompatibleParameters',['../classHazelnp_1_1HazelnuppConstraintIncompatibleParameters.html#a3eceb69d0d4794252ab41b0d2b22ef3d',1,'Hazelnp::HazelnuppConstraintIncompatibleParameters::HazelnuppConstraintIncompatibleParameters()'],['../classHazelnp_1_1HazelnuppConstraintIncompatibleParameters.html#ad9427954049ceb66f42130ac8476dc46',1,'Hazelnp::HazelnuppConstraintIncompatibleParameters::HazelnuppConstraintIncompatibleParameters(const std::string &key1, const std::string &key2)']]], + ['hazelnuppconstraintmissingvalue_203',['HazelnuppConstraintMissingValue',['../classHazelnp_1_1HazelnuppConstraintMissingValue.html#aad4a7b5573790ddfbe1a453aef71eb10',1,'Hazelnp::HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue()'],['../classHazelnp_1_1HazelnuppConstraintMissingValue.html#a192ef8133047beadf8fc9f585d384c04',1,'Hazelnp::HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue(const std::string &key, const std::string &paramDescription="")']]], + ['hazelnuppconstrainttypemissmatch_204',['HazelnuppConstraintTypeMissmatch',['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#ab7c9e9afd9d3286e563a7656785242e8',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch()'],['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#a603d91c9af39e53b54e5aa288266cfe4',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch(const std::string &msg)'],['../classHazelnp_1_1HazelnuppConstraintTypeMissmatch.html#abd5ae6630884725b614e8fe603cccdc5',1,'Hazelnp::HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch(const std::string &key, const DATA_TYPE requiredType, const DATA_TYPE actualType, const std::string &paramDescription="")']]], + ['hazelnuppexception_205',['HazelnuppException',['../classHazelnp_1_1HazelnuppException.html#a0b21fd5d4f22e5e677b74eb0acd7c6ff',1,'Hazelnp::HazelnuppException::HazelnuppException()'],['../classHazelnp_1_1HazelnuppException.html#a816f823fe2ebd35076049e33b9f3c05c',1,'Hazelnp::HazelnuppException::HazelnuppException(const std::string &msg)']]], + ['hazelnuppinvalidkeyexception_206',['HazelnuppInvalidKeyException',['../classHazelnp_1_1HazelnuppInvalidKeyException.html#ab23be8f7cb84129fa85ed1e7a0b280a0',1,'Hazelnp::HazelnuppInvalidKeyException::HazelnuppInvalidKeyException()'],['../classHazelnp_1_1HazelnuppInvalidKeyException.html#a18a08dc4efe80a378216460db5769891',1,'Hazelnp::HazelnuppInvalidKeyException::HazelnuppInvalidKeyException(const std::string &msg)']]], + ['hazelnuppvaluenotconvertibleexception_207',['HazelnuppValueNotConvertibleException',['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html#a0babee1bb5cec9fdd4abfd86995561f4',1,'Hazelnp::HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException()'],['../classHazelnp_1_1HazelnuppValueNotConvertibleException.html#a7ba376cd7fc7edcb934ee0257d4867f2',1,'Hazelnp::HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException(const std::string &msg)']]] ]; diff --git a/docs/search/functions_6.js b/docs/search/functions_6.js index e2bd2d3..ad90193 100644 --- a/docs/search/functions_6.js +++ b/docs/search/functions_6.js @@ -1,5 +1,6 @@ var searchData= [ - ['intvalue_200',['IntValue',['../classHazelnp_1_1IntValue.html#ac1174f807ce2c085f5a24baed4e3c1ba',1,'Hazelnp::IntValue']]], - ['isnumeric_201',['IsNumeric',['../classHazelnp_1_1Internal_1_1StringTools.html#a1abf1454a223165acfb52f2a246c8215',1,'Hazelnp::Internal::StringTools']]] + ['incompatibility_208',['Incompatibility',['../structHazelnp_1_1ParamConstraint.html#a20fa41460106b5327a51114f8a187871',1,'Hazelnp::ParamConstraint::Incompatibility(const std::initializer_list< std::string > &incompatibleParameters)'],['../structHazelnp_1_1ParamConstraint.html#a6bb383f8945fb99cbd2370fd9a4bc6fc',1,'Hazelnp::ParamConstraint::Incompatibility(const std::string &incompatibleParameters)']]], + ['intvalue_209',['IntValue',['../classHazelnp_1_1IntValue.html#ac1174f807ce2c085f5a24baed4e3c1ba',1,'Hazelnp::IntValue']]], + ['isnumeric_210',['IsNumeric',['../classHazelnp_1_1Internal_1_1StringTools.html#a1abf1454a223165acfb52f2a246c8215',1,'Hazelnp::Internal::StringTools']]] ]; diff --git a/docs/search/functions_7.js b/docs/search/functions_7.js index 6d11dd8..552e361 100644 --- a/docs/search/functions_7.js +++ b/docs/search/functions_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['key_202',['Key',['../classHazelnp_1_1Parameter.html#a7acd68ce06eec06ab286b1a062f9c8d6',1,'Hazelnp::Parameter']]] + ['key_211',['Key',['../classHazelnp_1_1Parameter.html#a7acd68ce06eec06ab286b1a062f9c8d6',1,'Hazelnp::Parameter']]] ]; diff --git a/docs/search/functions_8.js b/docs/search/functions_8.js index c308dad..2a64cab 100644 --- a/docs/search/functions_8.js +++ b/docs/search/functions_8.js @@ -1,4 +1,4 @@ var searchData= [ - ['listvalue_203',['ListValue',['../classHazelnp_1_1ListValue.html#a6082aaa506b31496720a168da8ab2708',1,'Hazelnp::ListValue']]] + ['listvalue_212',['ListValue',['../classHazelnp_1_1ListValue.html#a6082aaa506b31496720a168da8ab2708',1,'Hazelnp::ListValue']]] ]; diff --git a/docs/search/functions_9.js b/docs/search/functions_9.js index 6d6ce63..410d63a 100644 --- a/docs/search/functions_9.js +++ b/docs/search/functions_9.js @@ -1,10 +1,10 @@ var searchData= [ - ['operator_20double_204',['operator double',['../classHazelnp_1_1FloatValue.html#ae02de376bbb2b76e0f9d16b1fc4de06d',1,'Hazelnp::FloatValue']]], - ['operator_20int_205',['operator int',['../classHazelnp_1_1IntValue.html#ab30a38c8f58cefd7cbf365c4aeae79bd',1,'Hazelnp::IntValue']]], - ['operator_20long_20double_206',['operator long double',['../classHazelnp_1_1FloatValue.html#ad0d4c589190fbab7e6c4d8fcc130ac1b',1,'Hazelnp::FloatValue']]], - ['operator_20long_20long_20int_207',['operator long long int',['../classHazelnp_1_1IntValue.html#a45b283dae9904ad0643035d3ee5883eb',1,'Hazelnp::IntValue']]], - ['operator_5b_5d_208',['operator[]',['../classHazelnp_1_1CmdArgsInterface.html#af5e43c1067fb6c1074d9be3427c7a415',1,'Hazelnp::CmdArgsInterface']]], - ['string_209',['string',['../classHazelnp_1_1StringValue.html#a23449775f14f828d29b115de040a696b',1,'Hazelnp::StringValue']]], - ['vector_3c_20value_20_2a_20_3e_210',['vector< Value * >',['../classHazelnp_1_1ListValue.html#a5d92ff2b9a1fa92fbc303ac4d07765d0',1,'Hazelnp::ListValue']]] + ['operator_20double_213',['operator double',['../classHazelnp_1_1FloatValue.html#ae02de376bbb2b76e0f9d16b1fc4de06d',1,'Hazelnp::FloatValue']]], + ['operator_20int_214',['operator int',['../classHazelnp_1_1IntValue.html#ab30a38c8f58cefd7cbf365c4aeae79bd',1,'Hazelnp::IntValue']]], + ['operator_20long_20double_215',['operator long double',['../classHazelnp_1_1FloatValue.html#ad0d4c589190fbab7e6c4d8fcc130ac1b',1,'Hazelnp::FloatValue']]], + ['operator_20long_20long_20int_216',['operator long long int',['../classHazelnp_1_1IntValue.html#a45b283dae9904ad0643035d3ee5883eb',1,'Hazelnp::IntValue']]], + ['operator_5b_5d_217',['operator[]',['../classHazelnp_1_1CmdArgsInterface.html#af5e43c1067fb6c1074d9be3427c7a415',1,'Hazelnp::CmdArgsInterface']]], + ['string_218',['string',['../classHazelnp_1_1StringValue.html#a23449775f14f828d29b115de040a696b',1,'Hazelnp::StringValue']]], + ['vector_3c_20value_20_2a_20_3e_219',['vector< Value * >',['../classHazelnp_1_1ListValue.html#a5d92ff2b9a1fa92fbc303ac4d07765d0',1,'Hazelnp::ListValue']]] ]; diff --git a/docs/search/functions_a.js b/docs/search/functions_a.js index 1c3b8f0..e6d3b0c 100644 --- a/docs/search/functions_a.js +++ b/docs/search/functions_a.js @@ -1,7 +1,7 @@ var searchData= [ - ['paramconstraint_211',['ParamConstraint',['../structHazelnp_1_1ParamConstraint.html#afa9e1b4378c9fa1b4a7b5b792c062cbe',1,'Hazelnp::ParamConstraint::ParamConstraint()=default'],['../structHazelnp_1_1ParamConstraint.html#af261299848888fb106f5ba3b4c5a72ba',1,'Hazelnp::ParamConstraint::ParamConstraint(bool constrainType, DATA_TYPE requiredType, const std::vector< std::string > &defaultValue, bool required)']]], - ['parameter_212',['Parameter',['../classHazelnp_1_1Parameter.html#a0c9faefc26cc9d8c886ef71e39e2f90c',1,'Hazelnp::Parameter']]], - ['parse_213',['Parse',['../classHazelnp_1_1CmdArgsInterface.html#a1f4845041e08b3335510de44fafaee19',1,'Hazelnp::CmdArgsInterface']]], - ['parsenumber_214',['ParseNumber',['../classHazelnp_1_1Internal_1_1StringTools.html#a3cc71bfffcad9a4334e74aac69dbfd68',1,'Hazelnp::Internal::StringTools']]] + ['paramconstraint_220',['ParamConstraint',['../structHazelnp_1_1ParamConstraint.html#afa9e1b4378c9fa1b4a7b5b792c062cbe',1,'Hazelnp::ParamConstraint::ParamConstraint()=default'],['../structHazelnp_1_1ParamConstraint.html#aea39497a14939fa887c236ee1e755cb3',1,'Hazelnp::ParamConstraint::ParamConstraint(bool constrainType, DATA_TYPE requiredType, const std::initializer_list< std::string > &defaultValue, bool required, const std::initializer_list< std::string > &incompatibleParameters)']]], + ['parameter_221',['Parameter',['../classHazelnp_1_1Parameter.html#a0c9faefc26cc9d8c886ef71e39e2f90c',1,'Hazelnp::Parameter']]], + ['parse_222',['Parse',['../classHazelnp_1_1CmdArgsInterface.html#a1f4845041e08b3335510de44fafaee19',1,'Hazelnp::CmdArgsInterface']]], + ['parsenumber_223',['ParseNumber',['../classHazelnp_1_1Internal_1_1StringTools.html#a3cc71bfffcad9a4334e74aac69dbfd68',1,'Hazelnp::Internal::StringTools']]] ]; diff --git a/docs/search/functions_b.js b/docs/search/functions_b.js index a8d6f8c..2c3f2ba 100644 --- a/docs/search/functions_b.js +++ b/docs/search/functions_b.js @@ -1,8 +1,8 @@ var searchData= [ - ['registerabbreviation_215',['RegisterAbbreviation',['../classHazelnp_1_1CmdArgsInterface.html#aaccf591a74408aeb4363033fe8cb2224',1,'Hazelnp::CmdArgsInterface']]], - ['registerconstraint_216',['RegisterConstraint',['../classHazelnp_1_1CmdArgsInterface.html#aa30222df012f357455f90e3620346bb2',1,'Hazelnp::CmdArgsInterface']]], - ['registerdescription_217',['RegisterDescription',['../classHazelnp_1_1CmdArgsInterface.html#a6589d2e818ba32f2a3e5b5a6a5e2bf1e',1,'Hazelnp::CmdArgsInterface']]], - ['replace_218',['Replace',['../classHazelnp_1_1Internal_1_1StringTools.html#ac45f8b6d0572443e9d2597447091b000',1,'Hazelnp::Internal::StringTools::Replace(const std::string &str, const char find, const std::string &subst)'],['../classHazelnp_1_1Internal_1_1StringTools.html#afaebf388806c331db0757231b0366fd7',1,'Hazelnp::Internal::StringTools::Replace(const std::string &str, const std::string &find, const std::string &subst)']]], - ['require_219',['Require',['../structHazelnp_1_1ParamConstraint.html#a926e12fcb2fd0d031452c4bcc950bd6c',1,'Hazelnp::ParamConstraint']]] + ['registerabbreviation_224',['RegisterAbbreviation',['../classHazelnp_1_1CmdArgsInterface.html#aaccf591a74408aeb4363033fe8cb2224',1,'Hazelnp::CmdArgsInterface']]], + ['registerconstraint_225',['RegisterConstraint',['../classHazelnp_1_1CmdArgsInterface.html#aa30222df012f357455f90e3620346bb2',1,'Hazelnp::CmdArgsInterface']]], + ['registerdescription_226',['RegisterDescription',['../classHazelnp_1_1CmdArgsInterface.html#a6589d2e818ba32f2a3e5b5a6a5e2bf1e',1,'Hazelnp::CmdArgsInterface']]], + ['replace_227',['Replace',['../classHazelnp_1_1Internal_1_1StringTools.html#ac45f8b6d0572443e9d2597447091b000',1,'Hazelnp::Internal::StringTools::Replace(const std::string &str, const char find, const std::string &subst)'],['../classHazelnp_1_1Internal_1_1StringTools.html#afaebf388806c331db0757231b0366fd7',1,'Hazelnp::Internal::StringTools::Replace(const std::string &str, const std::string &find, const std::string &subst)']]], + ['require_228',['Require',['../structHazelnp_1_1ParamConstraint.html#a8a7e5d7ddffc3cfbb54ac6823dd7eded',1,'Hazelnp::ParamConstraint']]] ]; diff --git a/docs/search/functions_c.js b/docs/search/functions_c.js index 6c1ab97..472c7ea 100644 --- a/docs/search/functions_c.js +++ b/docs/search/functions_c.js @@ -1,8 +1,8 @@ var searchData= [ - ['setbriefdescription_220',['SetBriefDescription',['../classHazelnp_1_1CmdArgsInterface.html#a67ba6cb3176884c85dd56fc9084ab66a',1,'Hazelnp::CmdArgsInterface']]], - ['setcatchhelp_221',['SetCatchHelp',['../classHazelnp_1_1CmdArgsInterface.html#abf553ed4acabf9e1db357715bc10533c',1,'Hazelnp::CmdArgsInterface']]], - ['setcrashonfail_222',['SetCrashOnFail',['../classHazelnp_1_1CmdArgsInterface.html#a16a3a02f77d240d8cf51cd4ee1797113',1,'Hazelnp::CmdArgsInterface']]], - ['splitstring_223',['SplitString',['../classHazelnp_1_1Internal_1_1StringTools.html#aaf3aae30ed06c37d18f79b8450061ad1',1,'Hazelnp::Internal::StringTools::SplitString(const std::string &str, const char delimiter)'],['../classHazelnp_1_1Internal_1_1StringTools.html#a8cb6e05d822c184a8e982327c01fdb03',1,'Hazelnp::Internal::StringTools::SplitString(const std::string &str, const std::string &delimiter)']]], - ['stringvalue_224',['StringValue',['../classHazelnp_1_1StringValue.html#a24dad2deec92b51bf60a11400cc8c204',1,'Hazelnp::StringValue']]] + ['setbriefdescription_229',['SetBriefDescription',['../classHazelnp_1_1CmdArgsInterface.html#a67ba6cb3176884c85dd56fc9084ab66a',1,'Hazelnp::CmdArgsInterface']]], + ['setcatchhelp_230',['SetCatchHelp',['../classHazelnp_1_1CmdArgsInterface.html#abf553ed4acabf9e1db357715bc10533c',1,'Hazelnp::CmdArgsInterface']]], + ['setcrashonfail_231',['SetCrashOnFail',['../classHazelnp_1_1CmdArgsInterface.html#a16a3a02f77d240d8cf51cd4ee1797113',1,'Hazelnp::CmdArgsInterface']]], + ['splitstring_232',['SplitString',['../classHazelnp_1_1Internal_1_1StringTools.html#aaf3aae30ed06c37d18f79b8450061ad1',1,'Hazelnp::Internal::StringTools::SplitString(const std::string &str, const char delimiter)'],['../classHazelnp_1_1Internal_1_1StringTools.html#a8cb6e05d822c184a8e982327c01fdb03',1,'Hazelnp::Internal::StringTools::SplitString(const std::string &str, const std::string &delimiter)']]], + ['stringvalue_233',['StringValue',['../classHazelnp_1_1StringValue.html#a24dad2deec92b51bf60a11400cc8c204',1,'Hazelnp::StringValue']]] ]; diff --git a/docs/search/functions_d.js b/docs/search/functions_d.js index d9ab56a..04d0fed 100644 --- a/docs/search/functions_d.js +++ b/docs/search/functions_d.js @@ -1,5 +1,5 @@ var searchData= [ - ['tolower_225',['ToLower',['../classHazelnp_1_1Internal_1_1StringTools.html#a10f61d7d8bcbfee50882bae801c0e68c',1,'Hazelnp::Internal::StringTools']]], - ['typesafety_226',['TypeSafety',['../structHazelnp_1_1ParamConstraint.html#a7df61dbc8dbaff4bc596fdf2c0532d5b',1,'Hazelnp::ParamConstraint']]] + ['tolower_234',['ToLower',['../classHazelnp_1_1Internal_1_1StringTools.html#a10f61d7d8bcbfee50882bae801c0e68c',1,'Hazelnp::Internal::StringTools']]], + ['typesafety_235',['TypeSafety',['../structHazelnp_1_1ParamConstraint.html#a7df61dbc8dbaff4bc596fdf2c0532d5b',1,'Hazelnp::ParamConstraint']]] ]; diff --git a/docs/search/functions_e.js b/docs/search/functions_e.js index 11d9d65..e288c45 100644 --- a/docs/search/functions_e.js +++ b/docs/search/functions_e.js @@ -1,5 +1,5 @@ var searchData= [ - ['value_227',['Value',['../classHazelnp_1_1Value.html#a8455d65bb2d939e850d6772dfbf8bfec',1,'Hazelnp::Value']]], - ['voidvalue_228',['VoidValue',['../classHazelnp_1_1VoidValue.html#a75abf334b7f55cd149d2bb1962f2d8f1',1,'Hazelnp::VoidValue']]] + ['value_236',['Value',['../classHazelnp_1_1Value.html#a8455d65bb2d939e850d6772dfbf8bfec',1,'Hazelnp::Value']]], + ['voidvalue_237',['VoidValue',['../classHazelnp_1_1VoidValue.html#a75abf334b7f55cd149d2bb1962f2d8f1',1,'Hazelnp::VoidValue']]] ]; diff --git a/docs/search/functions_f.js b/docs/search/functions_f.js index 8ca6514..587ca06 100644 --- a/docs/search/functions_f.js +++ b/docs/search/functions_f.js @@ -1,4 +1,4 @@ var searchData= [ - ['what_229',['What',['../classHazelnp_1_1HazelnuppException.html#aa86c415a0f2b4ea5f11892145d1ea83e',1,'Hazelnp::HazelnuppException']]] + ['what_238',['What',['../classHazelnp_1_1HazelnuppException.html#aa86c415a0f2b4ea5f11892145d1ea83e',1,'Hazelnp::HazelnuppException']]] ]; diff --git a/docs/search/namespaces_0.js b/docs/search/namespaces_0.js index ce9e79d..f726d81 100644 --- a/docs/search/namespaces_0.js +++ b/docs/search/namespaces_0.js @@ -1,6 +1,6 @@ var searchData= [ - ['hazelnp_135',['Hazelnp',['../namespaceHazelnp.html',1,'']]], - ['internal_136',['Internal',['../namespaceHazelnp_1_1Internal.html',1,'Hazelnp']]], - ['placeholders_137',['Placeholders',['../namespaceHazelnp_1_1Placeholders.html',1,'Hazelnp']]] + ['hazelnp_141',['Hazelnp',['../namespaceHazelnp.html',1,'']]], + ['internal_142',['Internal',['../namespaceHazelnp_1_1Internal.html',1,'Hazelnp']]], + ['placeholders_143',['Placeholders',['../namespaceHazelnp_1_1Placeholders.html',1,'Hazelnp']]] ]; diff --git a/docs/search/pages_0.js b/docs/search/pages_0.js index 0da1bf2..a84c9c1 100644 --- a/docs/search/pages_0.js +++ b/docs/search/pages_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['hazelnupp_253',['Hazelnupp',['../index.html',1,'']]] + ['hazelnupp_264',['Hazelnupp',['../index.html',1,'']]] ]; diff --git a/docs/search/related_0.js b/docs/search/related_0.js index b23d230..94eda18 100644 --- a/docs/search/related_0.js +++ b/docs/search/related_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['cmdargsinterface_251',['CmdArgsInterface',['../structHazelnp_1_1ParamConstraint.html#a01773a2aa9845fd639f63468586b67b0',1,'Hazelnp::ParamConstraint']]] + ['cmdargsinterface_261',['CmdArgsInterface',['../structHazelnp_1_1ParamConstraint.html#a01773a2aa9845fd639f63468586b67b0',1,'Hazelnp::ParamConstraint']]] ]; diff --git a/docs/search/related_1.js b/docs/search/related_1.js index 7625507..a1823dc 100644 --- a/docs/search/related_1.js +++ b/docs/search/related_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['operator_3c_3c_252',['operator<<',['../classHazelnp_1_1Parameter.html#a11b3529badcbf99b46262772472495c7',1,'Hazelnp::Parameter::operator<<()'],['../classHazelnp_1_1Value.html#ad29db86c4a2dec5bc8d0006031b07211',1,'Hazelnp::Value::operator<<()']]] + ['operator_3c_3c_262',['operator<<',['../classHazelnp_1_1Parameter.html#a11b3529badcbf99b46262772472495c7',1,'Hazelnp::Parameter::operator<<()'],['../classHazelnp_1_1Value.html#ad29db86c4a2dec5bc8d0006031b07211',1,'Hazelnp::Value::operator<<()']]] ]; diff --git a/docs/search/searchdata.js b/docs/search/searchdata.js index f645ed0..744d451 100644 --- a/docs/search/searchdata.js +++ b/docs/search/searchdata.js @@ -5,11 +5,12 @@ var indexSectionsWithContent = 2: "h", 3: "cdfhilpsv", 4: "acdfghikloprstvw~", - 5: "cdgmrt", + 5: "cdgimrt", 6: "d", 7: "filsv", 8: "co", - 9: "h" + 9: "h", + 10: "h" }; var indexSectionNames = @@ -23,7 +24,8 @@ var indexSectionNames = 6: "enums", 7: "enumvalues", 8: "related", - 9: "pages" + 9: "defines", + 10: "pages" }; var indexSectionLabels = @@ -37,6 +39,7 @@ var indexSectionLabels = 6: "Enumerations", 7: "Enumerator", 8: "Friends", - 9: "Pages" + 9: "Macros", + 10: "Pages" }; diff --git a/docs/search/variables_0.js b/docs/search/variables_0.js index d431e4c..d9268da 100644 --- a/docs/search/variables_0.js +++ b/docs/search/variables_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['constraintype_238',['constrainType',['../structHazelnp_1_1ParamConstraint.html#a88a4a4c215723259c71853992d09acac',1,'Hazelnp::ParamConstraint']]] + ['constraintype_247',['constrainType',['../structHazelnp_1_1ParamConstraint.html#a88a4a4c215723259c71853992d09acac',1,'Hazelnp::ParamConstraint']]] ]; diff --git a/docs/search/variables_1.js b/docs/search/variables_1.js index a7549f5..5abad8b 100644 --- a/docs/search/variables_1.js +++ b/docs/search/variables_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['defaultvalue_239',['defaultValue',['../structHazelnp_1_1ParamConstraint.html#a1d3a627b3a23fe0db3a368e51dbcd5a7',1,'Hazelnp::ParamConstraint']]] + ['defaultvalue_248',['defaultValue',['../structHazelnp_1_1ParamConstraint.html#a1d3a627b3a23fe0db3a368e51dbcd5a7',1,'Hazelnp::ParamConstraint']]] ]; diff --git a/docs/search/variables_2.js b/docs/search/variables_2.js index 8506ec1..9413561 100644 --- a/docs/search/variables_2.js +++ b/docs/search/variables_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['g_5femptystring_240',['g_emptyString',['../namespaceHazelnp_1_1Placeholders.html#a90536f0cd5261b18da736e954c6b8b79',1,'Hazelnp::Placeholders']]] + ['g_5femptystring_249',['g_emptyString',['../namespaceHazelnp_1_1Placeholders.html#a90536f0cd5261b18da736e954c6b8b79',1,'Hazelnp::Placeholders']]] ]; diff --git a/docs/search/variables_3.js b/docs/search/variables_3.js index dbff33a..a71d2bb 100644 --- a/docs/search/variables_3.js +++ b/docs/search/variables_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['message_241',['message',['../classHazelnp_1_1HazelnuppException.html#aa905cabcd12f542dfc67638732737e88',1,'Hazelnp::HazelnuppException']]] + ['incompatibleparameters_250',['incompatibleParameters',['../structHazelnp_1_1ParamConstraint.html#acf45734665238b51483f77701039108c',1,'Hazelnp::ParamConstraint']]] ]; diff --git a/docs/search/variables_4.js b/docs/search/variables_4.js index 8c1df84..d355068 100644 --- a/docs/search/variables_4.js +++ b/docs/search/variables_4.js @@ -1,5 +1,4 @@ var searchData= [ - ['required_242',['required',['../structHazelnp_1_1ParamConstraint.html#a8ccf3ebecc2d9d0105e181814af2943c',1,'Hazelnp::ParamConstraint']]], - ['requiredtype_243',['requiredType',['../structHazelnp_1_1ParamConstraint.html#a203b6fd1b9788a529aa0f15fe94fd24a',1,'Hazelnp::ParamConstraint']]] + ['message_251',['message',['../classHazelnp_1_1HazelnuppException.html#aa905cabcd12f542dfc67638732737e88',1,'Hazelnp::HazelnuppException']]] ]; diff --git a/docs/search/variables_5.js b/docs/search/variables_5.js index a2878cb..2d7b184 100644 --- a/docs/search/variables_5.js +++ b/docs/search/variables_5.js @@ -1,4 +1,5 @@ var searchData= [ - ['type_244',['type',['../classHazelnp_1_1Value.html#ae5760a30c237095db595c466372e3c23',1,'Hazelnp::Value']]] + ['required_252',['required',['../structHazelnp_1_1ParamConstraint.html#a8ccf3ebecc2d9d0105e181814af2943c',1,'Hazelnp::ParamConstraint']]], + ['requiredtype_253',['requiredType',['../structHazelnp_1_1ParamConstraint.html#a203b6fd1b9788a529aa0f15fe94fd24a',1,'Hazelnp::ParamConstraint']]] ]; diff --git a/docs/search/variables_6.js b/docs/search/variables_6.js index 0446eee..486c3de 100644 --- a/docs/search/variables_6.js +++ b/docs/search/variables_6.js @@ -1,4 +1,4 @@ var searchData= [ - ['wantedtype_246',['wantedType',['../structHazelnp_1_1ParamConstraint.html#ac07a0c0555431d4b1e0bc6afdba41329',1,'Hazelnp::ParamConstraint']]] + ['type_254',['type',['../classHazelnp_1_1Value.html#ae5760a30c237095db595c466372e3c23',1,'Hazelnp::Value']]] ]; diff --git a/docs/structHazelnp_1_1ParamConstraint-members.html b/docs/structHazelnp_1_1ParamConstraint-members.html index b5aba78..697a467 100644 --- a/docs/structHazelnp_1_1ParamConstraint-members.html +++ b/docs/structHazelnp_1_1ParamConstraint-members.html @@ -84,16 +84,19 @@ $(function() { CmdArgsInterface classHazelnp::ParamConstraintfriend constrainTypeHazelnp::ParamConstraint defaultValueHazelnp::ParamConstraint - ParamConstraint()=defaultHazelnp::ParamConstraint - ParamConstraint(bool constrainType, DATA_TYPE requiredType, const std::vector< std::string > &defaultValue, bool required)Hazelnp::ParamConstraintinline - Require(const std::vector< std::string > &defaultValue={}, bool required=true)Hazelnp::ParamConstraintinlinestatic - requiredHazelnp::ParamConstraint - requiredTypeHazelnp::ParamConstraint - TypeSafety(DATA_TYPE requiredType, bool constrainType=true)Hazelnp::ParamConstraintinlinestatic + Incompatibility(const std::initializer_list< std::string > &incompatibleParameters)Hazelnp::ParamConstraintinlinestatic + Incompatibility(const std::string &incompatibleParameters)Hazelnp::ParamConstraintinlinestatic + incompatibleParametersHazelnp::ParamConstraint + ParamConstraint()=defaultHazelnp::ParamConstraint + ParamConstraint(bool constrainType, DATA_TYPE requiredType, const std::initializer_list< std::string > &defaultValue, bool required, const std::initializer_list< std::string > &incompatibleParameters)Hazelnp::ParamConstraintinline + Require(const std::initializer_list< std::string > &defaultValue={}, bool required=true)Hazelnp::ParamConstraintinlinestatic + requiredHazelnp::ParamConstraint + requiredTypeHazelnp::ParamConstraint + TypeSafety(DATA_TYPE requiredType, bool constrainType=true)Hazelnp::ParamConstraintinlinestatic diff --git a/docs/structHazelnp_1_1ParamConstraint.html b/docs/structHazelnp_1_1ParamConstraint.html index 0bba4d6..c1a70f7 100644 --- a/docs/structHazelnp_1_1ParamConstraint.html +++ b/docs/structHazelnp_1_1ParamConstraint.html @@ -91,7 +91,7 @@ Collaboration diagram for Hazelnp::ParamConstraint:
      Collaboration graph
      - + @@ -103,18 +103,24 @@ Public Member Functions  ParamConstraint ()=default  Empty constructor. More...
        - ParamConstraint (bool constrainType, DATA_TYPE requiredType, const std::vector< std::string > &defaultValue, bool required) - Whole constructor. More...
      -  + ParamConstraint (bool constrainType, DATA_TYPE requiredType, const std::initializer_list< std::string > &defaultValue, bool required, const std::initializer_list< std::string > &incompatibleParameters) + Whole constructor. More...
      +  - - - + + + + + + + + +

      Static Public Member Functions

      static ParamConstraint Require (const std::vector< std::string > &defaultValue={}, bool required=true)
       Constructs a require constraint. More...
       
      static ParamConstraint Require (const std::initializer_list< std::string > &defaultValue={}, bool required=true)
       Constructs a require constraint. More...
       
      static ParamConstraint TypeSafety (DATA_TYPE requiredType, bool constrainType=true)
       Constructs a type-safety constraint. More...
       
      static ParamConstraint Incompatibility (const std::initializer_list< std::string > &incompatibleParameters)
       Constructs an incompatibility constraint. More...
       
      static ParamConstraint Incompatibility (const std::string &incompatibleParameters)
       Constructs an incompatibility constraint. More...
       
      @@ -131,6 +137,9 @@ Public Attributes + + +

      Public Attributes

      bool required = false
       If set to true, and no default value set, an error will be produced if this parameter is not supplied by the user. More...
       
      std::vector< std::string > incompatibleParameters
       Parameters that are incompatible with this parameter. More...
       
      @@ -168,8 +177,8 @@ Friends - -

      ◆ ParamConstraint() [2/2]

      + +

      ◆ ParamConstraint() [2/2]

      @@ -192,14 +201,20 @@ Friends
      - + - + + + + + + + @@ -216,21 +231,96 @@ Friends

      Whole constructor.

      -

      Definition at line 36 of file ParamConstraint.h.

      -
      37  :
      - - - - -
      42  {
      -
      43  return;
      -
      44  }
      +

      Definition at line 57 of file ParamConstraint.h.

      +
      58  :
      + + + +
      62  required{ required },
      + +
      64  {
      +
      65  return;
      +
      66  }

      Member Function Documentation

      - -

      ◆ Require()

      + +

      ◆ Incompatibility() [1/2]

      + +
      +
      +

      Friends

      const std::vector< std::string > & const std::initializer_list< std::string > &  defaultValue,
      bool required required,
      const std::initializer_list< std::string > & incompatibleParameters 
      + + + + +
      + + + + + + + + +
      static ParamConstraint Hazelnp::ParamConstraint::Incompatibility (const std::initializer_list< std::string > & incompatibleParameters)
      +
      +inlinestatic
      +
      + +

      Constructs an incompatibility constraint.

      +

      This means, that the following parameters are NOT compatible with this one and will throw an error if passed together

      + +

      Definition at line 37 of file ParamConstraint.h.

      +
      38  {
      +
      39  ParamConstraint pc;
      +
      40  pc.incompatibleParameters = incompatibleParameters;
      +
      41 
      +
      42  return pc;
      +
      43  }
      +
      +
      + + +

      ◆ Incompatibility() [2/2]

      + +
      +
      + + + + + +
      + + + + + + + + +
      static ParamConstraint Hazelnp::ParamConstraint::Incompatibility (const std::string & incompatibleParameters)
      +
      +inlinestatic
      +
      + +

      Constructs an incompatibility constraint.

      +

      This means, that the following parameters are NOT compatible with this one and will throw an error if passed together. Syntactical-sugar proxy method that will convert the lonely string to an initializer list for you :3

      + +

      Definition at line 48 of file ParamConstraint.h.

      +
      49  {
      +
      50  ParamConstraint pc;
      +
      51  pc.incompatibleParameters = { incompatibleParameters };
      +
      52 
      +
      53  return pc;
      +
      54  }
      +
      +
      +
      + +

      ◆ Require()

      @@ -241,7 +331,7 @@ Friends static ParamConstraint Hazelnp::ParamConstraint::Require ( - const std::vector< std::string > &  + const std::initializer_list< std::string > &  defaultValue = {}, @@ -268,7 +358,7 @@ Friends Think of the default value like of a list ofparameters. Like {"--width", "800"}

      Definition at line 16 of file ParamConstraint.h.

      -
      16  {}, bool required = true)
      +
      16  {}, bool required = true)
      17  {
      18  ParamConstraint pc;
      19  pc.defaultValue = defaultValue;
      @@ -347,7 +437,7 @@ Friends
      -

      Definition at line 67 of file ParamConstraint.h.

      +

      Definition at line 92 of file ParamConstraint.h.

      @@ -367,7 +457,7 @@ Friends

      Should this parameter be forced to be of a certain type?
      Remember to set constrainTo to the wanted type.

      -

      Definition at line 48 of file ParamConstraint.h.

      +

      Definition at line 70 of file ParamConstraint.h.

      @@ -388,7 +478,25 @@ Friends Gets applied if this parameter was not given.
      Think of this like a list of parameters. Like {"--width", "800"}

      -

      Definition at line 56 of file ParamConstraint.h.

      +

      Definition at line 78 of file ParamConstraint.h.

      + + + + +

      ◆ incompatibleParameters

      + +
      +
      + + + + +
      std::vector<std::string> Hazelnp::ParamConstraint::incompatibleParameters
      +
      + +

      Parameters that are incompatible with this parameter.

      + +

      Definition at line 85 of file ParamConstraint.h.

      @@ -406,7 +514,7 @@ Friends

      If set to true, and no default value set, an error will be produced if this parameter is not supplied by the user.

      -

      Definition at line 60 of file ParamConstraint.h.

      +

      Definition at line 82 of file ParamConstraint.h.

      @@ -424,7 +532,7 @@ Friends

      Constrain the parameter to this value. Requires constrainType to be set to true.

      -

      Definition at line 51 of file ParamConstraint.h.

      +

      Definition at line 73 of file ParamConstraint.h.

      @@ -432,14 +540,15 @@ Friends
    • Hazelnupp/ParamConstraint.h
    -
    DATA_TYPE requiredType
    Constrain the parameter to this value. Requires constrainType to be set to true.
    -
    bool constrainType
    Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
    +
    DATA_TYPE requiredType
    Constrain the parameter to this value. Requires constrainType to be set to true.
    +
    bool constrainType
    Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
    ParamConstraint()=default
    Empty constructor.
    -
    bool required
    If set to true, and no default value set, an error will be produced if this parameter is not supplied...
    -
    std::vector< std::string > defaultValue
    The default value for this parameter.
    +
    std::vector< std::string > incompatibleParameters
    Parameters that are incompatible with this parameter.
    +
    bool required
    If set to true, and no default value set, an error will be produced if this parameter is not supplied...
    +
    std::vector< std::string > defaultValue
    The default value for this parameter.
    diff --git a/docs/structHazelnp_1_1ParamConstraint__coll__graph.map b/docs/structHazelnp_1_1ParamConstraint__coll__graph.map index a80797d..c44528c 100644 --- a/docs/structHazelnp_1_1ParamConstraint__coll__graph.map +++ b/docs/structHazelnp_1_1ParamConstraint__coll__graph.map @@ -1,5 +1,5 @@ - + diff --git a/docs/structHazelnp_1_1ParamConstraint__coll__graph.md5 b/docs/structHazelnp_1_1ParamConstraint__coll__graph.md5 index 68bbe9f..9cc78e1 100644 --- a/docs/structHazelnp_1_1ParamConstraint__coll__graph.md5 +++ b/docs/structHazelnp_1_1ParamConstraint__coll__graph.md5 @@ -1 +1 @@ -f955d2f831670f6c2a655e2a102ff0d6 \ No newline at end of file +a459875e45a00cc653331d1a1106e8e6 \ No newline at end of file diff --git a/docs/structHazelnp_1_1ParamConstraint__coll__graph.png b/docs/structHazelnp_1_1ParamConstraint__coll__graph.png index a6fdeb909bbd0a960e694e5b4e08ea1da2b8d0d7..31bc4a17530ef07ca0dfc8d617a47dd3690f0bc6 100644 GIT binary patch literal 11319 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 Ok(E@GC=z?<_kRFnn%r&x