diff --git a/docs/Abbreviations_8cpp.html b/docs/Abbreviations_8cpp.html new file mode 100644 index 0000000..7d3bbee --- /dev/null +++ b/docs/Abbreviations_8cpp.html @@ -0,0 +1,127 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Abbreviations.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Namespaces | +Functions
+
+
Abbreviations.cpp File Reference
+
+
+
#include "CppUnitTest.h"
+#include "helper.h"
+#include "../Hazelnupp/Hazelnupp.h"
+
+Include dependency graph for Abbreviations.cpp:
+
+
+ + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

 TestHazelnupp
 
+ + + +

+Functions

 TestHazelnupp::TEST_CLASS (_Abbreviations)
 
+
+ + + + diff --git a/docs/Abbreviations_8cpp__incl.map b/docs/Abbreviations_8cpp__incl.map new file mode 100644 index 0000000..3063684 --- /dev/null +++ b/docs/Abbreviations_8cpp__incl.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/Abbreviations_8cpp__incl.md5 b/docs/Abbreviations_8cpp__incl.md5 new file mode 100644 index 0000000..deb98ee --- /dev/null +++ b/docs/Abbreviations_8cpp__incl.md5 @@ -0,0 +1 @@ +104f1fc85c82d50f566784751bc221be \ No newline at end of file diff --git a/docs/Abbreviations_8cpp__incl.png b/docs/Abbreviations_8cpp__incl.png new file mode 100644 index 0000000..3ec6bc2 Binary files /dev/null and b/docs/Abbreviations_8cpp__incl.png differ diff --git a/docs/Abbreviations_8cpp_source.html b/docs/Abbreviations_8cpp_source.html new file mode 100644 index 0000000..5cc7ecb --- /dev/null +++ b/docs/Abbreviations_8cpp_source.html @@ -0,0 +1,262 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Abbreviations.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Abbreviations.cpp
+
+
+Go to the documentation of this file.
1 #include "CppUnitTest.h"
+
2 #include "helper.h"
+
3 #include "../Hazelnupp/Hazelnupp.h"
+
4 
+
5 using namespace Microsoft::VisualStudio::CppUnitTestFramework;
+
6 
+
7 namespace TestHazelnupp
+
8 {
+
9  TEST_CLASS(_Abbreviations)
+
10  {
+
11  public:
+
12 
+
13  // Tests keys exist after parsing
+
14  TEST_METHOD(KeysExist)
+
15  {
+
16  // Setup
+
17  ArgList args({
+
18  "/my/fake/path/wahoo.out",
+
19  "-ms",
+
20  "billybob",
+
21  "-mv",
+
22  "-mf",
+
23  "-23.199",
+
24  "-mi",
+
25  "199",
+
26  "-mnl",
+
27  "1",
+
28  "2",
+
29  "3",
+
30  "4",
+
31  "-msl",
+
32  "apple",
+
33  "banana",
+
34  "pumpkin",
+
35  });
+
36 
+
37  // Exercise
+
38  Hazelnupp nupp;
+
39  nupp.SetCrashOnFail(false);
+
40 
+
41  nupp.RegisterAbbreviation("-ms", "--my_string");
+
42  nupp.RegisterAbbreviation("-mv", "--my_void");
+
43  nupp.RegisterAbbreviation("-mi", "--my_int");
+
44  nupp.RegisterAbbreviation("-mf", "--my_float");
+
45  nupp.RegisterAbbreviation("-mnl", "--my_num_list");
+
46  nupp.RegisterAbbreviation("-msl", "--my_str_list");
+
47 
+
48  nupp.Parse(C_Ify(args));
+
49 
+
50  // Verify
+
51  Assert::IsTrue(nupp.HasParam("--my_string"));
+
52  Assert::IsTrue(nupp.HasParam("--my_void"));
+
53  Assert::IsTrue(nupp.HasParam("--my_float"));
+
54  Assert::IsTrue(nupp.HasParam("--my_int"));
+
55  Assert::IsTrue(nupp.HasParam("--my_num_list"));
+
56  Assert::IsTrue(nupp.HasParam("--my_str_list"));
+
57 
+
58  return;
+
59  }
+
60 
+
61  // Tests keys are of the correct type after parsing
+
62  TEST_METHOD(CorrectType)
+
63  {
+
64  // Setup
+
65  ArgList args({
+
66  "/my/fake/path/wahoo.out",
+
67  "-ms",
+
68  "billybob",
+
69  "-mv",
+
70  "-mf",
+
71  "-23.199",
+
72  "-mi",
+
73  "199",
+
74  "-mnl",
+
75  "1",
+
76  "2",
+
77  "3",
+
78  "4",
+
79  "-msl",
+
80  "apple",
+
81  "banana",
+
82  "pumpkin",
+
83  });
+
84 
+
85  // Exercise
+
86  Hazelnupp nupp;
+
87  nupp.SetCrashOnFail(false);
+
88 
+
89  nupp.RegisterAbbreviation("-ms", "--my_string");
+
90  nupp.RegisterAbbreviation("-mv", "--my_void");
+
91  nupp.RegisterAbbreviation("-mi", "--my_int");
+
92  nupp.RegisterAbbreviation("-mf", "--my_float");
+
93  nupp.RegisterAbbreviation("-mnl", "--my_num_list");
+
94  nupp.RegisterAbbreviation("-msl", "--my_str_list");
+
95 
+
96  nupp.Parse(C_Ify(args));
+
97 
+
98  // Verify
+
99  Assert::IsTrue(nupp["--my_string"].GetDataType() == DATA_TYPE::STRING);
+
100  Assert::IsTrue(nupp["--my_void"].GetDataType() == DATA_TYPE::VOID);
+
101  Assert::IsTrue(nupp["--my_float"].GetDataType() == DATA_TYPE::FLOAT);
+
102  Assert::IsTrue(nupp["--my_int"].GetDataType() == DATA_TYPE::INT);
+
103  Assert::IsTrue(nupp["--my_num_list"].GetDataType() == DATA_TYPE::LIST);
+
104  Assert::IsTrue(nupp["--my_str_list"].GetDataType() == DATA_TYPE::LIST);
+
105 
+
106  return;
+
107  }
+
108 
+
109  // Tests keys have the correct value after parsing
+
110  TEST_METHOD(CorrectValues)
+
111  {
+
112  // Setup
+
113  ArgList args({
+
114  "/my/fake/path/wahoo.out",
+
115  "-ms",
+
116  "billybob",
+
117  "-mv",
+
118  "-mf",
+
119  "-23.199",
+
120  "-mi",
+
121  "199",
+
122  "-mnl",
+
123  "1",
+
124  "2",
+
125  "3",
+
126  "4",
+
127  "-msl",
+
128  "apple",
+
129  "banana",
+
130  "pumpkin",
+
131  });
+
132 
+
133  // Exercise
+
134  Hazelnupp nupp;
+
135  nupp.SetCrashOnFail(false);
+
136 
+
137  nupp.RegisterAbbreviation("-ms", "--my_string");
+
138  nupp.RegisterAbbreviation("-mv", "--my_void");
+
139  nupp.RegisterAbbreviation("-mi", "--my_int");
+
140  nupp.RegisterAbbreviation("-mf", "--my_float");
+
141  nupp.RegisterAbbreviation("-mnl", "--my_num_list");
+
142  nupp.RegisterAbbreviation("-msl", "--my_str_list");
+
143 
+
144  nupp.Parse(C_Ify(args));
+
145 
+
146  // Verify
+
147  Assert::AreEqual(nupp["--my_string"].GetString(), std::string("billybob"));
+
148  Assert::AreEqual(nupp["--my_float"].GetFloat32(), -23.199);
+
149  Assert::AreEqual(nupp["--my_int"].GetInt32(), 199);
+
150  Assert::AreEqual(nupp["--my_num_list"].GetList()[0]->GetInt32(), 1);
+
151  Assert::AreEqual(nupp["--my_num_list"].GetList()[1]->GetInt32(), 2);
+
152  Assert::AreEqual(nupp["--my_num_list"].GetList()[2]->GetInt32(), 3);
+
153  Assert::AreEqual(nupp["--my_num_list"].GetList()[3]->GetInt32(), 4);
+
154  Assert::AreEqual(nupp["--my_str_list"].GetList()[0]->GetString(), std::string("apple"));
+
155  Assert::AreEqual(nupp["--my_str_list"].GetList()[1]->GetString(), std::string("banana"));
+
156  Assert::AreEqual(nupp["--my_str_list"].GetList()[2]->GetString(), std::string("pumpkin"));
+
157 
+
158  return;
+
159  }
+
160  };
+
161 }
+
+
DATA_TYPE::VOID
@ VOID
+
DATA_TYPE::LIST
@ LIST
+
DATA_TYPE::FLOAT
@ FLOAT
+
TestHazelnupp
Definition: Abbreviations.cpp:7
+
TestHazelnupp::TEST_CLASS
TEST_CLASS(_Abbreviations)
Definition: Abbreviations.cpp:9
+
DATA_TYPE::INT
@ INT
+
C_Ify
#define C_Ify(vector)
Definition: helper.h:4
+
Hazelnupp::SetCrashOnFail
void SetCrashOnFail(bool crashOnFail)
Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...
Definition: Hazelnupp.cpp:379
+
ArgList
std::vector< const char * > ArgList
Definition: helper.h:6
+
DATA_TYPE::STRING
@ STRING
+
Hazelnupp
The main class to interface with.
Definition: Hazelnupp.h:9
+
helper.h
+ + + + diff --git a/docs/Basics_8cpp.html b/docs/Basics_8cpp.html new file mode 100644 index 0000000..c863d6c --- /dev/null +++ b/docs/Basics_8cpp.html @@ -0,0 +1,130 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Basics.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Namespaces | +Functions
+
+
Basics.cpp File Reference
+
+
+
#include "CppUnitTest.h"
+#include "helper.h"
+#include "../Hazelnupp/Hazelnupp.h"
+#include "../Hazelnupp/HazelnuppException.h"
+
+Include dependency graph for Basics.cpp:
+
+
+ + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

 TestHazelnupp
 
+ + + +

+Functions

 TestHazelnupp::TEST_CLASS (_Basics)
 
+
+ + + + diff --git a/docs/Basics_8cpp__incl.map b/docs/Basics_8cpp__incl.map new file mode 100644 index 0000000..26c89de --- /dev/null +++ b/docs/Basics_8cpp__incl.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/Basics_8cpp__incl.md5 b/docs/Basics_8cpp__incl.md5 new file mode 100644 index 0000000..233d371 --- /dev/null +++ b/docs/Basics_8cpp__incl.md5 @@ -0,0 +1 @@ +7637a15ad95d868d907efc4ded5bee64 \ No newline at end of file diff --git a/docs/Basics_8cpp__incl.png b/docs/Basics_8cpp__incl.png new file mode 100644 index 0000000..7992a5a Binary files /dev/null and b/docs/Basics_8cpp__incl.png differ diff --git a/docs/Basics_8cpp_source.html b/docs/Basics_8cpp_source.html new file mode 100644 index 0000000..c5e4d08 --- /dev/null +++ b/docs/Basics_8cpp_source.html @@ -0,0 +1,350 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Basics.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Basics.cpp
+
+
+Go to the documentation of this file.
1 #include "CppUnitTest.h"
+
2 #include "helper.h"
+
3 #include "../Hazelnupp/Hazelnupp.h"
+
4 #include "../Hazelnupp/HazelnuppException.h"
+
5 
+
6 using namespace Microsoft::VisualStudio::CppUnitTestFramework;
+
7 
+
8 namespace TestHazelnupp
+
9 {
+
10  TEST_CLASS(_Basics)
+
11  {
+
12  public:
+
13 
+
14  // Tests the application path gets exported correctly
+
15  TEST_METHOD(ApplicationPathWorks)
+
16  {
+
17  // Setup
+
18  ArgList args({
+
19  "/my/fake/path/wahoo.out"
+
20  });
+
21 
+
22  // Exercise
+
23  Hazelnupp nupp(C_Ify(args));
+
24  nupp.SetCrashOnFail(false);
+
25 
+
26  // Verify
+
27  Assert::AreEqual(std::string("/my/fake/path/wahoo.out"), nupp.GetExecutableName());
+
28 
+
29  return;
+
30  }
+
31 
+
32  // Edgecase test: We only have one param.
+
33  TEST_METHOD(Only_One_Param)
+
34  {
+
35  // Setup
+
36  ArgList args({
+
37  "/my/fake/path/wahoo.out",
+
38  "--dummy"
+
39  });
+
40 
+
41  // Exercise
+
42  Hazelnupp nupp(C_Ify(args));
+
43  nupp.SetCrashOnFail(false);
+
44 
+
45  // Verify
+
46  Assert::IsTrue(nupp.HasParam("--dummy"));
+
47 
+
48  return;
+
49  }
+
50 
+
51  // Edgecase test: We begin with an actual value, instead of an argument.
+
52  TEST_METHOD(Weird_Case_1)
+
53  {
+
54  // Setup
+
55  ArgList args({
+
56  "/my/fake/path/wahoo.out",
+
57  "dummy"
+
58  });
+
59 
+
60  // Exercise
+
61  Hazelnupp nupp(C_Ify(args));
+
62  nupp.SetCrashOnFail(false);
+
63 
+
64  // Verify (no exception)
+
65 
+
66  return;
+
67  }
+
68 
+
69  // Edgecase test: We begin with first an actual value, and then an argument.
+
70  TEST_METHOD(Weird_Case_2)
+
71  {
+
72  // Setup
+
73  ArgList args({
+
74  "/my/fake/path/wahoo.out",
+
75  "dummy",
+
76  "--dummy"
+
77  });
+
78 
+
79  // Exercise
+
80  Hazelnupp nupp(C_Ify(args));
+
81  nupp.SetCrashOnFail(false);
+
82 
+
83  // Verify
+
84  Assert::IsTrue(nupp.HasParam("--dummy"), L"Failed has-param");
+
85  Assert::IsTrue(nupp["--dummy"].GetDataType() == DATA_TYPE::VOID, L"Failed type");
+
86 
+
87  return;
+
88  }
+
89 
+
90  // Tests keys exist after parsing
+
91  TEST_METHOD(KeysExist)
+
92  {
+
93  // Setup
+
94  ArgList args({
+
95  "/my/fake/path/wahoo.out",
+
96  "--my_string",
+
97  "billybob",
+
98  "--my_void",
+
99  "--my_float",
+
100  "-23.199",
+
101  "--my_int",
+
102  "199",
+
103  "--my_num_list",
+
104  "1",
+
105  "2",
+
106  "3",
+
107  "4",
+
108  "--my_str_list",
+
109  "apple",
+
110  "banana",
+
111  "pumpkin",
+
112  });
+
113 
+
114  // Exercise
+
115  Hazelnupp nupp(C_Ify(args));
+
116  nupp.SetCrashOnFail(false);
+
117 
+
118  // Verify
+
119  Assert::IsTrue(nupp.HasParam("--my_string"));
+
120  Assert::IsTrue(nupp.HasParam("--my_void"));
+
121  Assert::IsTrue(nupp.HasParam("--my_float"));
+
122  Assert::IsTrue(nupp.HasParam("--my_int"));
+
123  Assert::IsTrue(nupp.HasParam("--my_num_list"));
+
124  Assert::IsTrue(nupp.HasParam("--my_str_list"));
+
125 
+
126  return;
+
127  }
+
128 
+
129  // Tests keys are of the correct type after parsing
+
130  TEST_METHOD(CorrectType)
+
131  {
+
132  // Setup
+
133  ArgList args({
+
134  "/my/fake/path/wahoo.out",
+
135  "--my_string",
+
136  "billybob",
+
137  "--my_void",
+
138  "--my_float",
+
139  "-23.199",
+
140  "--my_int",
+
141  "199",
+
142  "--my_num_list",
+
143  "1",
+
144  "2",
+
145  "3",
+
146  "4",
+
147  "--my_str_list",
+
148  "apple",
+
149  "banana",
+
150  "pumpkin",
+
151  });
+
152 
+
153  // Exercise
+
154  Hazelnupp nupp(C_Ify(args));
+
155  nupp.SetCrashOnFail(false);
+
156 
+
157  // Verify
+
158  Assert::IsTrue(nupp["--my_string"].GetDataType() == DATA_TYPE::STRING);
+
159  Assert::IsTrue(nupp["--my_void"].GetDataType() == DATA_TYPE::VOID);
+
160  Assert::IsTrue(nupp["--my_float"].GetDataType() == DATA_TYPE::FLOAT);
+
161  Assert::IsTrue(nupp["--my_int"].GetDataType() == DATA_TYPE::INT);
+
162  Assert::IsTrue(nupp["--my_num_list"].GetDataType() == DATA_TYPE::LIST);
+
163  Assert::IsTrue(nupp["--my_str_list"].GetDataType() == DATA_TYPE::LIST);
+
164 
+
165  return;
+
166  }
+
167 
+
168  // Tests keys have the correct value after parsing
+
169  TEST_METHOD(CorrectValues)
+
170  {
+
171  // Setup
+
172  ArgList args({
+
173  "/my/fake/path/wahoo.out",
+
174  "--my_string",
+
175  "billybob",
+
176  "--my_void",
+
177  "--my_float",
+
178  "-23.199",
+
179  "--my_int",
+
180  "199",
+
181  "--my_num_list",
+
182  "1",
+
183  "2",
+
184  "3",
+
185  "4",
+
186  "--my_str_list",
+
187  "apple",
+
188  "banana",
+
189  "pumpkin",
+
190  });
+
191 
+
192  // Exercise
+
193  Hazelnupp nupp(C_Ify(args));
+
194  nupp.SetCrashOnFail(false);
+
195 
+
196  // Verify
+
197  Assert::AreEqual(nupp["--my_string"].GetString(), std::string("billybob"));
+
198  Assert::AreEqual(nupp["--my_float"].GetFloat32(), -23.199);
+
199  Assert::AreEqual(nupp["--my_int"].GetInt32(), 199);
+
200  Assert::AreEqual(nupp["--my_num_list"].GetList()[0]->GetInt32(), 1);
+
201  Assert::AreEqual(nupp["--my_num_list"].GetList()[1]->GetInt32(), 2);
+
202  Assert::AreEqual(nupp["--my_num_list"].GetList()[2]->GetInt32(), 3);
+
203  Assert::AreEqual(nupp["--my_num_list"].GetList()[3]->GetInt32(), 4);
+
204  Assert::AreEqual(nupp["--my_str_list"].GetList()[0]->GetString(), std::string("apple"));
+
205  Assert::AreEqual(nupp["--my_str_list"].GetList()[1]->GetString(), std::string("banana"));
+
206  Assert::AreEqual(nupp["--my_str_list"].GetList()[2]->GetString(), std::string("pumpkin"));
+
207 
+
208  return;
+
209  }
+
210 
+
211  // Tests that an HazelnuppInvalidKeyException gets raised, if an invalid gey is tried to access
+
212  TEST_METHOD(Exception_On_Invalid_Key)
+
213  {
+
214  // Setup
+
215  ArgList args({
+
216  "/my/fake/path/wahoo.out",
+
217  "--my_string",
+
218  "billybob",
+
219  "--my_void",
+
220  "--my_float",
+
221  "-23.199",
+
222  "--my_int",
+
223  "199",
+
224  "--my_num_list",
+
225  "1",
+
226  "2",
+
227  "3",
+
228  "4",
+
229  "--my_str_list",
+
230  "apple",
+
231  "banana",
+
232  "pumpkin",
+
233  });
+
234 
+
235  Hazelnupp nupp(C_Ify(args));
+
236  nupp.SetCrashOnFail(false);
+
237 
+
238  // Exercise, Verify
+
239  Assert::ExpectException<HazelnuppInvalidKeyException>(
+
240  [args]
+
241  {
+
242  Hazelnupp nupp(C_Ify(args));
+
243  nupp["--borrnana"];
+
244  }
+
245  );
+
246 
+
247  return;
+
248  }
+
249  };
+
250 }
+
+
DATA_TYPE::VOID
@ VOID
+
DATA_TYPE::LIST
@ LIST
+
DATA_TYPE::FLOAT
@ FLOAT
+
TestHazelnupp
Definition: Abbreviations.cpp:7
+
TestHazelnupp::TEST_CLASS
TEST_CLASS(_Basics)
Definition: Basics.cpp:10
+
DATA_TYPE::INT
@ INT
+
C_Ify
#define C_Ify(vector)
Definition: helper.h:4
+
ArgList
std::vector< const char * > ArgList
Definition: helper.h:6
+
DATA_TYPE::STRING
@ STRING
+
Hazelnupp
The main class to interface with.
Definition: Hazelnupp.h:9
+
helper.h
+ + + + diff --git a/docs/Constraints_8cpp.html b/docs/Constraints_8cpp.html new file mode 100644 index 0000000..678c1fc --- /dev/null +++ b/docs/Constraints_8cpp.html @@ -0,0 +1,130 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Constraints.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Namespaces | +Functions
+
+
Constraints.cpp File Reference
+
+
+
#include "CppUnitTest.h"
+#include "helper.h"
+#include "../Hazelnupp/Hazelnupp.h"
+#include "../Hazelnupp/HazelnuppException.h"
+
+Include dependency graph for Constraints.cpp:
+
+
+ + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

 TestHazelnupp
 
+ + + +

+Functions

 TestHazelnupp::TEST_CLASS (_Constraints)
 
+
+ + + + diff --git a/docs/Constraints_8cpp__incl.map b/docs/Constraints_8cpp__incl.map new file mode 100644 index 0000000..8653bb5 --- /dev/null +++ b/docs/Constraints_8cpp__incl.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/Constraints_8cpp__incl.md5 b/docs/Constraints_8cpp__incl.md5 new file mode 100644 index 0000000..5676aa1 --- /dev/null +++ b/docs/Constraints_8cpp__incl.md5 @@ -0,0 +1 @@ +62c377b56c814420aa9bd5d3797e756b \ No newline at end of file diff --git a/docs/Constraints_8cpp__incl.png b/docs/Constraints_8cpp__incl.png new file mode 100644 index 0000000..834ecd7 Binary files /dev/null and b/docs/Constraints_8cpp__incl.png differ diff --git a/docs/Constraints_8cpp_source.html b/docs/Constraints_8cpp_source.html new file mode 100644 index 0000000..a068a35 --- /dev/null +++ b/docs/Constraints_8cpp_source.html @@ -0,0 +1,425 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Constraints.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Constraints.cpp
+
+
+Go to the documentation of this file.
1 #include "CppUnitTest.h"
+
2 #include "helper.h"
+
3 #include "../Hazelnupp/Hazelnupp.h"
+
4 #include "../Hazelnupp/HazelnuppException.h"
+
5 
+
6 using namespace Microsoft::VisualStudio::CppUnitTestFramework;
+
7 
+
8 namespace TestHazelnupp
+
9 {
+
10  TEST_CLASS(_Constraints)
+
11  {
+
12  public:
+
13 
+
14  // Tests that default values get added
+
15  TEST_METHOD(DefaultValues_GetAdded)
+
16  {
+
17  // Setup
+
18  ArgList args({
+
19  "/my/fake/path/wahoo.out",
+
20  "--dummy",
+
21  "123"
+
22  });
+
23 
+
24  // Exercise
+
25  Hazelnupp nupp;
+
26  nupp.SetCrashOnFail(false);
+
27 
+
28  nupp.RegisterConstraints({
+
29  ParamConstraint::Require("--elenor-int", {"5994"}),
+
30  ParamConstraint::Require("--federich-float", {"420.69"}),
+
31  ParamConstraint::Require("--siegbert-string", {"banana"}),
+
32  ParamConstraint::Require("--lieber-liste", {"banana", "apple", "59"})
+
33  });
+
34 
+
35  nupp.Parse(C_Ify(args));
+
36 
+
37  // Verify
+
38  Assert::IsTrue(nupp.HasParam("--elenor-int"));
+
39  Assert::IsTrue(nupp["--elenor-int"].GetDataType() == DATA_TYPE::INT);
+
40  Assert::AreEqual(nupp["--elenor-int"].GetInt32(), 5994);
+
41 
+
42  Assert::IsTrue(nupp.HasParam("--federich-float"));
+
43  Assert::IsTrue(nupp["--federich-float"].GetDataType() == DATA_TYPE::FLOAT);
+
44  Assert::AreEqual(nupp["--federich-float"].GetFloat32(), 420.69);
+
45 
+
46  Assert::IsTrue(nupp.HasParam("--siegbert-string"));
+
47  Assert::IsTrue(nupp["--siegbert-string"].GetDataType() == DATA_TYPE::STRING);
+
48  Assert::AreEqual(nupp["--siegbert-string"].GetString(), std::string("banana"));
+
49 
+
50  Assert::IsTrue(nupp.HasParam("--lieber-liste"));
+
51  Assert::IsTrue(nupp["--lieber-liste"].GetDataType() == DATA_TYPE::LIST);
+
52  Assert::AreEqual(nupp["--lieber-liste"].GetList()[0]->GetString(), std::string("banana"));
+
53  Assert::AreEqual(nupp["--lieber-liste"].GetList()[1]->GetString(), std::string("apple"));
+
54  Assert::AreEqual(nupp["--lieber-liste"].GetList()[2]->GetInt32(), 59);
+
55 
+
56  return;
+
57  }
+
58 
+
59  // Tests that the default values do not override actually set values
+
60  TEST_METHOD(DefaultValues_DefaultDoesntOverride)
+
61  {
+
62  // Setup
+
63  ArgList args({
+
64  "/my/fake/path/wahoo.out",
+
65  "--dummy",
+
66  "--elenor-int",
+
67  "5994",
+
68  "--federich-float",
+
69  "420.69",
+
70  "--siegbert-string",
+
71  "banana",
+
72  "--lieber-liste",
+
73  "banana",
+
74  "apple",
+
75  "59"
+
76  });
+
77 
+
78  // Exercise
+
79  Hazelnupp nupp;
+
80  nupp.SetCrashOnFail(false);
+
81 
+
82  nupp.RegisterConstraints({
+
83  ParamConstraint::Require("--elenor-int", {"6871"}),
+
84  ParamConstraint::Require("--federich-float", {"-199.44"}),
+
85  ParamConstraint::Require("--siegbert-string", {"bornana"}),
+
86  ParamConstraint::Require("--lieber-liste", {"bornana", "ollpe", "5"})
+
87  });
+
88 
+
89  nupp.Parse(C_Ify(args));
+
90 
+
91  // Verify
+
92  Assert::IsTrue(nupp.HasParam("--elenor-int"));
+
93  Assert::IsTrue(nupp["--elenor-int"].GetDataType() == DATA_TYPE::INT);
+
94  Assert::AreEqual(nupp["--elenor-int"].GetInt32(), 5994);
+
95 
+
96  Assert::IsTrue(nupp.HasParam("--federich-float"));
+
97  Assert::IsTrue(nupp["--federich-float"].GetDataType() == DATA_TYPE::FLOAT);
+
98  Assert::AreEqual(nupp["--federich-float"].GetFloat32(), 420.69);
+
99 
+
100  Assert::IsTrue(nupp.HasParam("--siegbert-string"));
+
101  Assert::IsTrue(nupp["--siegbert-string"].GetDataType() == DATA_TYPE::STRING);
+
102  Assert::AreEqual(nupp["--siegbert-string"].GetString(), std::string("banana"));
+
103 
+
104  Assert::IsTrue(nupp.HasParam("--lieber-liste"));
+
105  Assert::IsTrue(nupp["--lieber-liste"].GetDataType() == DATA_TYPE::LIST);
+
106  Assert::AreEqual(nupp["--lieber-liste"].GetList()[0]->GetString(), std::string("banana"));
+
107  Assert::AreEqual(nupp["--lieber-liste"].GetList()[1]->GetString(), std::string("apple"));
+
108  Assert::AreEqual(nupp["--lieber-liste"].GetList()[2]->GetInt32(), 59);
+
109 
+
110  return;
+
111  }
+
112 
+
113  // Tests that data types get forced according to the constraints
+
114  TEST_METHOD(ForceTypes)
+
115  {
+
116  // Setup
+
117  ArgList args({
+
118  "/my/fake/path/wahoo.out",
+
119  "--dummy",
+
120  "--num-apples",
+
121  "39.75",
+
122  "--table-height",
+
123  "400",
+
124  "--license-plate",
+
125  "193273",
+
126  "--fav-fruits",
+
127  "apple",
+
128  "--indices",
+
129  "9",
+
130  "--force",
+
131  "plsdontuseme"
+
132  });
+
133 
+
134  // Exercise
+
135  Hazelnupp nupp;
+
136  nupp.SetCrashOnFail(false);
+
137 
+
138  nupp.RegisterConstraints({
+ + + + + + +
145  });
+
146 
+
147  nupp.Parse(C_Ify(args));
+
148 
+
149  // Verify
+
150  Assert::IsTrue(nupp.HasParam("--num-apples"));
+
151  Assert::IsTrue(nupp["--num-apples"].GetDataType() == DATA_TYPE::INT);
+
152  Assert::AreEqual(nupp["--num-apples"].GetInt32(), 39);
+
153 
+
154  Assert::IsTrue(nupp.HasParam("--table-height"));
+
155  Assert::IsTrue(nupp["--table-height"].GetDataType() == DATA_TYPE::FLOAT);
+
156  Assert::AreEqual(nupp["--table-height"].GetFloat32(), 400.0);
+
157 
+
158  Assert::IsTrue(nupp.HasParam("--license-plate"));
+
159  Assert::IsTrue(nupp["--license-plate"].GetDataType() == DATA_TYPE::STRING);
+
160  Assert::AreEqual(nupp["--license-plate"].GetString(), std::string("193273"));
+
161 
+
162  Assert::IsTrue(nupp.HasParam("--fav-fruits"));
+
163  Assert::IsTrue(nupp["--fav-fruits"].GetDataType() == DATA_TYPE::LIST);
+
164  Assert::AreEqual(nupp["--fav-fruits"].GetList()[0]->GetString(), std::string("apple"));
+
165 
+
166  Assert::IsTrue(nupp.HasParam("--indices"));
+
167  Assert::IsTrue(nupp["--indices"].GetDataType() == DATA_TYPE::LIST);
+
168  Assert::AreEqual(nupp["--indices"].GetList()[0]->GetInt32(), 9);
+
169 
+
170  Assert::IsTrue(nupp.HasParam("--force"));
+
171  Assert::IsTrue(nupp["--force"].GetDataType() == DATA_TYPE::VOID);
+
172 
+
173  return;
+
174  }
+
175 
+
176  // Tests that an HazelnuppConstraintMissingValue gets raised if a required parameter
+
177  // is missing and does not have a default parameter
+
178  TEST_METHOD(Exception_MissingImportant_Parameter_WithoutDefault)
+
179  {
+
180  // Setup
+
181  ArgList args({
+
182  "/my/fake/path/wahoo.out",
+
183  "--dummy",
+
184  "--federich-float",
+
185  "420.69",
+
186  "--siegbert-string",
+
187  "banana",
+
188  "--lieber-liste",
+
189  "banana",
+
190  "apple",
+
191  "59"
+
192  });
+
193 
+
194  Assert::ExpectException<HazelnuppConstraintMissingValue>(
+
195  [args]
+
196  {
+
197  Hazelnupp nupp;
+
198  nupp.SetCrashOnFail(false);
+
199 
+
200  nupp.RegisterConstraints({
+
201  ParamConstraint::Require("--elenor-int"),
+
202  });
+
203 
+
204  nupp.Parse(C_Ify(args));
+
205  }
+
206  );
+
207 
+
208  return;
+
209  }
+
210 
+
211  // Tests that an HazelnuppConstraintTypeMissmatch gets raised if a required parameter
+
212  // is missing of the wrong type and cannot be converted
+
213  TEST_METHOD(Exception_TypeMismatch_Parameter_NotConvertable)
+
214  {
+
215  // Setup
+
216  ArgList args({
+
217  "/my/fake/path/wahoo.out",
+
218  "--dummy",
+
219  "--elenor-int",
+
220  "hello"
+
221  "--federich-float",
+
222  "420.69",
+
223  "--siegbert-string",
+
224  "banana",
+
225  "--lieber-liste",
+
226  "banana",
+
227  "apple",
+
228  "59"
+
229  });
+
230 
+
231  Assert::ExpectException<HazelnuppConstraintTypeMissmatch>(
+
232  [args]
+
233  {
+
234  Hazelnupp nupp;
+
235  nupp.SetCrashOnFail(false);
+
236 
+
237  nupp.RegisterConstraints({
+ +
239  });
+
240 
+
241  nupp.Parse(C_Ify(args));
+
242  }
+
243  );
+
244 
+
245  return;
+
246  }
+
247 
+
248  // Tests that everything can be converted to void
+
249  TEST_METHOD(Weird_Load_Conversions_ToVoid)
+
250  {
+
251  // Setup
+
252  ArgList args({
+
253  "/my/fake/path/wahoo.out",
+
254  "--dummy",
+
255  "--void1",
+
256  "--void2",
+
257  "12",
+
258  "--void3",
+
259  "9.5",
+
260  "--void4",
+
261  "hello",
+
262  "--void5",
+
263  "foo",
+
264  "baz"
+
265  });
+
266 
+
267  Hazelnupp nupp;
+
268  nupp.SetCrashOnFail(false);
+
269 
+
270  nupp.RegisterConstraints({
+ + + + + +
276  });
+
277 
+
278 
+
279  // Exercise
+
280  nupp.Parse(C_Ify(args));
+
281 
+
282  // Verify
+
283  Assert::IsTrue(nupp["--void1"].GetDataType() == DATA_TYPE::VOID);
+
284  Assert::IsTrue(nupp["--void2"].GetDataType() == DATA_TYPE::VOID);
+
285  Assert::IsTrue(nupp["--void3"].GetDataType() == DATA_TYPE::VOID);
+
286  Assert::IsTrue(nupp["--void4"].GetDataType() == DATA_TYPE::VOID);
+
287  Assert::IsTrue(nupp["--void5"].GetDataType() == DATA_TYPE::VOID);
+
288 
+
289  return;
+
290  }
+
291 
+
292  // Tests that everything a void can be converted to an empty list
+
293  TEST_METHOD(Weird_Load_Conversions_VoidToEmptyList)
+
294  {
+
295  // Setup
+
296  ArgList args({
+
297  "/my/fake/path/wahoo.out",
+
298  "--dummy",
+
299  "--empty-list",
+
300  });
+
301 
+
302  Hazelnupp nupp;
+
303  nupp.SetCrashOnFail(false);
+
304 
+
305  nupp.RegisterConstraints({
+ +
307  });
+
308 
+
309 
+
310  // Exercise
+
311  nupp.Parse(C_Ify(args));
+
312 
+
313  // Verify
+
314  Assert::IsTrue(nupp["--empty-list"].GetDataType() == DATA_TYPE::LIST);
+
315  Assert::AreEqual(std::size_t(0), nupp["--empty-list"].GetList().size());
+
316 
+
317  return;
+
318  }
+
319  };
+
320 }
+
+
DATA_TYPE::VOID
@ VOID
+
Hazelnupp::RegisterConstraints
void RegisterConstraints(const std::vector< ParamConstraint > &constraints)
Will register parameter constraints.
Definition: Hazelnupp.cpp:352
+
DATA_TYPE::LIST
@ LIST
+
DATA_TYPE::FLOAT
@ FLOAT
+
TestHazelnupp
Definition: Abbreviations.cpp:7
+
ParamConstraint::TypeSafety
static ParamConstraint TypeSafety(const std::string &key, DATA_TYPE wantedType, bool constrainType=true)
Constructs a type-safety constraint.
Definition: ParamConstraint.h:25
+
TestHazelnupp::TEST_CLASS
TEST_CLASS(_Constraints)
Definition: Constraints.cpp:10
+
DATA_TYPE::INT
@ INT
+
ParamConstraint::Require
static ParamConstraint Require(const std::string &key, const std::vector< std::string > &defaultValue={}, bool required=true)
Constructs a require constraint.
Definition: ParamConstraint.h:14
+
C_Ify
#define C_Ify(vector)
Definition: helper.h:4
+
Hazelnupp::SetCrashOnFail
void SetCrashOnFail(bool crashOnFail)
Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...
Definition: Hazelnupp.cpp:379
+
ArgList
std::vector< const char * > ArgList
Definition: helper.h:6
+
DATA_TYPE::STRING
@ STRING
+
Hazelnupp
The main class to interface with.
Definition: Hazelnupp.h:9
+
helper.h
+
Hazelnupp::Parse
void Parse(const int argc, const char *const *argv)
Will parse command line arguments.
Definition: Hazelnupp.cpp:33
+ + + + diff --git a/docs/Conversion_8cpp.html b/docs/Conversion_8cpp.html new file mode 100644 index 0000000..a556531 --- /dev/null +++ b/docs/Conversion_8cpp.html @@ -0,0 +1,130 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Conversion.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Namespaces | +Functions
+
+
Conversion.cpp File Reference
+
+
+
#include "CppUnitTest.h"
+#include "helper.h"
+#include "../Hazelnupp/Hazelnupp.h"
+#include "../Hazelnupp/HazelnuppException.h"
+
+Include dependency graph for Conversion.cpp:
+
+
+ + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

 TestHazelnupp
 
+ + + +

+Functions

 TestHazelnupp::TEST_CLASS (_Conversion)
 
+
+ + + + diff --git a/docs/Conversion_8cpp__incl.map b/docs/Conversion_8cpp__incl.map new file mode 100644 index 0000000..09e7105 --- /dev/null +++ b/docs/Conversion_8cpp__incl.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/Conversion_8cpp__incl.md5 b/docs/Conversion_8cpp__incl.md5 new file mode 100644 index 0000000..cfeb8b4 --- /dev/null +++ b/docs/Conversion_8cpp__incl.md5 @@ -0,0 +1 @@ +d5db07f8e0783c171b7745265e2ec834 \ No newline at end of file diff --git a/docs/Conversion_8cpp__incl.png b/docs/Conversion_8cpp__incl.png new file mode 100644 index 0000000..347956d Binary files /dev/null and b/docs/Conversion_8cpp__incl.png differ diff --git a/docs/Conversion_8cpp_source.html b/docs/Conversion_8cpp_source.html new file mode 100644 index 0000000..34a8126 --- /dev/null +++ b/docs/Conversion_8cpp_source.html @@ -0,0 +1,353 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Conversion.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Conversion.cpp
+
+
+Go to the documentation of this file.
1 #include "CppUnitTest.h"
+
2 #include "helper.h"
+
3 #include "../Hazelnupp/Hazelnupp.h"
+
4 #include "../Hazelnupp/HazelnuppException.h"
+
5 
+
6 using namespace Microsoft::VisualStudio::CppUnitTestFramework;
+
7 
+
8 namespace TestHazelnupp
+
9 {
+
10  TEST_CLASS(_Conversion)
+
11  {
+
12  public:
+
13 
+
14  // Tests that string conversion methods work
+
15  TEST_METHOD(Convert_String)
+
16  {
+
17  // Setup
+
18  ArgList args({
+
19  "/my/fake/path/wahoo.out",
+
20  "--pud",
+
21  "hello"
+
22  });
+
23 
+
24  // Exercise
+
25  Hazelnupp nupp(C_Ify(args));
+
26  nupp.SetCrashOnFail(false);
+
27 
+
28  // Verify
+
29  const Hazelnupp* ptnupp = &nupp;
+
30 
+
31  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
32  [ptnupp]
+
33  {
+
34  (*ptnupp)["--pud"].GetInt64();
+
35  }
+
36  , L"Int64");
+
37 
+
38  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
39  [ptnupp]
+
40  {
+
41  (*ptnupp)["--pud"].GetInt32();
+
42  }
+
43  , L"Int32");
+
44 
+
45  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
46  [ptnupp]
+
47  {
+
48  (*ptnupp)["--pud"].GetFloat64();
+
49  }
+
50  , L"Float64");
+
51 
+
52  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
53  [ptnupp]
+
54  {
+
55  (*ptnupp)["--pud"].GetFloat32();
+
56  }
+
57  , L"Float32");
+
58 
+
59  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
60  [ptnupp]
+
61  {
+
62  (*ptnupp)["--pud"].GetList();
+
63  }
+
64  , L"List");
+
65 
+
66 
+
67  return;
+
68  }
+
69 
+
70  // Tests that void conversion methods work
+
71  TEST_METHOD(Convert_Void)
+
72  {
+
73  // Setup
+
74  ArgList args({
+
75  "/my/fake/path/wahoo.out",
+
76  "--pud"
+
77  });
+
78 
+
79  // Exercise
+
80  Hazelnupp nupp(C_Ify(args));
+
81  nupp.SetCrashOnFail(false);
+
82 
+
83  // Verify
+
84  const Hazelnupp* ptnupp = &nupp;
+
85 
+
86  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
87  [ptnupp]
+
88  {
+
89  (*ptnupp)["--pud"].GetInt64();
+
90  }
+
91  , L"Int64");
+
92 
+
93  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
94  [ptnupp]
+
95  {
+
96  (*ptnupp)["--pud"].GetInt32();
+
97  }
+
98  , L"Int32");
+
99 
+
100  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
101  [ptnupp]
+
102  {
+
103  (*ptnupp)["--pud"].GetFloat64();
+
104  }
+
105  , L"Float64");
+
106 
+
107  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
108  [ptnupp]
+
109  {
+
110  (*ptnupp)["--pud"].GetFloat32();
+
111  }
+
112  , L"Float32");
+
113 
+
114  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
115  [ptnupp]
+
116  {
+
117  (*ptnupp)["--pud"].GetString();
+
118  }
+
119  , L"String");
+
120 
+
121  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
122  [ptnupp]
+
123  {
+
124  (*ptnupp)["--pud"].GetList();
+
125  }
+
126  , L"List");
+
127 
+
128 
+
129  return;
+
130  }
+
131 
+
132  // Tests that int conversion methods work
+
133  TEST_METHOD(Convert_Int)
+
134  {
+
135  // Setup
+
136  ArgList args({
+
137  "/my/fake/path/wahoo.out",
+
138  "--pud",
+
139  "39"
+
140  });
+
141 
+
142  // Exercise
+
143  Hazelnupp nupp(C_Ify(args));
+
144  nupp.SetCrashOnFail(false);
+
145 
+
146  // Verify
+
147  const Hazelnupp* ptnupp = &nupp;
+
148 
+
149  Assert::AreEqual(39ll, nupp["--pud"].GetInt64(), L"Int64");
+
150  Assert::AreEqual(39, nupp["--pud"].GetInt32(), L"Int32");
+
151  Assert::IsTrue(39.0l == nupp["--pud"].GetFloat64(), L"Float64");
+
152  Assert::AreEqual(39.0, nupp["--pud"].GetFloat32(), L"Float32");
+
153  Assert::AreEqual(std::string("39"), nupp["--pud"].GetString(), L"String");
+
154 
+
155  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
156  [ptnupp]
+
157  {
+
158  (*ptnupp)["--pud"].GetList();
+
159  }
+
160  , L"List");
+
161 
+
162 
+
163  return;
+
164  }
+
165 
+
166  // Tests that float conversion methods work
+
167  TEST_METHOD(Convert_Float)
+
168  {
+
169  // Setup
+
170  ArgList args({
+
171  "/my/fake/path/wahoo.out",
+
172  "--pud",
+
173  "39.5"
+
174  });
+
175 
+
176  // Exercise
+
177  Hazelnupp nupp(C_Ify(args));
+
178  nupp.SetCrashOnFail(false);
+
179 
+
180  // Verify
+
181  const Hazelnupp* ptnupp = &nupp;
+
182 
+
183  Assert::AreEqual(39ll, nupp["--pud"].GetInt64(), L"Int64");
+
184  Assert::AreEqual(39, nupp["--pud"].GetInt32(), L"Int32");
+
185  Assert::IsTrue(39.5l == nupp["--pud"].GetFloat64(), L"Float64");
+
186  Assert::AreEqual(39.5, nupp["--pud"].GetFloat32(), L"Float32");
+
187  Assert::AreEqual(std::string("39.5"), nupp["--pud"].GetString(), L"String");
+
188 
+
189  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
190  [ptnupp]
+
191  {
+
192  (*ptnupp)["--pud"].GetList();
+
193  }
+
194  , L"List");
+
195 
+
196 
+
197  return;
+
198  }
+
199 
+
200  // Tests that list conversion methods work
+
201  TEST_METHOD(Convert_List)
+
202  {
+
203  // Setup
+
204  ArgList args({
+
205  "/my/fake/path/wahoo.out",
+
206  "--pud",
+
207  "apple",
+
208  "1",
+
209  "2",
+
210  "3"
+
211  });
+
212 
+
213  // Exercise
+
214  Hazelnupp nupp(C_Ify(args));
+
215  nupp.SetCrashOnFail(false);
+
216 
+
217  // Verify
+
218  const Hazelnupp* ptnupp = &nupp;
+
219 
+
220  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
221  [ptnupp]
+
222  {
+
223  (*ptnupp)["--pud"].GetInt64();
+
224  }
+
225  , L"Int64");
+
226 
+
227  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
228  [ptnupp]
+
229  {
+
230  (*ptnupp)["--pud"].GetInt32();
+
231  }
+
232  , L"Int32");
+
233 
+
234  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
235  [ptnupp]
+
236  {
+
237  (*ptnupp)["--pud"].GetFloat64();
+
238  }
+
239  , L"Float64");
+
240 
+
241  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
242  [ptnupp]
+
243  {
+
244  (*ptnupp)["--pud"].GetFloat32();
+
245  }
+
246  , L"Float32");
+
247 
+
248  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
+
249  [ptnupp]
+
250  {
+
251  (*ptnupp)["--pud"].GetString();
+
252  }
+
253  , L"String");
+
254 
+
255  return;
+
256  }
+
257  };
+
258 }
+
+
TestHazelnupp
Definition: Abbreviations.cpp:7
+
TestHazelnupp::TEST_CLASS
TEST_CLASS(_Conversion)
Definition: Conversion.cpp:10
+
C_Ify
#define C_Ify(vector)
Definition: helper.h:4
+
ArgList
std::vector< const char * > ArgList
Definition: helper.h:6
+
Hazelnupp
The main class to interface with.
Definition: Hazelnupp.h:9
+
helper.h
+ + + + diff --git a/docs/DataType_8h.html b/docs/DataType_8h.html new file mode 100644 index 0000000..74bc12c --- /dev/null +++ b/docs/DataType_8h.html @@ -0,0 +1,180 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/DataType.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Enumerations
+
+
DataType.h File Reference
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Enumerations

enum  DATA_TYPE {
+  DATA_TYPE::VOID, +DATA_TYPE::INT, +DATA_TYPE::FLOAT, +DATA_TYPE::STRING, +
+  DATA_TYPE::LIST +
+ }
 The different data types a paramater can be. More...
 
+

Enumeration Type Documentation

+ +

◆ DATA_TYPE

+ +
+
+ + + + + +
+ + + + +
enum DATA_TYPE
+
+strong
+
+ +

The different data types a paramater can be.

+ + + + + + +
Enumerator
VOID 
INT 
FLOAT 
STRING 
LIST 
+ +

Definition at line 5 of file DataType.h.

+
6 {
+
7  VOID,
+
8  INT,
+
9  FLOAT,
+
10  STRING,
+
11  LIST
+
12 };
+
+
+
+
+
DATA_TYPE::VOID
@ VOID
+
DATA_TYPE::LIST
@ LIST
+
DATA_TYPE::FLOAT
@ FLOAT
+
DATA_TYPE::INT
@ INT
+
DATA_TYPE::STRING
@ STRING
+ + + + diff --git a/docs/DataType_8h__dep__incl.map b/docs/DataType_8h__dep__incl.map new file mode 100644 index 0000000..c561cca --- /dev/null +++ b/docs/DataType_8h__dep__incl.map @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/DataType_8h__dep__incl.md5 b/docs/DataType_8h__dep__incl.md5 new file mode 100644 index 0000000..3db0014 --- /dev/null +++ b/docs/DataType_8h__dep__incl.md5 @@ -0,0 +1 @@ +53cc32d8b6240e57e0be50e31234d161 \ No newline at end of file diff --git a/docs/DataType_8h__dep__incl.png b/docs/DataType_8h__dep__incl.png new file mode 100644 index 0000000..83c9a7b Binary files /dev/null and b/docs/DataType_8h__dep__incl.png differ diff --git a/docs/DataType_8h_source.html b/docs/DataType_8h_source.html new file mode 100644 index 0000000..52b5f98 --- /dev/null +++ b/docs/DataType_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/DataType.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
DataType.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 
+
5 enum class DATA_TYPE
+
6 {
+
7  VOID,
+
8  INT,
+
9  FLOAT,
+
10  STRING,
+
11  LIST
+
12 };
+
+
DATA_TYPE
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:5
+
DATA_TYPE::VOID
@ VOID
+
DATA_TYPE::LIST
@ LIST
+
DATA_TYPE::FLOAT
@ FLOAT
+
DATA_TYPE::INT
@ INT
+
DATA_TYPE::STRING
@ STRING
+ + + + diff --git a/docs/Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html b/docs/Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html new file mode 100644 index 0000000..2f85f9c --- /dev/null +++ b/docs/Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html @@ -0,0 +1,85 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Debug/Hazelnupp.vcxproj.FileListAbsolute.txt File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Hazelnupp/Debug/Hazelnupp.vcxproj.FileListAbsolute.txt File Reference
+
+
+
+ + + + diff --git a/docs/Debug_2Test__Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html b/docs/Debug_2Test__Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html new file mode 100644 index 0000000..dc5d6cc --- /dev/null +++ b/docs/Debug_2Test__Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html @@ -0,0 +1,85 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Debug/Test_Hazelnupp.vcxproj.FileListAbsolute.txt File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Test_Hazelnupp/Debug/Test_Hazelnupp.vcxproj.FileListAbsolute.txt File Reference
+
+
+
+ + + + diff --git a/docs/FloatValue_8cpp.html b/docs/FloatValue_8cpp.html new file mode 100644 index 0000000..a67d042 --- /dev/null +++ b/docs/FloatValue_8cpp.html @@ -0,0 +1,110 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/FloatValue.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
FloatValue.cpp File Reference
+
+
+
#include "FloatValue.h"
+#include "HazelnuppException.h"
+#include <sstream>
+
+Include dependency graph for FloatValue.cpp:
+
+
+ + + + + + + + + + + +
+
+

Go to the source code of this file.

+
+ + + + diff --git a/docs/FloatValue_8cpp__incl.map b/docs/FloatValue_8cpp__incl.map new file mode 100644 index 0000000..baf1876 --- /dev/null +++ b/docs/FloatValue_8cpp__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/FloatValue_8cpp__incl.md5 b/docs/FloatValue_8cpp__incl.md5 new file mode 100644 index 0000000..ad58fce --- /dev/null +++ b/docs/FloatValue_8cpp__incl.md5 @@ -0,0 +1 @@ +b3f9cd4cf82115a6509a6170e6bc592c \ No newline at end of file diff --git a/docs/FloatValue_8cpp__incl.png b/docs/FloatValue_8cpp__incl.png new file mode 100644 index 0000000..27c12bd Binary files /dev/null and b/docs/FloatValue_8cpp__incl.png differ diff --git a/docs/FloatValue_8cpp_source.html b/docs/FloatValue_8cpp_source.html new file mode 100644 index 0000000..78f719f --- /dev/null +++ b/docs/FloatValue_8cpp_source.html @@ -0,0 +1,178 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/FloatValue.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
FloatValue.cpp
+
+
+Go to the documentation of this file.
1 #include "FloatValue.h"
+
2 #include "HazelnuppException.h"
+
3 #include <sstream>
+
4 
+
5 FloatValue::FloatValue(const long double& value)
+
6  :
+ +
8  value { value }
+
9 {
+
10  return;
+
11 }
+
12 
+ +
14 {
+
15  return new FloatValue(value);
+
16 }
+
17 
+
18 std::string FloatValue::GetAsOsString() const
+
19 {
+
20  std::stringstream ss;
+
21  ss << "FloatValue: " << value;
+
22  return ss.str();
+
23 }
+
24 
+
25 const long double& FloatValue::GetValue() const
+
26 {
+
27  return value;
+
28 }
+
29 
+
30 FloatValue::operator long double() const
+
31 {
+
32  return value;
+
33 }
+
34 
+
35 FloatValue::operator double() const
+
36 {
+
37  return (double)value;
+
38 }
+
39 
+
40 
+
41 
+
42 long long int FloatValue::GetInt64() const
+
43 {
+
44  return (long long int)value;
+
45 }
+
46 
+ +
48 {
+
49  return (int)value;
+
50 }
+
51 
+
52 long double FloatValue::GetFloat64() const
+
53 {
+
54  return value;
+
55 }
+
56 
+
57 double FloatValue::GetFloat32() const
+
58 {
+
59  return (double)value;
+
60 }
+
61 
+
62 std::string FloatValue::GetString() const
+
63 {
+
64  std::stringstream ss;
+
65  ss << value;
+
66 
+
67  return ss.str();
+
68 }
+
69 
+
70 const std::vector<Value*>& FloatValue::GetList() const
+
71 {
+ +
73 }
+
+
HazelnuppException.h
+
DATA_TYPE
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:5
+
FloatValue::GetValue
const long double & GetValue() const
Will return the raw value.
Definition: FloatValue.cpp:25
+
DATA_TYPE::FLOAT
@ FLOAT
+
Value
Abstract class for values.
Definition: Value.h:8
+
FloatValue::GetString
std::string GetString() const override
Will return the data as a string.
Definition: FloatValue.cpp:62
+
FloatValue::Deepcopy
Value * Deepcopy() const override
Will return a deeopopy of this object.
Definition: FloatValue.cpp:13
+
HazelnuppValueNotConvertibleException
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
Definition: HazelnuppException.h:33
+
FloatValue::GetAsOsString
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: FloatValue.cpp:18
+
FloatValue::GetFloat64
long double GetFloat64() const override
Will return the data as a long double.
Definition: FloatValue.cpp:52
+
FloatValue::FloatValue
FloatValue(const long double &value)
Definition: FloatValue.cpp:5
+
FloatValue::GetInt32
int GetInt32() const override
Will return the data as an int.
Definition: FloatValue.cpp:47
+
FloatValue.h
+
FloatValue::GetInt64
long long int GetInt64() const override
Will return the data as a long long int.
Definition: FloatValue.cpp:42
+
FloatValue::GetList
const std::vector< Value * > & GetList() const override
Throws HazelnuppValueNotConvertibleException.
Definition: FloatValue.cpp:70
+
FloatValue::GetFloat32
double GetFloat32() const override
Will return the data as a double.
Definition: FloatValue.cpp:57
+ + + + diff --git a/docs/FloatValue_8h.html b/docs/FloatValue_8h.html new file mode 100644 index 0000000..1b53071 --- /dev/null +++ b/docs/FloatValue_8h.html @@ -0,0 +1,124 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/FloatValue.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes
+
+
FloatValue.h File Reference
+
+
+
#include "Value.h"
+#include <ostream>
+
+Include dependency graph for FloatValue.h:
+
+
+ + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  FloatValue
 Specializations for floating point values (uses long double) More...
 
+
+ + + + diff --git a/docs/FloatValue_8h__dep__incl.map b/docs/FloatValue_8h__dep__incl.map new file mode 100644 index 0000000..aa6c8a7 --- /dev/null +++ b/docs/FloatValue_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/FloatValue_8h__dep__incl.md5 b/docs/FloatValue_8h__dep__incl.md5 new file mode 100644 index 0000000..a0ee1a1 --- /dev/null +++ b/docs/FloatValue_8h__dep__incl.md5 @@ -0,0 +1 @@ +6cf23af62c7641b0c347b14a52c8bd43 \ No newline at end of file diff --git a/docs/FloatValue_8h__dep__incl.png b/docs/FloatValue_8h__dep__incl.png new file mode 100644 index 0000000..b5ce816 Binary files /dev/null and b/docs/FloatValue_8h__dep__incl.png differ diff --git a/docs/FloatValue_8h__incl.map b/docs/FloatValue_8h__incl.map new file mode 100644 index 0000000..387f7e7 --- /dev/null +++ b/docs/FloatValue_8h__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/FloatValue_8h__incl.md5 b/docs/FloatValue_8h__incl.md5 new file mode 100644 index 0000000..1e74042 --- /dev/null +++ b/docs/FloatValue_8h__incl.md5 @@ -0,0 +1 @@ +9b604a14942d77e96210b43e148cde7d \ No newline at end of file diff --git a/docs/FloatValue_8h__incl.png b/docs/FloatValue_8h__incl.png new file mode 100644 index 0000000..869b3b3 Binary files /dev/null and b/docs/FloatValue_8h__incl.png differ diff --git a/docs/FloatValue_8h_source.html b/docs/FloatValue_8h_source.html new file mode 100644 index 0000000..5ee6b30 --- /dev/null +++ b/docs/FloatValue_8h_source.html @@ -0,0 +1,135 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/FloatValue.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
FloatValue.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include "Value.h"
+
3 #include <ostream>
+
4 
+
7 class FloatValue : public Value
+
8 {
+
9 public:
+
10  FloatValue(const long double& value);
+
11  ~FloatValue() override {};
+
12 
+
14  Value* Deepcopy() const override;
+
15 
+
17  std::string GetAsOsString() const override;
+
18 
+
20  const long double& GetValue() const;
+
21 
+
22  operator long double () const;
+
23  operator double() const;
+
24 
+
26  long long int GetInt64() const override;
+
28  int GetInt32() const override;
+
29 
+
31  long double GetFloat64() const override;
+
33  double GetFloat32() const override;
+
34 
+
36  std::string GetString() const override;
+
37 
+
39  const std::vector<Value*>& GetList() const override;
+
40 
+
41 private:
+
42  long double value;
+
43 };
+
+
FloatValue::GetValue
const long double & GetValue() const
Will return the raw value.
Definition: FloatValue.cpp:25
+
Value
Abstract class for values.
Definition: Value.h:8
+
FloatValue::~FloatValue
~FloatValue() override
Definition: FloatValue.h:11
+
FloatValue::GetString
std::string GetString() const override
Will return the data as a string.
Definition: FloatValue.cpp:62
+
FloatValue::Deepcopy
Value * Deepcopy() const override
Will return a deeopopy of this object.
Definition: FloatValue.cpp:13
+
FloatValue::GetAsOsString
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: FloatValue.cpp:18
+
FloatValue::GetFloat64
long double GetFloat64() const override
Will return the data as a long double.
Definition: FloatValue.cpp:52
+
FloatValue
Specializations for floating point values (uses long double)
Definition: FloatValue.h:7
+
FloatValue::FloatValue
FloatValue(const long double &value)
Definition: FloatValue.cpp:5
+
FloatValue::GetInt32
int GetInt32() const override
Will return the data as an int.
Definition: FloatValue.cpp:47
+
FloatValue::GetInt64
long long int GetInt64() const override
Will return the data as a long long int.
Definition: FloatValue.cpp:42
+
FloatValue::GetList
const std::vector< Value * > & GetList() const override
Throws HazelnuppValueNotConvertibleException.
Definition: FloatValue.cpp:70
+
FloatValue::GetFloat32
double GetFloat32() const override
Will return the data as a double.
Definition: FloatValue.cpp:57
+
Value.h
+ + + + diff --git a/docs/HazelnuppException_8h.html b/docs/HazelnuppException_8h.html new file mode 100644 index 0000000..52b0dd4 --- /dev/null +++ b/docs/HazelnuppException_8h.html @@ -0,0 +1,139 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/HazelnuppException.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes
+
+
HazelnuppException.h File Reference
+
+
+
#include <stdexcept>
+
+Include dependency graph for HazelnuppException.h:
+
+
+ + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Classes

class  HazelnuppException
 Generic hazelnupp exception. More...
 
class  HazelnuppInvalidKeyException
 Gets thrown when an non-existent key gets dereferenced. More...
 
class  HazelnuppValueNotConvertibleException
 Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not convertible. More...
 
class  HazelnuppConstraintException
 Gets thrown something bad happens because of parameter constraints. More...
 
class  HazelnuppConstraintTypeMissmatch
 Gets thrown when a parameter is of a type that does not match the required type, and is not convertible to it. More...
 
class  HazelnuppConstraintMissingValue
 Gets thrown when a parameter constrained to be required is not provided, and has no default value set. More...
 
+
+ + + + diff --git a/docs/HazelnuppException_8h__dep__incl.map b/docs/HazelnuppException_8h__dep__incl.map new file mode 100644 index 0000000..be745d8 --- /dev/null +++ b/docs/HazelnuppException_8h__dep__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/HazelnuppException_8h__dep__incl.md5 b/docs/HazelnuppException_8h__dep__incl.md5 new file mode 100644 index 0000000..0d4788b --- /dev/null +++ b/docs/HazelnuppException_8h__dep__incl.md5 @@ -0,0 +1 @@ +57d355773249b6d7455978a59686235f \ No newline at end of file diff --git a/docs/HazelnuppException_8h__dep__incl.png b/docs/HazelnuppException_8h__dep__incl.png new file mode 100644 index 0000000..2184595 Binary files /dev/null and b/docs/HazelnuppException_8h__dep__incl.png differ diff --git a/docs/HazelnuppException_8h__incl.map b/docs/HazelnuppException_8h__incl.map new file mode 100644 index 0000000..37033b5 --- /dev/null +++ b/docs/HazelnuppException_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/HazelnuppException_8h__incl.md5 b/docs/HazelnuppException_8h__incl.md5 new file mode 100644 index 0000000..1b8bb07 --- /dev/null +++ b/docs/HazelnuppException_8h__incl.md5 @@ -0,0 +1 @@ +7497987f6e78b96fc05595540da5a488 \ No newline at end of file diff --git a/docs/HazelnuppException_8h__incl.png b/docs/HazelnuppException_8h__incl.png new file mode 100644 index 0000000..910c941 Binary files /dev/null and b/docs/HazelnuppException_8h__incl.png differ diff --git a/docs/HazelnuppException_8h_source.html b/docs/HazelnuppException_8h_source.html new file mode 100644 index 0000000..0d3dbb3 --- /dev/null +++ b/docs/HazelnuppException_8h_source.html @@ -0,0 +1,161 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/HazelnuppException.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HazelnuppException.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include <stdexcept>
+
3 
+
6 class HazelnuppException : public std::exception
+
7 {
+
8 public:
+ +
10  HazelnuppException(const std::string& msg) : message{ msg } {};
+
11 
+
13  const std::string& What() const
+
14  {
+
15  return message;
+
16  }
+
17 
+
18 protected:
+
19  std::string message;
+
20 };
+
21 
+ +
25 {
+
26 public:
+ +
28  HazelnuppInvalidKeyException(const std::string& msg) : HazelnuppException(msg) {};
+
29 };
+
30 
+ +
34 {
+
35 public:
+ +
37  HazelnuppValueNotConvertibleException(const std::string& msg) : HazelnuppException(msg) {};
+
38 };
+
39 
+ +
43 {
+
44 public:
+ +
46  HazelnuppConstraintException(const std::string& msg) : HazelnuppException(msg) {};
+
47 };
+
48 
+ +
52 {
+
53 public:
+ + +
56 };
+
57 
+ +
61 {
+
62 public:
+ + +
65 };
+
+
HazelnuppException::What
const std::string & What() const
Will return an error message.
Definition: HazelnuppException.h:13
+
HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue
HazelnuppConstraintMissingValue(const std::string &msg)
Definition: HazelnuppException.h:64
+
HazelnuppConstraintException
Gets thrown something bad happens because of parameter constraints.
Definition: HazelnuppException.h:42
+
HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch
HazelnuppConstraintTypeMissmatch(const std::string &msg)
Definition: HazelnuppException.h:55
+
HazelnuppInvalidKeyException::HazelnuppInvalidKeyException
HazelnuppInvalidKeyException(const std::string &msg)
Definition: HazelnuppException.h:28
+
HazelnuppException
Generic hazelnupp exception.
Definition: HazelnuppException.h:6
+
HazelnuppInvalidKeyException::HazelnuppInvalidKeyException
HazelnuppInvalidKeyException()
Definition: HazelnuppException.h:27
+
HazelnuppConstraintTypeMissmatch
Gets thrown when a parameter is of a type that does not match the required type, and is not convertib...
Definition: HazelnuppException.h:51
+
HazelnuppException::HazelnuppException
HazelnuppException(const std::string &msg)
Definition: HazelnuppException.h:10
+
HazelnuppConstraintMissingValue
Gets thrown when a parameter constrained to be required is not provided, and has no default value set...
Definition: HazelnuppException.h:60
+
HazelnuppValueNotConvertibleException
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
Definition: HazelnuppException.h:33
+
HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException
HazelnuppValueNotConvertibleException()
Definition: HazelnuppException.h:36
+
HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue
HazelnuppConstraintMissingValue()
Definition: HazelnuppException.h:63
+
HazelnuppConstraintException::HazelnuppConstraintException
HazelnuppConstraintException()
Definition: HazelnuppException.h:45
+
HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch
HazelnuppConstraintTypeMissmatch()
Definition: HazelnuppException.h:54
+
HazelnuppInvalidKeyException
Gets thrown when an non-existent key gets dereferenced.
Definition: HazelnuppException.h:24
+
HazelnuppConstraintException::HazelnuppConstraintException
HazelnuppConstraintException(const std::string &msg)
Definition: HazelnuppException.h:46
+
HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException
HazelnuppValueNotConvertibleException(const std::string &msg)
Definition: HazelnuppException.h:37
+
HazelnuppException::HazelnuppException
HazelnuppException()
Definition: HazelnuppException.h:9
+
HazelnuppException::message
std::string message
Definition: HazelnuppException.h:19
+ + + + diff --git a/docs/Hazelnupp_8cpp.html b/docs/Hazelnupp_8cpp.html new file mode 100644 index 0000000..35bc024 --- /dev/null +++ b/docs/Hazelnupp_8cpp.html @@ -0,0 +1,130 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Hazelnupp.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Hazelnupp.cpp File Reference
+
+
+
#include "Hazelnupp.h"
+#include "VoidValue.h"
+#include "IntValue.h"
+#include "FloatValue.h"
+#include "StringValue.h"
+#include "ListValue.h"
+#include "HazelnuppException.h"
+#include "StringTools.h"
+#include <iostream>
+#include <cstdlib>
+
+Include dependency graph for Hazelnupp.cpp:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+
+ + + + diff --git a/docs/Hazelnupp_8cpp__incl.map b/docs/Hazelnupp_8cpp__incl.map new file mode 100644 index 0000000..b11c750 --- /dev/null +++ b/docs/Hazelnupp_8cpp__incl.map @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Hazelnupp_8cpp__incl.md5 b/docs/Hazelnupp_8cpp__incl.md5 new file mode 100644 index 0000000..e8b2664 --- /dev/null +++ b/docs/Hazelnupp_8cpp__incl.md5 @@ -0,0 +1 @@ +4d63500dc473ffaa933a4e0479de4f4c \ No newline at end of file diff --git a/docs/Hazelnupp_8cpp__incl.png b/docs/Hazelnupp_8cpp__incl.png new file mode 100644 index 0000000..a2a20a9 Binary files /dev/null and b/docs/Hazelnupp_8cpp__incl.png differ diff --git a/docs/Hazelnupp_8cpp_source.html b/docs/Hazelnupp_8cpp_source.html new file mode 100644 index 0000000..ee6668c --- /dev/null +++ b/docs/Hazelnupp_8cpp_source.html @@ -0,0 +1,527 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Hazelnupp.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Hazelnupp.cpp
+
+
+Go to the documentation of this file.
1 #include "Hazelnupp.h"
+
2 #include "VoidValue.h"
+
3 #include "IntValue.h"
+
4 #include "FloatValue.h"
+
5 #include "StringValue.h"
+
6 #include "ListValue.h"
+
7 #include "HazelnuppException.h"
+
8 #include "StringTools.h"
+
9 #include <iostream>
+
10 #include <cstdlib>
+
11 
+ +
13 {
+
14  return;
+
15 }
+
16 
+
17 Hazelnupp::Hazelnupp(const int argc, const char* const* argv)
+
18 {
+
19  Parse(argc, argv);
+
20  return;
+
21 }
+
22 
+ +
24 {
+
25  for (auto& it : parameters)
+
26  delete it.second;
+
27 
+
28  parameters.clear();
+
29 
+
30  return;
+
31 }
+
32 
+
33 void Hazelnupp::Parse(const int argc, const char* const* argv)
+
34 {
+
35  try
+
36  {
+
37  // Populate raw arguments
+
38  PopulateRawArgs(argc, argv);
+
39 
+
40  // Expand abbreviations
+
41  ExpandAbbreviations();
+
42 
+
43  executableName = std::string(rawArgs[0]);
+
44 
+
45  std::size_t i = 1;
+
46  while (i < rawArgs.size())
+
47  {
+
48  if ((rawArgs[i].length() > 2) && (rawArgs[i].substr(0, 2) == "--"))
+
49  {
+
50  Parameter* param = nullptr;
+
51  i = ParseNextParameter(i, param);
+
52 
+
53  parameters.insert(std::pair<std::string, Parameter*>(param->Key(), param));
+
54  }
+
55  else
+
56  i++;
+
57  }
+
58 
+
59  // Apply constraints such as default values, and required parameters.
+
60  // Types have already been enforced.
+
61  ApplyConstraints();
+
62  }
+
63  catch (const HazelnuppConstraintTypeMissmatch& hctm)
+
64  {
+
65  if (crashOnFail)
+
66  {
+
67  std::cerr << "Fatal error: Command-line parameter value-type mismatch at \"" << hctm.What() << "\"!";
+
68  quick_exit(-1009);
+
69  }
+
70  else
+
71  throw hctm; // yeet
+
72  }
+
73  catch (const HazelnuppConstraintMissingValue& hctm)
+
74  {
+
75  if (crashOnFail)
+
76  {
+
77  std::cerr << "Fatal error: Missing required command-line parameter \"" << hctm.What() << "\"!";
+
78  quick_exit(-1010);
+
79  }
+
80  else
+
81  throw hctm; // yeet
+
82  }
+
83 
+
84  return;
+
85 }
+
86 
+
87 std::size_t Hazelnupp::ParseNextParameter(const std::size_t parIndex, Parameter*& out_Par)
+
88 {
+
89  std::size_t i = parIndex;
+
90  const std::string key = rawArgs[parIndex];
+
91  std::vector<std::string> values;
+
92 
+
93  // Get values
+
94  for (i++; i < rawArgs.size(); i++)
+
95  // If not another parameter
+
96  if ((rawArgs[i].length() < 2) || (rawArgs[i].substr(0, 2) != "--"))
+
97  values.emplace_back(rawArgs[i]);
+
98  else
+
99  {
+
100  break;
+
101  }
+
102 
+
103  // Fetch constraint info
+
104  const ParamConstraint* pcn = GetConstraintForKey(key);
+
105 
+
106  Value* parsedVal = ParseValue(values, pcn);
+
107  if (parsedVal != nullptr)
+
108  {
+
109  out_Par = new Parameter(key, parsedVal);
+
110 
+
111  delete parsedVal;
+
112  parsedVal = nullptr;
+
113  }
+
114  else
+
115  throw std::runtime_error("Unable to parse parameter!");
+
116 
+
117  return i;
+
118 }
+
119 
+
120 void Hazelnupp::PopulateRawArgs(const int argc, const char* const* argv)
+
121 {
+
122  rawArgs.clear();
+
123  rawArgs.reserve(argc);
+
124 
+
125  for (int i = 0; i < argc; i++)
+
126  rawArgs.emplace_back(std::string(argv[i]));
+
127 
+
128  return;
+
129 }
+
130 
+
131 void Hazelnupp::ExpandAbbreviations()
+
132 {
+
133  // Abort if no abbreviations
+
134  if (abbreviations.size() == 0)
+
135  return;
+
136 
+
137  for (std::string& arg : rawArgs)
+
138  {
+
139  // Is arg registered as an abbreviation?
+
140  auto abbr = abbreviations.find(arg);
+
141  if (abbr != abbreviations.end())
+
142  {
+
143  // Yes: replace arg with the long form
+
144  arg = abbr->second;
+
145  }
+
146  }
+
147 
+
148  return;
+
149 }
+
150 
+
151 bool Hazelnupp::HasParam(const std::string& key) const
+
152 {
+
153  return parameters.find(key) != parameters.end();
+
154 }
+
155 
+
156 Value* Hazelnupp::ParseValue(const std::vector<std::string>& values, const ParamConstraint* constraint)
+
157 {
+
158  // Constraint values
+
159  const bool constrainType = (constraint != nullptr) && (constraint->constrainType);
+
160 
+
161  // Void-type
+
162  if (values.size() == 0)
+
163  {
+
164  // Is a list forced via a constraint? If yes, return an empty list
+
165  if ((constrainType) &&
+
166  (constraint->wantedType == DATA_TYPE::LIST))
+
167  return new ListValue();
+
168 
+
169  return new VoidValue;
+
170  }
+
171 
+
172  // Force void type by constraint
+
173  if ((constrainType) &&
+
174  (constraint->wantedType == DATA_TYPE::VOID))
+
175  {
+
176  return new VoidValue;
+
177  }
+
178 
+
179  // List-type
+
180  else if (values.size() > 1)
+
181  {
+
182  // Should the type be something other than list?
+
183  if ((constrainType) &&
+
184  (constraint->wantedType != DATA_TYPE::LIST))
+
185  {
+
186  throw HazelnuppConstraintTypeMissmatch(values[0] + " " + values[1]);
+
187  }
+
188 
+
189  ListValue* newList = new ListValue();
+
190  for (const std::string& val : values)
+
191  {
+
192  Value* tmp = ParseValue({ val });
+
193  newList->AddValue(tmp);
+
194  delete tmp;
+
195  }
+
196  return newList;
+
197  }
+
198 
+
199  // Now we're only dealing with a single value
+
200  const std::string& val = values[0];
+
201 
+
202  // String
+
203  if (!StringTools::IsNumeric(val, true))
+
204  {
+
205  // Is the type not supposed to be a string?
+
206  // void and list are already sorted out
+
207  if ((constrainType) &&
+
208  (constraint->wantedType != DATA_TYPE::STRING))
+
209  {
+
210  // We can only force a list-value from here
+
211  if (constraint->wantedType == DATA_TYPE::LIST)
+
212  {
+
213  ListValue* list = new ListValue();
+
214  Value* tmp = ParseValue({ val });
+
215  list->AddValue(tmp);
+
216  delete tmp;
+
217  tmp = nullptr;
+
218  return list;
+
219  }
+
220  // Else it not possible to convert to a numeric
+
221  else
+ +
223  }
+
224 
+
225  return new StringValue(val);
+
226  }
+
227 
+
228  // In this case we have a numeric value.
+
229  // We should still produce a string if requested
+
230  if ((constrainType) &&
+
231  (constraint->wantedType == DATA_TYPE::STRING))
+
232  return new StringValue(val);
+
233 
+
234  // Numeric
+
235  bool isInt;
+
236  long double num;
+
237 
+
238  if (StringTools::ParseNumber(val, isInt, num))
+
239  {
+
240  // Is the type constrained?
+
241  // (only int and float left)
+
242  if (constrainType)
+
243  {
+
244  // Must it be an integer?
+
245  if (constraint->wantedType == DATA_TYPE::INT)
+
246  return new IntValue((long long int)num);
+
247  // Must it be a floating point?
+
248  else if (constraint->wantedType == DATA_TYPE::FLOAT)
+
249  return new FloatValue(num);
+
250  // Else it must be a List
+
251  else
+
252  {
+
253  ListValue* list = new ListValue();
+
254  Value* tmp = ParseValue({ val });
+
255  list->AddValue(tmp);
+
256  delete tmp;
+
257  tmp = nullptr;
+
258  return list;
+
259  }
+
260  }
+
261  // Type is not constrained
+
262  else
+
263  {
+
264  // Integer
+
265  if (isInt)
+
266  return new IntValue((long long int)num);
+
267 
+
268  // Double
+
269  return new FloatValue(num);
+
270  }
+
271  }
+
272 
+
273  // Failed
+
274  return nullptr;
+
275 }
+
276 
+ +
278 {
+
279  return crashOnFail;
+
280 }
+
281 
+
282 void Hazelnupp::ApplyConstraints()
+
283 {
+
284  // Enforce required parameters / default values
+
285  for (const auto& pc : constraints)
+
286  // Parameter in question is not supplied
+
287  if (!HasParam(pc.second.key))
+
288  {
+
289  // Do we have a default value?
+
290  if (pc.second.defaultValue.size() > 0)
+
291  {
+
292  // Then create it now, by its default value
+
293 
+
294  Value* tmp = ParseValue(pc.second.defaultValue, &pc.second);
+
295  parameters.insert(std::pair<std::string, Parameter*>(
+
296  pc.second.key,
+
297  new Parameter(pc.second.key, tmp)
+
298  ));
+
299 
+
300  delete tmp;
+
301  tmp = nullptr;
+
302  }
+
303  // So we do not have a default value...
+
304  else
+
305  {
+
306  // Is it important to have the missing parameter?
+
307  if (pc.second.required)
+
308  // Throw an error message then
+
309  throw HazelnuppConstraintMissingValue(pc.second.key);
+
310  }
+
311  }
+
312 
+
313  return;
+
314 }
+
315 
+
316 const std::string& Hazelnupp::GetExecutableName() const
+
317 {
+
318  return executableName;
+
319 }
+
320 
+
321 const Value& Hazelnupp::operator[](const std::string& key) const
+
322 {
+
323  // Throw exception if param is unknown
+
324  if (!HasParam(key))
+ +
326 
+
327  return *parameters.find(key)->second->GetValue();
+
328 }
+
329 
+
330 void Hazelnupp::RegisterAbbreviation(const std::string& abbrev, const std::string& target)
+
331 {
+
332  abbreviations.insert(std::pair<std::string, std::string>(abbrev, target));
+
333  return;
+
334 }
+
335 
+
336 const std::string& Hazelnupp::GetAbbreviation(const std::string& abbrev) const
+
337 {
+
338  return abbreviations.find(abbrev)->second;
+
339 }
+
340 
+
341 bool Hazelnupp::HasAbbreviation(const std::string& abbrev) const
+
342 {
+
343  return abbreviations.find(abbrev) != abbreviations.end();
+
344 }
+
345 
+ +
347 {
+
348  abbreviations.clear();
+
349  return;
+
350 }
+
351 
+
352 void Hazelnupp::RegisterConstraints(const std::vector<ParamConstraint>& constraints)
+
353 {
+
354  for (const ParamConstraint& pc : constraints)
+
355  {
+
356  // Does this constraint already exist?
+
357  const auto constraint = this->constraints.find(pc.key);
+
358  // If yes, replace it.
+
359  if (constraint != this->constraints.end())
+
360  constraint->second = pc;
+
361 
+
362  // Else, create a new pair
+
363  else
+
364  this->constraints.insert(std::pair<std::string, ParamConstraint>(
+
365  pc.key,
+
366  pc
+
367  ));
+
368  }
+
369 
+
370  return;
+
371 }
+
372 
+ +
374 {
+
375  constraints.clear();
+
376  return;
+
377 }
+
378 
+
379 void Hazelnupp::SetCrashOnFail(bool crashOnFail)
+
380 {
+
381  this->crashOnFail = crashOnFail;
+
382  return;
+
383 }
+
384 
+
385 const ParamConstraint* Hazelnupp::GetConstraintForKey(const std::string& key) const
+
386 {
+
387  const auto constraint = constraints.find(key);
+
388 
+
389  if (constraint == constraints.end())
+
390  return nullptr;
+
391 
+
392  return &constraint->second;
+
393 }
+
+
HazelnuppException::What
const std::string & What() const
Will return an error message.
Definition: HazelnuppException.h:13
+
Hazelnupp::Hazelnupp
Hazelnupp()
Definition: Hazelnupp.cpp:12
+
HazelnuppException.h
+
ListValue::AddValue
void AddValue(const Value *value)
Will add this value to the list.
Definition: ListValue.cpp:31
+
DATA_TYPE::VOID
@ VOID
+
Hazelnupp::RegisterAbbreviation
void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
Will register an abbreviation (like -f for –force)
Definition: Hazelnupp.cpp:330
+
StringTools::IsNumeric
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:54
+
Hazelnupp::ClearConstraints
void ClearConstraints()
Will delete all constraints.
Definition: Hazelnupp.cpp:373
+
IntValue
Specializations for integer values (uses long long int)
Definition: IntValue.h:6
+
ListValue
Specializations for list values (uses std::vector<Value*>)
Definition: ListValue.h:7
+
Hazelnupp::RegisterConstraints
void RegisterConstraints(const std::vector< ParamConstraint > &constraints)
Will register parameter constraints.
Definition: Hazelnupp.cpp:352
+
DATA_TYPE::LIST
@ LIST
+
StringValue.h
+
IntValue.h
+
HazelnuppConstraintTypeMissmatch
Gets thrown when a parameter is of a type that does not match the required type, and is not convertib...
Definition: HazelnuppException.h:51
+
DATA_TYPE::FLOAT
@ FLOAT
+
Value
Abstract class for values.
Definition: Value.h:8
+
HazelnuppConstraintMissingValue
Gets thrown when a parameter constrained to be required is not provided, and has no default value set...
Definition: HazelnuppException.h:60
+
Parameter
Definition: Parameter.h:6
+
Hazelnupp::GetAbbreviation
const std::string & GetAbbreviation(const std::string &abbrev) const
Will return the long form of an abbreviation (like –force for -f)
Definition: Hazelnupp.cpp:336
+
Parameter::Key
const std::string & Key() const
Will return the key of this parameter.
Definition: Parameter.cpp:19
+
VoidValue
Specializations for void values.
Definition: VoidValue.h:6
+
Hazelnupp::HasAbbreviation
bool HasAbbreviation(const std::string &abbrev) const
Will check wether or not an abbreviation is registered.
Definition: Hazelnupp.cpp:341
+
DATA_TYPE::INT
@ INT
+
ListValue.h
+
Hazelnupp::GetExecutableName
const std::string & GetExecutableName() const
Will return argv[0], the name of the executable.
Definition: Hazelnupp.cpp:316
+
FloatValue
Specializations for floating point values (uses long double)
Definition: FloatValue.h:7
+
StringValue
Specializations for string values (uses std::string)
Definition: StringValue.h:7
+
Hazelnupp::~Hazelnupp
~Hazelnupp()
Definition: Hazelnupp.cpp:23
+
VoidValue.h
+
StringTools::ParseNumber
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:80
+
Hazelnupp.h
+
HazelnuppInvalidKeyException
Gets thrown when an non-existent key gets dereferenced.
Definition: HazelnuppException.h:24
+
Hazelnupp::GetCrashOnFail
bool GetCrashOnFail() const
Gets whether the application crashes on an exception whilst parsing, and prints to stderr.
Definition: Hazelnupp.cpp:277
+
FloatValue.h
+
Hazelnupp::SetCrashOnFail
void SetCrashOnFail(bool crashOnFail)
Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...
Definition: Hazelnupp.cpp:379
+
Hazelnupp::HasParam
bool HasParam(const std::string &key) const
Will check wether a parameter exists given a key, or not.
Definition: Hazelnupp.cpp:151
+
ParamConstraint::constrainType
bool constrainType
Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
Definition: ParamConstraint.h:52
+
DATA_TYPE::STRING
@ STRING
+
ParamConstraint::wantedType
DATA_TYPE wantedType
Constrain the parameter to this value. Requires constrainType to be set to true.
Definition: ParamConstraint.h:55
+
ParamConstraint
Definition: ParamConstraint.h:6
+
Hazelnupp::Parse
void Parse(const int argc, const char *const *argv)
Will parse command line arguments.
Definition: Hazelnupp.cpp:33
+
StringTools.h
+
Hazelnupp::operator[]
const Value & operator[](const std::string &key) const
Will return the value given a key.
Definition: Hazelnupp.cpp:321
+
Hazelnupp::ClearAbbreviations
void ClearAbbreviations()
Will delete all abbreviations.
Definition: Hazelnupp.cpp:346
+ + + + diff --git a/docs/Hazelnupp_8h.html b/docs/Hazelnupp_8h.html new file mode 100644 index 0000000..fa16191 --- /dev/null +++ b/docs/Hazelnupp_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Hazelnupp.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes
+
+
Hazelnupp.h File Reference
+
+
+
#include "Parameter.h"
+#include "ParamConstraint.h"
+#include <unordered_map>
+#include <vector>
+
+Include dependency graph for Hazelnupp.h:
+
+
+ + + + + + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  Hazelnupp
 The main class to interface with. More...
 
+
+ + + + diff --git a/docs/Hazelnupp_8h__dep__incl.map b/docs/Hazelnupp_8h__dep__incl.map new file mode 100644 index 0000000..ffdcea6 --- /dev/null +++ b/docs/Hazelnupp_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/Hazelnupp_8h__dep__incl.md5 b/docs/Hazelnupp_8h__dep__incl.md5 new file mode 100644 index 0000000..a7ffd77 --- /dev/null +++ b/docs/Hazelnupp_8h__dep__incl.md5 @@ -0,0 +1 @@ +5d6fe09e5292b77269845d454a648df4 \ No newline at end of file diff --git a/docs/Hazelnupp_8h__dep__incl.png b/docs/Hazelnupp_8h__dep__incl.png new file mode 100644 index 0000000..f3ec43e Binary files /dev/null and b/docs/Hazelnupp_8h__dep__incl.png differ diff --git a/docs/Hazelnupp_8h__incl.map b/docs/Hazelnupp_8h__incl.map new file mode 100644 index 0000000..e2be8dd --- /dev/null +++ b/docs/Hazelnupp_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/Hazelnupp_8h__incl.md5 b/docs/Hazelnupp_8h__incl.md5 new file mode 100644 index 0000000..f39864f --- /dev/null +++ b/docs/Hazelnupp_8h__incl.md5 @@ -0,0 +1 @@ +1ce9845c7ab32e24bfb9df598b5bdad8 \ No newline at end of file diff --git a/docs/Hazelnupp_8h__incl.png b/docs/Hazelnupp_8h__incl.png new file mode 100644 index 0000000..483b066 Binary files /dev/null and b/docs/Hazelnupp_8h__incl.png differ diff --git a/docs/Hazelnupp_8h_source.html b/docs/Hazelnupp_8h_source.html new file mode 100644 index 0000000..501b119 --- /dev/null +++ b/docs/Hazelnupp_8h_source.html @@ -0,0 +1,174 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Hazelnupp.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Hazelnupp.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include "Parameter.h"
+
3 #include "ParamConstraint.h"
+
4 #include <unordered_map>
+
5 #include <vector>
+
6 
+
9 class Hazelnupp
+
10 {
+
11 public:
+
12  Hazelnupp();
+
13  Hazelnupp(const int argc, const char* const* argv);
+
14 
+
15  ~Hazelnupp();
+
16 
+
18  void Parse(const int argc, const char* const* argv);
+
19 
+
21  const std::string& GetExecutableName() const;
+
22 
+
24  const Value& operator[](const std::string& key) const;
+
25 
+
27  bool HasParam(const std::string& key) const;
+
28 
+
29  // Abbreviations
+
31  void RegisterAbbreviation(const std::string& abbrev, const std::string& target);
+
32 
+
34  const std::string& GetAbbreviation(const std::string& abbrev) const;
+
35 
+
37  bool HasAbbreviation(const std::string& abbrev) const;
+
38 
+
40  void ClearAbbreviations();
+
41 
+
43  void RegisterConstraints(const std::vector<ParamConstraint>& constraints);
+
44 
+
46  void ClearConstraints();
+
47 
+
50  void SetCrashOnFail(bool crashOnFail);
+
51 
+
53  bool GetCrashOnFail() const;
+
54 
+
55 private:
+
57  void PopulateRawArgs(const int argc, const char* const* argv);
+
58 
+
60  void ExpandAbbreviations();
+
61 
+
63  std::size_t ParseNextParameter(const std::size_t parIndex, Parameter*& out_Par);
+
64 
+
66  Value* ParseValue(const std::vector<std::string>& values, const ParamConstraint* constraint = nullptr);
+
67 
+
69  void ApplyConstraints();
+
70 
+
72  const ParamConstraint* GetConstraintForKey(const std::string& key) const;
+
73 
+
74  std::string executableName;
+
75  std::unordered_map<std::string, Parameter*> parameters;
+
76 
+
77  // These are abbreviations. Like, -f for --force.
+
78  std::unordered_map<std::string, std::string> abbreviations;
+
79 
+
80  // Parameter constraints, mapped to keys
+
81  std::unordered_map<std::string, ParamConstraint> constraints;
+
82 
+
83  std::vector<std::string> rawArgs;
+
84 
+
86  bool crashOnFail = true;
+
87 };
+
+
Hazelnupp::Hazelnupp
Hazelnupp()
Definition: Hazelnupp.cpp:12
+
Hazelnupp::RegisterAbbreviation
void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
Will register an abbreviation (like -f for –force)
Definition: Hazelnupp.cpp:330
+
Hazelnupp::ClearConstraints
void ClearConstraints()
Will delete all constraints.
Definition: Hazelnupp.cpp:373
+
Hazelnupp::RegisterConstraints
void RegisterConstraints(const std::vector< ParamConstraint > &constraints)
Will register parameter constraints.
Definition: Hazelnupp.cpp:352
+
Value
Abstract class for values.
Definition: Value.h:8
+
ParamConstraint.h
+
Parameter
Definition: Parameter.h:6
+
Hazelnupp::GetAbbreviation
const std::string & GetAbbreviation(const std::string &abbrev) const
Will return the long form of an abbreviation (like –force for -f)
Definition: Hazelnupp.cpp:336
+
Hazelnupp::HasAbbreviation
bool HasAbbreviation(const std::string &abbrev) const
Will check wether or not an abbreviation is registered.
Definition: Hazelnupp.cpp:341
+
Hazelnupp::GetExecutableName
const std::string & GetExecutableName() const
Will return argv[0], the name of the executable.
Definition: Hazelnupp.cpp:316
+
Hazelnupp::~Hazelnupp
~Hazelnupp()
Definition: Hazelnupp.cpp:23
+
Parameter.h
+
Hazelnupp::GetCrashOnFail
bool GetCrashOnFail() const
Gets whether the application crashes on an exception whilst parsing, and prints to stderr.
Definition: Hazelnupp.cpp:277
+
Hazelnupp::SetCrashOnFail
void SetCrashOnFail(bool crashOnFail)
Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...
Definition: Hazelnupp.cpp:379
+
Hazelnupp::HasParam
bool HasParam(const std::string &key) const
Will check wether a parameter exists given a key, or not.
Definition: Hazelnupp.cpp:151
+
Hazelnupp
The main class to interface with.
Definition: Hazelnupp.h:9
+
ParamConstraint
Definition: ParamConstraint.h:6
+
Hazelnupp::Parse
void Parse(const int argc, const char *const *argv)
Will parse command line arguments.
Definition: Hazelnupp.cpp:33
+
Hazelnupp::operator[]
const Value & operator[](const std::string &key) const
Will return the value given a key.
Definition: Hazelnupp.cpp:321
+
Hazelnupp::ClearAbbreviations
void ClearAbbreviations()
Will delete all abbreviations.
Definition: Hazelnupp.cpp:346
+ + + + diff --git a/docs/IntValue_8cpp.html b/docs/IntValue_8cpp.html new file mode 100644 index 0000000..85296a3 --- /dev/null +++ b/docs/IntValue_8cpp.html @@ -0,0 +1,110 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/IntValue.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IntValue.cpp File Reference
+
+
+
#include "IntValue.h"
+#include "HazelnuppException.h"
+#include <sstream>
+
+Include dependency graph for IntValue.cpp:
+
+
+ + + + + + + + + + + +
+
+

Go to the source code of this file.

+
+ + + + diff --git a/docs/IntValue_8cpp__incl.map b/docs/IntValue_8cpp__incl.map new file mode 100644 index 0000000..287f93f --- /dev/null +++ b/docs/IntValue_8cpp__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/IntValue_8cpp__incl.md5 b/docs/IntValue_8cpp__incl.md5 new file mode 100644 index 0000000..ca0299a --- /dev/null +++ b/docs/IntValue_8cpp__incl.md5 @@ -0,0 +1 @@ +a513bf2aa6a8c4f9e291d3f6fb3798e4 \ No newline at end of file diff --git a/docs/IntValue_8cpp__incl.png b/docs/IntValue_8cpp__incl.png new file mode 100644 index 0000000..5f5a94f Binary files /dev/null and b/docs/IntValue_8cpp__incl.png differ diff --git a/docs/IntValue_8cpp_source.html b/docs/IntValue_8cpp_source.html new file mode 100644 index 0000000..8710ead --- /dev/null +++ b/docs/IntValue_8cpp_source.html @@ -0,0 +1,178 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/IntValue.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IntValue.cpp
+
+
+Go to the documentation of this file.
1 #include "IntValue.h"
+
2 #include "HazelnuppException.h"
+
3 #include <sstream>
+
4 
+
5 IntValue::IntValue(const long long int& value)
+
6  :
+ +
8  value { value }
+
9 {
+
10  return;
+
11 }
+
12 
+ +
14 {
+
15  return new IntValue(value);
+
16 }
+
17 
+
18 std::string IntValue::GetAsOsString() const
+
19 {
+
20  std::stringstream ss;
+
21  ss << "IntValue: " << value;
+
22  return ss.str();
+
23 }
+
24 
+
25 const long long int& IntValue::GetValue() const
+
26 {
+
27  return value;
+
28 }
+
29 
+
30 IntValue::operator long long int() const
+
31 {
+
32  return value;
+
33 }
+
34 
+
35 IntValue::operator int() const
+
36 {
+
37  return (int)value;
+
38 }
+
39 
+
40 
+
41 
+
42 long long int IntValue::GetInt64() const
+
43 {
+
44  return value;
+
45 }
+
46 
+
47 int IntValue::GetInt32() const
+
48 {
+
49  return (int)value;
+
50 }
+
51 
+
52 long double IntValue::GetFloat64() const
+
53 {
+
54  return (long double)value;
+
55 }
+
56 
+
57 double IntValue::GetFloat32() const
+
58 {
+
59  return (double)value;
+
60 }
+
61 
+
62 std::string IntValue::GetString() const
+
63 {
+
64  std::stringstream ss;
+
65  ss << value;
+
66 
+
67  return ss.str();
+
68 }
+
69 
+
70 const std::vector<Value*>& IntValue::GetList() const
+
71 {
+ +
73 }
+
+
HazelnuppException.h
+
DATA_TYPE
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:5
+
IntValue::GetAsOsString
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: IntValue.cpp:18
+
IntValue::GetFloat32
double GetFloat32() const override
Will return the data as a double.
Definition: IntValue.cpp:57
+
IntValue.h
+
Value
Abstract class for values.
Definition: Value.h:8
+
HazelnuppValueNotConvertibleException
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
Definition: HazelnuppException.h:33
+
DATA_TYPE::INT
@ INT
+
IntValue::GetValue
const long long int & GetValue() const
Will return the raw value.
Definition: IntValue.cpp:25
+
IntValue::IntValue
IntValue(const long long int &value)
Definition: IntValue.cpp:5
+
IntValue::GetInt32
int GetInt32() const override
Will return the data as an int.
Definition: IntValue.cpp:47
+
IntValue::GetFloat64
long double GetFloat64() const override
Will return the data as a long double.
Definition: IntValue.cpp:52
+
IntValue::GetString
std::string GetString() const override
Will return the data as a string.
Definition: IntValue.cpp:62
+
IntValue::Deepcopy
Value * Deepcopy() const override
Will return a deeopopy of this object.
Definition: IntValue.cpp:13
+
IntValue::GetList
const std::vector< Value * > & GetList() const override
Throws HazelnuppValueNotConvertibleException.
Definition: IntValue.cpp:70
+
IntValue::GetInt64
long long int GetInt64() const override
Will return the data as a long long int.
Definition: IntValue.cpp:42
+ + + + diff --git a/docs/IntValue_8h.html b/docs/IntValue_8h.html new file mode 100644 index 0000000..084ee89 --- /dev/null +++ b/docs/IntValue_8h.html @@ -0,0 +1,124 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/IntValue.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes
+
+
IntValue.h File Reference
+
+
+
#include "Value.h"
+
+Include dependency graph for IntValue.h:
+
+
+ + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntValue
 Specializations for integer values (uses long long int) More...
 
+
+ + + + diff --git a/docs/IntValue_8h__dep__incl.map b/docs/IntValue_8h__dep__incl.map new file mode 100644 index 0000000..017ecc5 --- /dev/null +++ b/docs/IntValue_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/IntValue_8h__dep__incl.md5 b/docs/IntValue_8h__dep__incl.md5 new file mode 100644 index 0000000..d25bda3 --- /dev/null +++ b/docs/IntValue_8h__dep__incl.md5 @@ -0,0 +1 @@ +5a4141368586afbf5f14dba7b0235510 \ No newline at end of file diff --git a/docs/IntValue_8h__dep__incl.png b/docs/IntValue_8h__dep__incl.png new file mode 100644 index 0000000..bae9cf2 Binary files /dev/null and b/docs/IntValue_8h__dep__incl.png differ diff --git a/docs/IntValue_8h__incl.map b/docs/IntValue_8h__incl.map new file mode 100644 index 0000000..b98a5c5 --- /dev/null +++ b/docs/IntValue_8h__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/IntValue_8h__incl.md5 b/docs/IntValue_8h__incl.md5 new file mode 100644 index 0000000..4f49589 --- /dev/null +++ b/docs/IntValue_8h__incl.md5 @@ -0,0 +1 @@ +caf40a9d83fa450c538f6eb146b29652 \ No newline at end of file diff --git a/docs/IntValue_8h__incl.png b/docs/IntValue_8h__incl.png new file mode 100644 index 0000000..c565f06 Binary files /dev/null and b/docs/IntValue_8h__incl.png differ diff --git a/docs/IntValue_8h_source.html b/docs/IntValue_8h_source.html new file mode 100644 index 0000000..99b2202 --- /dev/null +++ b/docs/IntValue_8h_source.html @@ -0,0 +1,135 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/IntValue.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IntValue.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include "Value.h"
+
3 
+
6 class IntValue : public Value
+
7 {
+
8 public:
+
9  IntValue(const long long int& value);
+
10  ~IntValue() override {};
+
11 
+
13  Value* Deepcopy() const override;
+
14 
+
16  std::string GetAsOsString() const override;
+
17 
+
19  const long long int& GetValue() const;
+
20 
+
21  operator long long int() const;
+
22  operator int() const;
+
23 
+
24 
+
26  long long int GetInt64() const override;
+
28  int GetInt32() const override;
+
29 
+
31  long double GetFloat64() const override;
+
33  double GetFloat32() const override;
+
34 
+
36  std::string GetString() const override;
+
37 
+
39  const std::vector<Value*>& GetList() const override;
+
40 
+
41 private:
+
42  long long int value;
+
43 };
+
+
IntValue::GetAsOsString
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: IntValue.cpp:18
+
IntValue::GetFloat32
double GetFloat32() const override
Will return the data as a double.
Definition: IntValue.cpp:57
+
IntValue
Specializations for integer values (uses long long int)
Definition: IntValue.h:6
+
Value
Abstract class for values.
Definition: Value.h:8
+
IntValue::GetValue
const long long int & GetValue() const
Will return the raw value.
Definition: IntValue.cpp:25
+
IntValue::IntValue
IntValue(const long long int &value)
Definition: IntValue.cpp:5
+
IntValue::~IntValue
~IntValue() override
Definition: IntValue.h:10
+
IntValue::GetInt32
int GetInt32() const override
Will return the data as an int.
Definition: IntValue.cpp:47
+
IntValue::GetFloat64
long double GetFloat64() const override
Will return the data as a long double.
Definition: IntValue.cpp:52
+
IntValue::GetString
std::string GetString() const override
Will return the data as a string.
Definition: IntValue.cpp:62
+
IntValue::Deepcopy
Value * Deepcopy() const override
Will return a deeopopy of this object.
Definition: IntValue.cpp:13
+
IntValue::GetList
const std::vector< Value * > & GetList() const override
Throws HazelnuppValueNotConvertibleException.
Definition: IntValue.cpp:70
+
IntValue::GetInt64
long long int GetInt64() const override
Will return the data as a long long int.
Definition: IntValue.cpp:42
+
Value.h
+ + + + diff --git a/docs/ListValue_8cpp.html b/docs/ListValue_8cpp.html new file mode 100644 index 0000000..6d592d0 --- /dev/null +++ b/docs/ListValue_8cpp.html @@ -0,0 +1,110 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/ListValue.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ListValue.cpp File Reference
+
+
+
#include "ListValue.h"
+#include "HazelnuppException.h"
+#include <sstream>
+
+Include dependency graph for ListValue.cpp:
+
+
+ + + + + + + + + + + +
+
+

Go to the source code of this file.

+
+ + + + diff --git a/docs/ListValue_8cpp__incl.map b/docs/ListValue_8cpp__incl.map new file mode 100644 index 0000000..b0c8d9b --- /dev/null +++ b/docs/ListValue_8cpp__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/ListValue_8cpp__incl.md5 b/docs/ListValue_8cpp__incl.md5 new file mode 100644 index 0000000..1d088a2 --- /dev/null +++ b/docs/ListValue_8cpp__incl.md5 @@ -0,0 +1 @@ +12fd1618e97deaecd680b70f119f5cac \ No newline at end of file diff --git a/docs/ListValue_8cpp__incl.png b/docs/ListValue_8cpp__incl.png new file mode 100644 index 0000000..441db2b Binary files /dev/null and b/docs/ListValue_8cpp__incl.png differ diff --git a/docs/ListValue_8cpp_source.html b/docs/ListValue_8cpp_source.html new file mode 100644 index 0000000..77677e1 --- /dev/null +++ b/docs/ListValue_8cpp_source.html @@ -0,0 +1,204 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/ListValue.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ListValue.cpp
+
+
+Go to the documentation of this file.
1 #include "ListValue.h"
+
2 #include "HazelnuppException.h"
+
3 #include <sstream>
+
4 
+ + +
7 {
+
8  return;
+
9 }
+
10 
+ +
12 {
+
13  for (Value* val : value)
+
14  delete val;
+
15 
+
16  value.clear();
+
17 
+
18  return;
+
19 }
+
20 
+ +
22 {
+
23  ListValue* newList = new ListValue();
+
24 
+
25  for (const Value* val : value)
+
26  newList->AddValue(val);
+
27 
+
28  return newList;
+
29 }
+
30 
+
31 void ListValue::AddValue(const Value* value)
+
32 {
+
33  this->value.emplace_back(value->Deepcopy());
+
34  return;
+
35 }
+
36 
+
37 const std::vector<Value*>& ListValue::GetValue() const
+
38 {
+
39  return value;
+
40 }
+
41 
+
42 std::string ListValue::GetAsOsString() const
+
43 {
+
44  std::stringstream ss;
+
45 
+
46  ss << "ListValue: [";
+
47 
+
48  for (const Value* val : value)
+
49  {
+
50  ss << *val;
+
51  if (val != value.back())
+
52  ss << ", ";
+
53  }
+
54 
+
55  ss << "]";
+
56 
+
57  return ss.str();
+
58 }
+
59 
+
60 ListValue::operator std::vector<Value*>() const
+
61 {
+
62  return value;
+
63 }
+
64 
+
65 
+
66 
+
67 long long int ListValue::GetInt64() const
+
68 {
+ +
70 }
+
71 
+ +
73 {
+ +
75 }
+
76 
+
77 long double ListValue::GetFloat64() const
+
78 {
+ +
80 }
+
81 
+
82 double ListValue::GetFloat32() const
+
83 {
+ +
85 }
+
86 
+
87 std::string ListValue::GetString() const
+
88 {
+ +
90 }
+
91 
+
92 const std::vector<Value*>& ListValue::GetList() const
+
93 {
+
94  return value;
+
95 }
+
+
HazelnuppException.h
+
DATA_TYPE
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:5
+
ListValue::AddValue
void AddValue(const Value *value)
Will add this value to the list.
Definition: ListValue.cpp:31
+
ListValue
Specializations for list values (uses std::vector<Value*>)
Definition: ListValue.h:7
+
ListValue::~ListValue
~ListValue() override
Definition: ListValue.cpp:11
+
ListValue::GetFloat32
double GetFloat32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:82
+
DATA_TYPE::LIST
@ LIST
+
ListValue::ListValue
ListValue()
Definition: ListValue.cpp:5
+
ListValue::Deepcopy
Value * Deepcopy() const override
Will return a deeopopy of this object.
Definition: ListValue.cpp:21
+
Value
Abstract class for values.
Definition: Value.h:8
+
Value::Deepcopy
virtual Value * Deepcopy() const =0
Will return a deeopopy of this object.
+
ListValue::GetFloat64
long double GetFloat64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:77
+
HazelnuppValueNotConvertibleException
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
Definition: HazelnuppException.h:33
+
ListValue::GetList
const std::vector< Value * > & GetList() const override
Will return this values list.
Definition: ListValue.cpp:92
+
ListValue.h
+
ListValue::GetAsOsString
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: ListValue.cpp:42
+
ListValue::GetInt64
long long int GetInt64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:67
+
ListValue::GetValue
const std::vector< Value * > & GetValue() const
Will return the raw value.
Definition: ListValue.cpp:37
+
ListValue::GetInt32
int GetInt32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:72
+
ListValue::GetString
std::string GetString() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:87
+ + + + diff --git a/docs/ListValue_8h.html b/docs/ListValue_8h.html new file mode 100644 index 0000000..1ec16cf --- /dev/null +++ b/docs/ListValue_8h.html @@ -0,0 +1,124 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/ListValue.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes
+
+
ListValue.h File Reference
+
+
+
#include "Value.h"
+#include <vector>
+
+Include dependency graph for ListValue.h:
+
+
+ + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  ListValue
 Specializations for list values (uses std::vector<Value*>) More...
 
+
+ + + + diff --git a/docs/ListValue_8h__dep__incl.map b/docs/ListValue_8h__dep__incl.map new file mode 100644 index 0000000..cc98cae --- /dev/null +++ b/docs/ListValue_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/ListValue_8h__dep__incl.md5 b/docs/ListValue_8h__dep__incl.md5 new file mode 100644 index 0000000..6b7d0aa --- /dev/null +++ b/docs/ListValue_8h__dep__incl.md5 @@ -0,0 +1 @@ +802f41af52b697b82dc77a4af0f62c8c \ No newline at end of file diff --git a/docs/ListValue_8h__dep__incl.png b/docs/ListValue_8h__dep__incl.png new file mode 100644 index 0000000..aee092d Binary files /dev/null and b/docs/ListValue_8h__dep__incl.png differ diff --git a/docs/ListValue_8h__incl.map b/docs/ListValue_8h__incl.map new file mode 100644 index 0000000..9cefd6a --- /dev/null +++ b/docs/ListValue_8h__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/ListValue_8h__incl.md5 b/docs/ListValue_8h__incl.md5 new file mode 100644 index 0000000..50099b1 --- /dev/null +++ b/docs/ListValue_8h__incl.md5 @@ -0,0 +1 @@ +1f357c8bbe0826b683d0428f992ad690 \ No newline at end of file diff --git a/docs/ListValue_8h__incl.png b/docs/ListValue_8h__incl.png new file mode 100644 index 0000000..32cc822 Binary files /dev/null and b/docs/ListValue_8h__incl.png differ diff --git a/docs/ListValue_8h_source.html b/docs/ListValue_8h_source.html new file mode 100644 index 0000000..03518a4 --- /dev/null +++ b/docs/ListValue_8h_source.html @@ -0,0 +1,137 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/ListValue.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ListValue.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include "Value.h"
+
3 #include <vector>
+
4 
+
7 class ListValue : public Value
+
8 {
+
9 public:
+
10  ListValue();
+
11  ~ListValue() override;
+
12 
+
14  Value* Deepcopy() const override;
+
15 
+
17  std::string GetAsOsString() const override;
+
18 
+
20  void AddValue(const Value* value);
+
21 
+
23  const std::vector<Value*>& GetValue() const;
+
24 
+
25  operator std::vector<Value*>() const;
+
26 
+
28  long long int GetInt64() const override;
+
30  int GetInt32() const override;
+
31 
+
33  long double GetFloat64() const override;
+
35  double GetFloat32() const override;
+
36 
+
38  std::string GetString() const override;
+
39 
+
41  const std::vector<Value*>& GetList() const override;
+
42 
+
43 private:
+
44  std::vector<Value*> value;
+
45 };
+
+
ListValue::AddValue
void AddValue(const Value *value)
Will add this value to the list.
Definition: ListValue.cpp:31
+
ListValue
Specializations for list values (uses std::vector<Value*>)
Definition: ListValue.h:7
+
ListValue::~ListValue
~ListValue() override
Definition: ListValue.cpp:11
+
ListValue::GetFloat32
double GetFloat32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:82
+
ListValue::ListValue
ListValue()
Definition: ListValue.cpp:5
+
ListValue::Deepcopy
Value * Deepcopy() const override
Will return a deeopopy of this object.
Definition: ListValue.cpp:21
+
Value
Abstract class for values.
Definition: Value.h:8
+
ListValue::GetFloat64
long double GetFloat64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:77
+
ListValue::GetList
const std::vector< Value * > & GetList() const override
Will return this values list.
Definition: ListValue.cpp:92
+
ListValue::GetAsOsString
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: ListValue.cpp:42
+
ListValue::GetInt64
long long int GetInt64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:67
+
ListValue::GetValue
const std::vector< Value * > & GetValue() const
Will return the raw value.
Definition: ListValue.cpp:37
+
ListValue::GetInt32
int GetInt32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:72
+
ListValue::GetString
std::string GetString() const override
Throws HazelnuppValueNotConvertibleException.
Definition: ListValue.cpp:87
+
Value.h
+ + + + diff --git a/docs/ParamConstraint_8h.html b/docs/ParamConstraint_8h.html new file mode 100644 index 0000000..617965d --- /dev/null +++ b/docs/ParamConstraint_8h.html @@ -0,0 +1,124 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/ParamConstraint.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes
+
+
ParamConstraint.h File Reference
+
+
+
#include "DataType.h"
+#include <string>
+#include <vector>
+
+Include dependency graph for ParamConstraint.h:
+
+
+ + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Classes

struct  ParamConstraint
 
+
+ + + + diff --git a/docs/ParamConstraint_8h__dep__incl.map b/docs/ParamConstraint_8h__dep__incl.map new file mode 100644 index 0000000..8501976 --- /dev/null +++ b/docs/ParamConstraint_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/ParamConstraint_8h__dep__incl.md5 b/docs/ParamConstraint_8h__dep__incl.md5 new file mode 100644 index 0000000..3833a5c --- /dev/null +++ b/docs/ParamConstraint_8h__dep__incl.md5 @@ -0,0 +1 @@ +8f1eb59f86ed8a0013eb1f57ade7c0a6 \ No newline at end of file diff --git a/docs/ParamConstraint_8h__dep__incl.png b/docs/ParamConstraint_8h__dep__incl.png new file mode 100644 index 0000000..164ba47 Binary files /dev/null and b/docs/ParamConstraint_8h__dep__incl.png differ diff --git a/docs/ParamConstraint_8h__incl.map b/docs/ParamConstraint_8h__incl.map new file mode 100644 index 0000000..0db6788 --- /dev/null +++ b/docs/ParamConstraint_8h__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/ParamConstraint_8h__incl.md5 b/docs/ParamConstraint_8h__incl.md5 new file mode 100644 index 0000000..e1a5448 --- /dev/null +++ b/docs/ParamConstraint_8h__incl.md5 @@ -0,0 +1 @@ +112e8f880b838c8ff96327d435079d1f \ No newline at end of file diff --git a/docs/ParamConstraint_8h__incl.png b/docs/ParamConstraint_8h__incl.png new file mode 100644 index 0000000..6c428db Binary files /dev/null and b/docs/ParamConstraint_8h__incl.png differ diff --git a/docs/ParamConstraint_8h_source.html b/docs/ParamConstraint_8h_source.html new file mode 100644 index 0000000..1aa71ee --- /dev/null +++ b/docs/ParamConstraint_8h_source.html @@ -0,0 +1,153 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/ParamConstraint.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ParamConstraint.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include "DataType.h"
+
3 #include <string>
+
4 #include <vector>
+
5 
+ +
7 {
+
8 public:
+
10  ParamConstraint() = default;
+
11 
+
14  static ParamConstraint Require(const std::string& key, const std::vector<std::string>& defaultValue = {}, bool required = true)
+
15  {
+
16  ParamConstraint pc;
+
17  pc.key = key;
+ +
19  pc.required = required;
+
20 
+
21  return pc;
+
22  }
+
23 
+
25  static ParamConstraint TypeSafety(const std::string& key, DATA_TYPE wantedType, bool constrainType = true)
+
26  {
+
27  ParamConstraint pc;
+
28  pc.key = key;
+ + +
31 
+
32  return pc;
+
33  }
+
34 
+
36  ParamConstraint(const std::string& key, bool constrainType, DATA_TYPE wantedType, const std::vector<std::string>& defaultValue, bool required)
+
37  :
+
38  key { key },
+ + + + +
43  {
+
44  return;
+
45  }
+
46 
+
48  std::string key;
+
49 
+
52  bool constrainType = false;
+
53 
+ +
56 
+
60  std::vector<std::string> defaultValue;
+
61 
+
64  bool required = false;
+
65 };
+
+
DataType.h
+
DATA_TYPE
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:5
+
DATA_TYPE::VOID
@ VOID
+
ParamConstraint::required
bool required
If set to true, and no default value set, an error will be produced if this parameter is not supplied...
Definition: ParamConstraint.h:64
+
ParamConstraint::ParamConstraint
ParamConstraint(const std::string &key, bool constrainType, DATA_TYPE wantedType, const std::vector< std::string > &defaultValue, bool required)
Whole constructor.
Definition: ParamConstraint.h:36
+
ParamConstraint::TypeSafety
static ParamConstraint TypeSafety(const std::string &key, DATA_TYPE wantedType, bool constrainType=true)
Constructs a type-safety constraint.
Definition: ParamConstraint.h:25
+
ParamConstraint::defaultValue
std::vector< std::string > defaultValue
The default value for this parameter.
Definition: ParamConstraint.h:60
+
ParamConstraint::Require
static ParamConstraint Require(const std::string &key, const std::vector< std::string > &defaultValue={}, bool required=true)
Constructs a require constraint.
Definition: ParamConstraint.h:14
+
ParamConstraint::key
std::string key
The key of the parameter to constrain.
Definition: ParamConstraint.h:48
+
ParamConstraint::constrainType
bool constrainType
Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
Definition: ParamConstraint.h:52
+
ParamConstraint::ParamConstraint
ParamConstraint()=default
Empty constructor.
+
ParamConstraint::wantedType
DATA_TYPE wantedType
Constrain the parameter to this value. Requires constrainType to be set to true.
Definition: ParamConstraint.h:55
+
ParamConstraint
Definition: ParamConstraint.h:6
+ + + + diff --git a/docs/Parameter_8cpp.html b/docs/Parameter_8cpp.html new file mode 100644 index 0000000..078e35d --- /dev/null +++ b/docs/Parameter_8cpp.html @@ -0,0 +1,106 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Parameter.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Parameter.cpp File Reference
+
+
+
#include "Parameter.h"
+
+Include dependency graph for Parameter.cpp:
+
+
+ + + + + + + + + +
+
+

Go to the source code of this file.

+
+ + + + diff --git a/docs/Parameter_8cpp__incl.map b/docs/Parameter_8cpp__incl.map new file mode 100644 index 0000000..7376c9f --- /dev/null +++ b/docs/Parameter_8cpp__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/Parameter_8cpp__incl.md5 b/docs/Parameter_8cpp__incl.md5 new file mode 100644 index 0000000..42ec160 --- /dev/null +++ b/docs/Parameter_8cpp__incl.md5 @@ -0,0 +1 @@ +89588e764ed7b9e840675c3b459cf4bc \ No newline at end of file diff --git a/docs/Parameter_8cpp__incl.png b/docs/Parameter_8cpp__incl.png new file mode 100644 index 0000000..5f79f28 Binary files /dev/null and b/docs/Parameter_8cpp__incl.png differ diff --git a/docs/Parameter_8cpp_source.html b/docs/Parameter_8cpp_source.html new file mode 100644 index 0000000..57ec943 --- /dev/null +++ b/docs/Parameter_8cpp_source.html @@ -0,0 +1,121 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Parameter.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Parameter.cpp
+
+
+Go to the documentation of this file.
1 #include "Parameter.h"
+
2 
+
3 Parameter::Parameter(const std::string& key, const ::Value* value)
+
4  :
+
5  key{ key }
+
6 {
+
7  this->value = value->Deepcopy();
+
8  return;
+
9 }
+
10 
+ +
12 {
+
13  delete value;
+
14  value = nullptr;
+
15 
+
16  return;
+
17 }
+
18 
+
19 const std::string& Parameter::Key() const
+
20 {
+
21  return key;
+
22 }
+
23 
+
24 const ::Value* Parameter::GetValue() const
+
25 {
+
26  return value;
+
27 }
+
+
Parameter::~Parameter
~Parameter()
Definition: Parameter.cpp:11
+
Parameter::Key
const std::string & Key() const
Will return the key of this parameter.
Definition: Parameter.cpp:19
+
Parameter::GetValue
const Value * GetValue() const
Will return the value of this parameter.
Definition: Parameter.cpp:24
+
Parameter.h
+
Parameter::Parameter
Parameter(const std::string &key, const Value *value)
Definition: Parameter.cpp:3
+ + + + diff --git a/docs/Parameter_8h.html b/docs/Parameter_8h.html new file mode 100644 index 0000000..78c55df --- /dev/null +++ b/docs/Parameter_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Parameter.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes
+
+
Parameter.h File Reference
+
+
+
#include "Value.h"
+#include <string>
+#include <ostream>
+
+Include dependency graph for Parameter.h:
+
+
+ + + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  Parameter
 
+
+ + + + diff --git a/docs/Parameter_8h__dep__incl.map b/docs/Parameter_8h__dep__incl.map new file mode 100644 index 0000000..9780187 --- /dev/null +++ b/docs/Parameter_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/Parameter_8h__dep__incl.md5 b/docs/Parameter_8h__dep__incl.md5 new file mode 100644 index 0000000..a83b01b --- /dev/null +++ b/docs/Parameter_8h__dep__incl.md5 @@ -0,0 +1 @@ +0792589fb3c9949d71f6142d7142a87c \ No newline at end of file diff --git a/docs/Parameter_8h__dep__incl.png b/docs/Parameter_8h__dep__incl.png new file mode 100644 index 0000000..67dc051 Binary files /dev/null and b/docs/Parameter_8h__dep__incl.png differ diff --git a/docs/Parameter_8h__incl.map b/docs/Parameter_8h__incl.map new file mode 100644 index 0000000..48c4f23 --- /dev/null +++ b/docs/Parameter_8h__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/Parameter_8h__incl.md5 b/docs/Parameter_8h__incl.md5 new file mode 100644 index 0000000..dd474e6 --- /dev/null +++ b/docs/Parameter_8h__incl.md5 @@ -0,0 +1 @@ +5a29230ca588044835e12098cae44dbe \ No newline at end of file diff --git a/docs/Parameter_8h__incl.png b/docs/Parameter_8h__incl.png new file mode 100644 index 0000000..2b19eb5 Binary files /dev/null and b/docs/Parameter_8h__incl.png differ diff --git a/docs/Parameter_8h_source.html b/docs/Parameter_8h_source.html new file mode 100644 index 0000000..3e2b320 --- /dev/null +++ b/docs/Parameter_8h_source.html @@ -0,0 +1,121 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Parameter.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Parameter.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include "Value.h"
+
3 #include <string>
+
4 #include <ostream>
+
5 
+
6 class Parameter
+
7 {
+
8 public:
+
9  explicit Parameter(const std::string& key, const Value* value);
+
10  ~Parameter();
+
11 
+
13  const std::string& Key() const;
+
14 
+
16  const Value* GetValue() const;
+
17 
+
18  friend std::ostream& operator<< (std::ostream& os, const Parameter& p)
+
19  {
+
20  return os << "{ Key: \"" << p.key << "\" -> " << *p.value << " }";
+
21  }
+
22 
+
23 private:
+
24  std::string key;
+
25  ::Value* value;
+
26 };
+
+
Parameter::operator<<
friend std::ostream & operator<<(std::ostream &os, const Parameter &p)
Definition: Parameter.h:18
+
Value
Abstract class for values.
Definition: Value.h:8
+
Parameter::~Parameter
~Parameter()
Definition: Parameter.cpp:11
+
Parameter
Definition: Parameter.h:6
+
Parameter::Key
const std::string & Key() const
Will return the key of this parameter.
Definition: Parameter.cpp:19
+
Parameter::GetValue
const Value * GetValue() const
Will return the value of this parameter.
Definition: Parameter.cpp:24
+
Parameter::Parameter
Parameter(const std::string &key, const Value *value)
Definition: Parameter.cpp:3
+
Value.h
+ + + + diff --git a/docs/Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html b/docs/Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html new file mode 100644 index 0000000..3cc2a2f --- /dev/null +++ b/docs/Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html @@ -0,0 +1,85 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Release/Hazelnupp.vcxproj.FileListAbsolute.txt File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Hazelnupp/Release/Hazelnupp.vcxproj.FileListAbsolute.txt File Reference
+
+
+
+ + + + diff --git a/docs/Release_2Test__Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html b/docs/Release_2Test__Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html new file mode 100644 index 0000000..7eda615 --- /dev/null +++ b/docs/Release_2Test__Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html @@ -0,0 +1,85 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Release/Test_Hazelnupp.vcxproj.FileListAbsolute.txt File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Test_Hazelnupp/Release/Test_Hazelnupp.vcxproj.FileListAbsolute.txt File Reference
+
+
+
+ + + + diff --git a/docs/StringTools_8cpp.html b/docs/StringTools_8cpp.html new file mode 100644 index 0000000..6e04e69 --- /dev/null +++ b/docs/StringTools_8cpp.html @@ -0,0 +1,105 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/StringTools.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StringTools.cpp File Reference
+
+
+
#include "StringTools.h"
+
+Include dependency graph for StringTools.cpp:
+
+
+ + + + + + + + +
+
+

Go to the source code of this file.

+
+ + + + diff --git a/docs/StringTools_8cpp__incl.map b/docs/StringTools_8cpp__incl.map new file mode 100644 index 0000000..762e92c --- /dev/null +++ b/docs/StringTools_8cpp__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/StringTools_8cpp__incl.md5 b/docs/StringTools_8cpp__incl.md5 new file mode 100644 index 0000000..7011543 --- /dev/null +++ b/docs/StringTools_8cpp__incl.md5 @@ -0,0 +1 @@ +4d994ee3745469dd451021ef4507b101 \ No newline at end of file diff --git a/docs/StringTools_8cpp__incl.png b/docs/StringTools_8cpp__incl.png new file mode 100644 index 0000000..e632c77 Binary files /dev/null and b/docs/StringTools_8cpp__incl.png differ diff --git a/docs/StringTools_8cpp_source.html b/docs/StringTools_8cpp_source.html new file mode 100644 index 0000000..04ee1b2 --- /dev/null +++ b/docs/StringTools_8cpp_source.html @@ -0,0 +1,280 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/StringTools.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StringTools.cpp
+
+
+Go to the documentation of this file.
1 #include "StringTools.h"
+
2 
+
3 bool StringTools::Contains(const std::string& str, const char c)
+
4 {
+
5  for (const char& i : str)
+
6  if (i == c)
+
7  return true;
+
8 
+
9  return false;
+
10 }
+
11 
+
12 std::string StringTools::Replace(const std::string& str, const char find, const std::string& subst)
+
13 {
+
14  std::stringstream ss;
+
15 
+
16  for (std::size_t i = 0; i < str.length(); i++)
+
17  {
+
18  if (str[i] != find) ss << str[i];
+
19  else ss << subst;
+
20  }
+
21 
+
22  return ss.str();
+
23 }
+
24 
+
25 std::string StringTools::Replace(const std::string& str, const std::string& find, const std::string& subst)
+
26 {
+
27  if (find.length() == 0) return str;
+
28 
+
29  std::stringstream ss;
+
30 
+
31  std::size_t posFound = 0;
+
32  std::size_t lastFound = 0;
+
33 
+
34  while (posFound != std::string::npos)
+
35  {
+
36  lastFound = posFound;
+
37  posFound = str.find(find, posFound);
+
38 
+
39  if (posFound != std::string::npos)
+
40  {
+
41  ss << str.substr(lastFound, posFound - lastFound) << subst;
+
42  posFound += find.length();
+
43  }
+
44  else
+
45  {
+
46  ss << str.substr(lastFound, (str.length()) - lastFound);
+
47  }
+
48  }
+
49 
+
50  return ss.str();
+
51 }
+
52 
+
53 
+
54 bool StringTools::IsNumeric(const std::string& str, const bool allowDecimalPoint)
+
55 {
+
56  if (str.length() == 0) return false;
+
57 
+
58  bool alreadyParsedDecimalPoint = false;
+
59  std::size_t digitCount = 0;
+
60 
+
61  for (std::size_t i = 0; i < str.length(); i++)
+
62  {
+
63  if (!(
+
64  ((str[i] >= '0') && (str[i] <= '9')) ||
+
65  ((str[i] == '-') && (i == 0)) ||
+
66  ((str[i] == '.') && (allowDecimalPoint) && (!alreadyParsedDecimalPoint) && (digitCount > 0))
+
67  )) return false;
+
68 
+
69 
+
70  // Here we just have to check for the character. Not for any other conditions.
+
71  // Why? Because if these conditions failed, the function would have already returned false.
+
72  if (((str[i] >= '0') && (str[i] <= '9'))) digitCount++;
+
73  if (str[i] == '.') alreadyParsedDecimalPoint = true;
+
74  }
+
75 
+
76  // Even if we did not find any invalid chars, we should still return false, if we found no digits at all.
+
77  return digitCount > 0;
+
78 }
+
79 
+
80 bool StringTools::ParseNumber(const std::string& str, bool& out_isInt, long double& out_number)
+
81 {
+
82  bool isDecimal = false;
+
83 
+
84  if (str.length() == 0) return false;
+
85  if (Contains(str, '.')) isDecimal = true;
+
86 
+
87  if (isDecimal)
+
88  {
+
89  try
+
90  {
+
91  out_number = std::stold(str);
+
92  out_isInt = false;
+
93  }
+
94  catch (std::invalid_argument&)
+
95  {
+
96  return false;
+
97  }
+
98  catch (std::out_of_range&)
+
99  {
+
100  return false;
+
101  }
+
102  }
+
103  else
+
104  {
+
105  try
+
106  {
+
107  out_number = (long double)std::stoll(str);
+
108  out_isInt = true;
+
109  }
+
110  catch (std::invalid_argument&)
+
111  {
+
112  return false;
+
113  }
+
114  catch (std::out_of_range&)
+
115  {
+
116  return false;
+
117  }
+
118  }
+
119 
+
120  return true;
+
121 }
+
122 
+
123 std::vector<std::string> StringTools::SplitString(const std::string& str, const char delimiter)
+
124 {
+
125  if (str.length() == 0) return std::vector<std::string>();
+
126 
+
127  return SplitString(str, delimiter);
+
128 }
+
129 
+
130 std::vector<std::string> StringTools::SplitString(const std::string& str, const std::string& delimiter)
+
131 {
+
132  if (str.length() == 0) return std::vector<std::string>();
+
133 
+
134  std::vector<std::string> parts;
+
135 
+
136  if (delimiter.length() == 0) // If the delimiter is "" (empty), just split between every single char. Not useful, but logical
+
137  {
+
138  for (std::size_t i = 0; i < str.length(); i++)
+
139  {
+
140  parts.push_back(std::string({ str[i] }));
+
141  }
+
142  return parts;
+
143  }
+
144 
+
145  std::size_t posFound = 0;
+
146  std::size_t lastFound = 0;
+
147 
+
148  while (posFound != std::string::npos)
+
149  {
+
150  lastFound = posFound;
+
151  posFound = str.find(delimiter, posFound);
+
152 
+
153  std::string found;
+
154 
+
155  if (posFound != std::string::npos)
+
156  {
+
157  found = str.substr(lastFound, posFound - lastFound);
+
158  posFound += delimiter.length();
+
159  }
+
160  else
+
161  {
+
162  found = str.substr(lastFound, str.length() - lastFound);
+
163  }
+
164 
+
165  parts.push_back(found);
+
166  }
+
167 
+
168  return parts;
+
169 }
+
170 
+
171 std::string StringTools::ToLower(const std::string& str)
+
172 {
+
173  std::stringstream ss;
+
174  for (std::size_t i = 0; i < str.length(); i++)
+
175  {
+
176  if ((str[i] >= 'A') && (str[i] <= 'Z')) ss << (char)(((int)str[i]) + 32);
+
177  else if (str[i] == -60) ss << (char)-28; // AE => ae
+
178  else if (str[i] == -42) ss << (char)-10; // OE => oe
+
179  else if (str[i] == -36) ss << (char)-4; // UE => ue
+
180  else ss << str[i];
+
181  }
+
182 
+
183  return ss.str();
+
184 }
+
+
StringTools::IsNumeric
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:54
+
StringTools::ToLower
static std::string ToLower(const std::string &str)
Will make a string all lower-case.
Definition: StringTools.cpp:171
+
StringTools::Contains
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:3
+
StringTools::ParseNumber
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:80
+
StringTools::Replace
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:12
+
StringTools::SplitString
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!
Definition: StringTools.cpp:123
+
StringTools.h
+ + + + diff --git a/docs/StringTools_8h.html b/docs/StringTools_8h.html new file mode 100644 index 0000000..b529eba --- /dev/null +++ b/docs/StringTools_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/StringTools.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes
+
+
StringTools.h File Reference
+
+
+
#include <string>
+#include <sstream>
+#include <vector>
+#include <cmath>
+
+Include dependency graph for StringTools.h:
+
+
+ + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  StringTools
 Internal helper class. More...
 
+
+ + + + diff --git a/docs/StringTools_8h__dep__incl.map b/docs/StringTools_8h__dep__incl.map new file mode 100644 index 0000000..c2f6e1b --- /dev/null +++ b/docs/StringTools_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/StringTools_8h__dep__incl.md5 b/docs/StringTools_8h__dep__incl.md5 new file mode 100644 index 0000000..345b1d1 --- /dev/null +++ b/docs/StringTools_8h__dep__incl.md5 @@ -0,0 +1 @@ +4ba8b953211065d16127937b8012e0e9 \ No newline at end of file diff --git a/docs/StringTools_8h__dep__incl.png b/docs/StringTools_8h__dep__incl.png new file mode 100644 index 0000000..91c51dd Binary files /dev/null and b/docs/StringTools_8h__dep__incl.png differ diff --git a/docs/StringTools_8h__incl.map b/docs/StringTools_8h__incl.map new file mode 100644 index 0000000..31b2cdc --- /dev/null +++ b/docs/StringTools_8h__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/StringTools_8h__incl.md5 b/docs/StringTools_8h__incl.md5 new file mode 100644 index 0000000..7975647 --- /dev/null +++ b/docs/StringTools_8h__incl.md5 @@ -0,0 +1 @@ +67b004299d6fdf50268756d41946bfee \ No newline at end of file diff --git a/docs/StringTools_8h__incl.png b/docs/StringTools_8h__incl.png new file mode 100644 index 0000000..6cdea0c Binary files /dev/null and b/docs/StringTools_8h__incl.png differ diff --git a/docs/StringTools_8h_source.html b/docs/StringTools_8h_source.html new file mode 100644 index 0000000..3f3d1a9 --- /dev/null +++ b/docs/StringTools_8h_source.html @@ -0,0 +1,121 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/StringTools.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StringTools.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include <string>
+
3 #include <sstream>
+
4 #include <vector>
+
5 #include <cmath>
+
6 
+ +
10 {
+
11 public:
+
13  static bool Contains(const std::string& str, const char c);
+
14 
+
16  static std::string Replace(const std::string& str, const char find, const std::string& subst);
+
17 
+
19  static std::string Replace(const std::string& str, const std::string& find, const std::string& subst);
+
20 
+
22  static bool IsNumeric(const std::string& str, const bool allowDecimalPoint = false);
+
23 
+
27  static bool ParseNumber(const std::string& str, bool& out_isInt, long double& out_number);
+
28 
+
30  static std::vector<std::string> SplitString(const std::string& str, const char delimiter);
+
31 
+
33  static std::vector<std::string> SplitString(const std::string& str, const std::string& delimiter);
+
34 
+
36  static std::string ToLower(const std::string& str);
+
37 };
+
+
StringTools::IsNumeric
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:54
+
StringTools::ToLower
static std::string ToLower(const std::string &str)
Will make a string all lower-case.
Definition: StringTools.cpp:171
+
StringTools::Contains
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:3
+
StringTools
Internal helper class.
Definition: StringTools.h:9
+
StringTools::ParseNumber
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:80
+
StringTools::Replace
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:12
+
StringTools::SplitString
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!
Definition: StringTools.cpp:123
+ + + + diff --git a/docs/StringValue_8cpp.html b/docs/StringValue_8cpp.html new file mode 100644 index 0000000..2c9f29c --- /dev/null +++ b/docs/StringValue_8cpp.html @@ -0,0 +1,111 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/StringValue.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StringValue.cpp File Reference
+
+
+
#include "StringValue.h"
+#include "HazelnuppException.h"
+#include <sstream>
+
+Include dependency graph for StringValue.cpp:
+
+
+ + + + + + + + + + + + +
+
+

Go to the source code of this file.

+
+ + + + diff --git a/docs/StringValue_8cpp__incl.map b/docs/StringValue_8cpp__incl.map new file mode 100644 index 0000000..cecdb13 --- /dev/null +++ b/docs/StringValue_8cpp__incl.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/StringValue_8cpp__incl.md5 b/docs/StringValue_8cpp__incl.md5 new file mode 100644 index 0000000..c059726 --- /dev/null +++ b/docs/StringValue_8cpp__incl.md5 @@ -0,0 +1 @@ +ba78d6fa329f3f88ca5a096174459af0 \ No newline at end of file diff --git a/docs/StringValue_8cpp__incl.png b/docs/StringValue_8cpp__incl.png new file mode 100644 index 0000000..03913b0 Binary files /dev/null and b/docs/StringValue_8cpp__incl.png differ diff --git a/docs/StringValue_8cpp_source.html b/docs/StringValue_8cpp_source.html new file mode 100644 index 0000000..1d1c6fa --- /dev/null +++ b/docs/StringValue_8cpp_source.html @@ -0,0 +1,170 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/StringValue.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StringValue.cpp
+
+
+Go to the documentation of this file.
1 #include "StringValue.h"
+
2 #include "HazelnuppException.h"
+
3 #include <sstream>
+
4 
+
5 StringValue::StringValue(const std::string& value)
+
6  :
+ +
8  value { value }
+
9 {
+
10  return;
+
11 }
+
12 
+ +
14 {
+
15  return new StringValue(value);
+
16 }
+
17 
+
18 std::string StringValue::GetAsOsString() const
+
19 {
+
20  std::stringstream ss;
+
21  ss << "StringValue: " << value;
+
22  return ss.str();
+
23 }
+
24 
+
25 const std::string& StringValue::GetValue() const
+
26 {
+
27  return value;
+
28 }
+
29 
+
30 StringValue::operator std::string() const
+
31 {
+
32  return value;
+
33 }
+
34 
+
35 
+
36 
+
37 long long int StringValue::GetInt64() const
+
38 {
+ +
40 }
+
41 
+ +
43 {
+ +
45 }
+
46 
+
47 long double StringValue::GetFloat64() const
+
48 {
+ +
50 }
+
51 
+ +
53 {
+ +
55 }
+
56 
+
57 std::string StringValue::GetString() const
+
58 {
+
59  return value;
+
60 }
+
61 
+
62 const std::vector<Value*>& StringValue::GetList() const
+
63 {
+ +
65 }
+
+
HazelnuppException.h
+
DATA_TYPE
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:5
+
StringValue.h
+
StringValue::GetString
std::string GetString() const override
Will return this value as a string.
Definition: StringValue.cpp:57
+
Value
Abstract class for values.
Definition: Value.h:8
+
StringValue::GetInt32
int GetInt32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:42
+
StringValue::GetFloat32
double GetFloat32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:52
+
HazelnuppValueNotConvertibleException
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
Definition: HazelnuppException.h:33
+
StringValue::Deepcopy
Value * Deepcopy() const override
Will return a deeopopy of this object.
Definition: StringValue.cpp:13
+
StringValue::GetAsOsString
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: StringValue.cpp:18
+
StringValue::GetList
const std::vector< Value * > & GetList() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:62
+
StringValue::StringValue
StringValue(const std::string &value)
Definition: StringValue.cpp:5
+
DATA_TYPE::STRING
@ STRING
+
StringValue::GetInt64
long long int GetInt64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:37
+
StringValue::GetFloat64
long double GetFloat64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:47
+
StringValue::GetValue
const std::string & GetValue() const
Will return the raw value.
Definition: StringValue.cpp:25
+ + + + diff --git a/docs/StringValue_8h.html b/docs/StringValue_8h.html new file mode 100644 index 0000000..b6fc1c0 --- /dev/null +++ b/docs/StringValue_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/StringValue.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes
+
+
StringValue.h File Reference
+
+
+
#include "Value.h"
+#include <string>
+
+Include dependency graph for StringValue.h:
+
+
+ + + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  StringValue
 Specializations for string values (uses std::string) More...
 
+
+ + + + diff --git a/docs/StringValue_8h__dep__incl.map b/docs/StringValue_8h__dep__incl.map new file mode 100644 index 0000000..d6bec0a --- /dev/null +++ b/docs/StringValue_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/StringValue_8h__dep__incl.md5 b/docs/StringValue_8h__dep__incl.md5 new file mode 100644 index 0000000..fb32603 --- /dev/null +++ b/docs/StringValue_8h__dep__incl.md5 @@ -0,0 +1 @@ +ca9d7db385a6e6038cd9f1292aff77d0 \ No newline at end of file diff --git a/docs/StringValue_8h__dep__incl.png b/docs/StringValue_8h__dep__incl.png new file mode 100644 index 0000000..0acb9c8 Binary files /dev/null and b/docs/StringValue_8h__dep__incl.png differ diff --git a/docs/StringValue_8h__incl.map b/docs/StringValue_8h__incl.map new file mode 100644 index 0000000..702afe8 --- /dev/null +++ b/docs/StringValue_8h__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/StringValue_8h__incl.md5 b/docs/StringValue_8h__incl.md5 new file mode 100644 index 0000000..faf7bf4 --- /dev/null +++ b/docs/StringValue_8h__incl.md5 @@ -0,0 +1 @@ +e31f647cc6d6c07de8c0bf958d89e76c \ No newline at end of file diff --git a/docs/StringValue_8h__incl.png b/docs/StringValue_8h__incl.png new file mode 100644 index 0000000..c3f7534 Binary files /dev/null and b/docs/StringValue_8h__incl.png differ diff --git a/docs/StringValue_8h_source.html b/docs/StringValue_8h_source.html new file mode 100644 index 0000000..e155105 --- /dev/null +++ b/docs/StringValue_8h_source.html @@ -0,0 +1,134 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/StringValue.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StringValue.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include "Value.h"
+
3 #include <string>
+
4 
+
7 class StringValue : public Value
+
8 {
+
9 public:
+
10  StringValue(const std::string& value);
+
11  ~StringValue() override {};
+
12 
+
14  Value* Deepcopy() const override;
+
15 
+
17  std::string GetAsOsString() const override;
+
18 
+
20  const std::string& GetValue() const;
+
21 
+
22  operator std::string() const;
+
23 
+
25  long long int GetInt64() const override;
+
27  int GetInt32() const override;
+
28 
+
30  long double GetFloat64() const override;
+
32  double GetFloat32() const override;
+
33 
+
35  std::string GetString() const override;
+
36 
+
38  const std::vector<Value*>& GetList() const override;
+
39 
+
40 private:
+
41  std::string value;
+
42 };
+
+
StringValue::GetString
std::string GetString() const override
Will return this value as a string.
Definition: StringValue.cpp:57
+
Value
Abstract class for values.
Definition: Value.h:8
+
StringValue::GetInt32
int GetInt32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:42
+
StringValue::GetFloat32
double GetFloat32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:52
+
StringValue
Specializations for string values (uses std::string)
Definition: StringValue.h:7
+
StringValue::Deepcopy
Value * Deepcopy() const override
Will return a deeopopy of this object.
Definition: StringValue.cpp:13
+
StringValue::GetAsOsString
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: StringValue.cpp:18
+
StringValue::~StringValue
~StringValue() override
Definition: StringValue.h:11
+
StringValue::GetList
const std::vector< Value * > & GetList() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:62
+
StringValue::StringValue
StringValue(const std::string &value)
Definition: StringValue.cpp:5
+
StringValue::GetInt64
long long int GetInt64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:37
+
Value.h
+
StringValue::GetFloat64
long double GetFloat64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: StringValue.cpp:47
+
StringValue::GetValue
const std::string & GetValue() const
Will return the raw value.
Definition: StringValue.cpp:25
+ + + + diff --git a/docs/Value_8cpp.html b/docs/Value_8cpp.html new file mode 100644 index 0000000..2a5a45f --- /dev/null +++ b/docs/Value_8cpp.html @@ -0,0 +1,104 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Value.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Value.cpp File Reference
+
+
+
#include "Value.h"
+
+Include dependency graph for Value.cpp:
+
+
+ + + + + + + +
+
+

Go to the source code of this file.

+
+ + + + diff --git a/docs/Value_8cpp__incl.map b/docs/Value_8cpp__incl.map new file mode 100644 index 0000000..86cce41 --- /dev/null +++ b/docs/Value_8cpp__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/Value_8cpp__incl.md5 b/docs/Value_8cpp__incl.md5 new file mode 100644 index 0000000..584f279 --- /dev/null +++ b/docs/Value_8cpp__incl.md5 @@ -0,0 +1 @@ +69da090fe7fb4635fabe3680d01e5670 \ No newline at end of file diff --git a/docs/Value_8cpp__incl.png b/docs/Value_8cpp__incl.png new file mode 100644 index 0000000..3f235fd Binary files /dev/null and b/docs/Value_8cpp__incl.png differ diff --git a/docs/Value_8cpp_source.html b/docs/Value_8cpp_source.html new file mode 100644 index 0000000..0bc6ec6 --- /dev/null +++ b/docs/Value_8cpp_source.html @@ -0,0 +1,107 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Value.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Value.cpp
+
+
+Go to the documentation of this file.
1 #include "Value.h"
+
2 
+ +
4  :
+
5  type{ type }
+
6 {
+
7  return;
+
8 }
+
9 
+ +
11 {
+
12  return type;
+
13 }
+
+
DATA_TYPE
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:5
+
Value::type
DATA_TYPE type
Definition: Value.h:46
+
Value::Value
Value(DATA_TYPE type)
Definition: Value.cpp:3
+
Value::GetDataType
DATA_TYPE GetDataType() const
Will return the data type of this value.
Definition: Value.cpp:10
+
Value.h
+ + + + diff --git a/docs/Value_8h.html b/docs/Value_8h.html new file mode 100644 index 0000000..a065cd5 --- /dev/null +++ b/docs/Value_8h.html @@ -0,0 +1,138 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Value.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes
+
+
Value.h File Reference
+
+
+
#include "DataType.h"
+#include <ostream>
+#include <vector>
+
+Include dependency graph for Value.h:
+
+
+ + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  Value
 Abstract class for values. More...
 
+
+ + + + diff --git a/docs/Value_8h__dep__incl.map b/docs/Value_8h__dep__incl.map new file mode 100644 index 0000000..4a9cf6b --- /dev/null +++ b/docs/Value_8h__dep__incl.map @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/Value_8h__dep__incl.md5 b/docs/Value_8h__dep__incl.md5 new file mode 100644 index 0000000..2639777 --- /dev/null +++ b/docs/Value_8h__dep__incl.md5 @@ -0,0 +1 @@ +a89dc6216fd07fdfdd4f79f41556b577 \ No newline at end of file diff --git a/docs/Value_8h__dep__incl.png b/docs/Value_8h__dep__incl.png new file mode 100644 index 0000000..66e21f7 Binary files /dev/null and b/docs/Value_8h__dep__incl.png differ diff --git a/docs/Value_8h__incl.map b/docs/Value_8h__incl.map new file mode 100644 index 0000000..be86f8e --- /dev/null +++ b/docs/Value_8h__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/Value_8h__incl.md5 b/docs/Value_8h__incl.md5 new file mode 100644 index 0000000..8446cdf --- /dev/null +++ b/docs/Value_8h__incl.md5 @@ -0,0 +1 @@ +7bb92e5fe6cfc0f580f1f9e08772dd2c \ No newline at end of file diff --git a/docs/Value_8h__incl.png b/docs/Value_8h__incl.png new file mode 100644 index 0000000..5c98c28 Binary files /dev/null and b/docs/Value_8h__incl.png differ diff --git a/docs/Value_8h_source.html b/docs/Value_8h_source.html new file mode 100644 index 0000000..6e8a897 --- /dev/null +++ b/docs/Value_8h_source.html @@ -0,0 +1,141 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Value.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Value.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include "DataType.h"
+
3 #include <ostream>
+
4 #include <vector>
+
5 
+
8 class Value
+
9 {
+
10 public:
+
11  virtual ~Value() {};
+
12 
+
14  virtual Value* Deepcopy() const = 0;
+
15 
+
17  virtual std::string GetAsOsString() const = 0;
+
18 
+
20  DATA_TYPE GetDataType() const;
+
21 
+
22  friend std::ostream& operator<< (std::ostream& os, const Value& v)
+
23  {
+
24  return os << v.GetAsOsString();
+
25  }
+
26 
+
28  virtual long long int GetInt64() const = 0;
+
30  virtual int GetInt32() const = 0;
+
31 
+
33  virtual long double GetFloat64() const = 0;
+
35  virtual double GetFloat32() const = 0;
+
36 
+
38  virtual std::string GetString() const = 0;
+
39 
+
41  virtual const std::vector<Value*>& GetList() const = 0;
+
42 
+
43 protected:
+ +
45 
+ +
47 };
+
+
DataType.h
+
DATA_TYPE
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:5
+
Value::type
DATA_TYPE type
Definition: Value.h:46
+
Value::GetList
virtual const std::vector< Value * > & GetList() const =0
Will attempt to return the list-data.
+
Value
Abstract class for values.
Definition: Value.h:8
+
Value::Deepcopy
virtual Value * Deepcopy() const =0
Will return a deeopopy of this object.
+
Value::GetAsOsString
virtual std::string GetAsOsString() const =0
Will return a string suitable for an std::ostream.
+
Value::GetInt32
virtual int GetInt32() const =0
Will attempt to return the integer data (int)
+
Value::GetString
virtual std::string GetString() const =0
Will attempt to return the string-data.
+
Value::Value
Value(DATA_TYPE type)
Definition: Value.cpp:3
+
Value::operator<<
friend std::ostream & operator<<(std::ostream &os, const Value &v)
Definition: Value.h:22
+
Value::GetFloat64
virtual long double GetFloat64() const =0
Will attempt to return the floating-point data (long double)
+
Value::~Value
virtual ~Value()
Definition: Value.h:11
+
Value::GetInt64
virtual long long int GetInt64() const =0
Will attempt to return the integer data (long long)
+
Value::GetFloat32
virtual double GetFloat32() const =0
Will attempt to return the floating-point data (double)
+
Value::GetDataType
DATA_TYPE GetDataType() const
Will return the data type of this value.
Definition: Value.cpp:10
+ + + + diff --git a/docs/VoidValue_8cpp.html b/docs/VoidValue_8cpp.html new file mode 100644 index 0000000..c441690 --- /dev/null +++ b/docs/VoidValue_8cpp.html @@ -0,0 +1,108 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/VoidValue.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
VoidValue.cpp File Reference
+
+
+
#include "VoidValue.h"
+#include "HazelnuppException.h"
+
+Include dependency graph for VoidValue.cpp:
+
+
+ + + + + + + + + + +
+
+

Go to the source code of this file.

+
+ + + + diff --git a/docs/VoidValue_8cpp__incl.map b/docs/VoidValue_8cpp__incl.map new file mode 100644 index 0000000..7d66c73 --- /dev/null +++ b/docs/VoidValue_8cpp__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/VoidValue_8cpp__incl.md5 b/docs/VoidValue_8cpp__incl.md5 new file mode 100644 index 0000000..778315c --- /dev/null +++ b/docs/VoidValue_8cpp__incl.md5 @@ -0,0 +1 @@ +88a7c0ddfe48e0a540dc2f75215c7748 \ No newline at end of file diff --git a/docs/VoidValue_8cpp__incl.png b/docs/VoidValue_8cpp__incl.png new file mode 100644 index 0000000..cea727e Binary files /dev/null and b/docs/VoidValue_8cpp__incl.png differ diff --git a/docs/VoidValue_8cpp_source.html b/docs/VoidValue_8cpp_source.html new file mode 100644 index 0000000..16e992f --- /dev/null +++ b/docs/VoidValue_8cpp_source.html @@ -0,0 +1,155 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/VoidValue.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
VoidValue.cpp
+
+
+Go to the documentation of this file.
1 #include "VoidValue.h"
+
2 #include "HazelnuppException.h"
+
3 
+ +
5  :
+ +
7 {
+
8  return;
+
9 }
+
10 
+ +
12 {
+
13  return new VoidValue();
+
14 }
+
15 
+
16 std::string VoidValue::GetAsOsString() const
+
17 {
+
18  return "VoidValue";
+
19 }
+
20 
+
21 
+
22 
+
23 long long int VoidValue::GetInt64() const
+
24 {
+ +
26 }
+
27 
+ +
29 {
+ +
31 }
+
32 
+
33 long double VoidValue::GetFloat64() const
+
34 {
+ +
36 }
+
37 
+
38 double VoidValue::GetFloat32() const
+
39 {
+ +
41 }
+
42 
+
43 std::string VoidValue::GetString() const
+
44 {
+ +
46 }
+
47 
+
48 const std::vector<Value*>& VoidValue::GetList() const
+
49 {
+ +
51 }
+
+
HazelnuppException.h
+
DATA_TYPE
DATA_TYPE
The different data types a paramater can be.
Definition: DataType.h:5
+
VoidValue::GetString
std::string GetString() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:43
+
DATA_TYPE::VOID
@ VOID
+
Value
Abstract class for values.
Definition: Value.h:8
+
VoidValue::VoidValue
VoidValue()
Definition: VoidValue.cpp:4
+
VoidValue::GetFloat32
double GetFloat32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:38
+
VoidValue::Deepcopy
Value * Deepcopy() const override
Will return a deeopopy of this object.
Definition: VoidValue.cpp:11
+
HazelnuppValueNotConvertibleException
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
Definition: HazelnuppException.h:33
+
VoidValue.h
+
VoidValue::GetAsOsString
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: VoidValue.cpp:16
+
VoidValue::GetInt64
long long int GetInt64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:23
+
VoidValue::GetFloat64
long double GetFloat64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:33
+
VoidValue::GetInt32
int GetInt32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:28
+
VoidValue::GetList
const std::vector< Value * > & GetList() const
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:48
+ + + + diff --git a/docs/VoidValue_8h.html b/docs/VoidValue_8h.html new file mode 100644 index 0000000..25b366c --- /dev/null +++ b/docs/VoidValue_8h.html @@ -0,0 +1,123 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/VoidValue.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes
+
+
VoidValue.h File Reference
+
+
+
#include "Value.h"
+
+Include dependency graph for VoidValue.h:
+
+
+ + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  VoidValue
 Specializations for void values. More...
 
+
+ + + + diff --git a/docs/VoidValue_8h__dep__incl.map b/docs/VoidValue_8h__dep__incl.map new file mode 100644 index 0000000..0673bcf --- /dev/null +++ b/docs/VoidValue_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/VoidValue_8h__dep__incl.md5 b/docs/VoidValue_8h__dep__incl.md5 new file mode 100644 index 0000000..03f8110 --- /dev/null +++ b/docs/VoidValue_8h__dep__incl.md5 @@ -0,0 +1 @@ +b1fa5187a73f08f6f0d205b365df780c \ No newline at end of file diff --git a/docs/VoidValue_8h__dep__incl.png b/docs/VoidValue_8h__dep__incl.png new file mode 100644 index 0000000..68924fd Binary files /dev/null and b/docs/VoidValue_8h__dep__incl.png differ diff --git a/docs/VoidValue_8h__incl.map b/docs/VoidValue_8h__incl.map new file mode 100644 index 0000000..5997110 --- /dev/null +++ b/docs/VoidValue_8h__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/VoidValue_8h__incl.md5 b/docs/VoidValue_8h__incl.md5 new file mode 100644 index 0000000..4713dc5 --- /dev/null +++ b/docs/VoidValue_8h__incl.md5 @@ -0,0 +1 @@ +2fe8fe9fabcd58d433f9b82392834b5c \ No newline at end of file diff --git a/docs/VoidValue_8h__incl.png b/docs/VoidValue_8h__incl.png new file mode 100644 index 0000000..886ddce Binary files /dev/null and b/docs/VoidValue_8h__incl.png differ diff --git a/docs/VoidValue_8h_source.html b/docs/VoidValue_8h_source.html new file mode 100644 index 0000000..fe39a6a --- /dev/null +++ b/docs/VoidValue_8h_source.html @@ -0,0 +1,125 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/VoidValue.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
VoidValue.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include "Value.h"
+
3 
+
6 class VoidValue : public Value
+
7 {
+
8 public:
+
9  VoidValue();
+
10  ~VoidValue() override {};
+
11 
+
13  Value* Deepcopy() const override;
+
14 
+
16  std::string GetAsOsString() const override;
+
17 
+
19  long long int GetInt64() const override;
+
21  int GetInt32() const override;
+
22 
+
24  long double GetFloat64() const override;
+
26  double GetFloat32() const override;
+
27 
+
29  std::string GetString() const override;
+
30 
+
32  const std::vector<Value*>& GetList() const;
+
33 };
+
+
VoidValue::GetString
std::string GetString() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:43
+
Value
Abstract class for values.
Definition: Value.h:8
+
VoidValue::VoidValue
VoidValue()
Definition: VoidValue.cpp:4
+
VoidValue::GetFloat32
double GetFloat32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:38
+
VoidValue::Deepcopy
Value * Deepcopy() const override
Will return a deeopopy of this object.
Definition: VoidValue.cpp:11
+
VoidValue
Specializations for void values.
Definition: VoidValue.h:6
+
VoidValue::GetAsOsString
std::string GetAsOsString() const override
Will return a string suitable for an std::ostream;.
Definition: VoidValue.cpp:16
+
VoidValue::GetInt64
long long int GetInt64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:23
+
VoidValue::GetFloat64
long double GetFloat64() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:33
+
VoidValue::GetInt32
int GetInt32() const override
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:28
+
Value.h
+
VoidValue::~VoidValue
~VoidValue() override
Definition: VoidValue.h:10
+
VoidValue::GetList
const std::vector< Value * > & GetList() const
Throws HazelnuppValueNotConvertibleException.
Definition: VoidValue.cpp:48
+ + + + diff --git a/docs/annotated.html b/docs/annotated.html new file mode 100644 index 0000000..77a95b8 --- /dev/null +++ b/docs/annotated.html @@ -0,0 +1,105 @@ + + + + + + + +Leonetienne/Hazelnupp: Class List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + + + + + + + + + +
 CFloatValueSpecializations for floating point values (uses long double)
 CHazelnuppThe main class to interface with
 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
 CStringToolsInternal helper class
 CStringValueSpecializations for string values (uses std::string)
 CValueAbstract class for values
 CVoidValueSpecializations for void values
+
+
+ + + + diff --git a/docs/bc_s.png b/docs/bc_s.png new file mode 100644 index 0000000..3ad51f0 Binary files /dev/null and b/docs/bc_s.png differ diff --git a/docs/bdwn.png b/docs/bdwn.png new file mode 100644 index 0000000..3f938ab Binary files /dev/null and b/docs/bdwn.png differ diff --git a/docs/classFloatValue-members.html b/docs/classFloatValue-members.html new file mode 100644 index 0000000..23dcde0 --- /dev/null +++ b/docs/classFloatValue-members.html @@ -0,0 +1,105 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
FloatValue Member List
+
+
+ +

This is the complete list of members for FloatValue, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
Deepcopy() const overrideFloatValuevirtual
FloatValue(const long double &value)FloatValue
GetAsOsString() const overrideFloatValuevirtual
GetDataType() constValue
GetFloat32() const overrideFloatValuevirtual
GetFloat64() const overrideFloatValuevirtual
GetInt32() const overrideFloatValuevirtual
GetInt64() const overrideFloatValuevirtual
GetList() const overrideFloatValuevirtual
GetString() const overrideFloatValuevirtual
GetValue() constFloatValue
operator double() constFloatValue
operator long double() constFloatValue
typeValueprotected
Value(DATA_TYPE type)Valueprotected
~FloatValue() overrideFloatValueinline
~Value()Valueinlinevirtual
+ + + + diff --git a/docs/classFloatValue.html b/docs/classFloatValue.html new file mode 100644 index 0000000..3774cd3 --- /dev/null +++ b/docs/classFloatValue.html @@ -0,0 +1,578 @@ + + + + + + + +Leonetienne/Hazelnupp: FloatValue Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +List of all members
+
+
FloatValue Class Reference
+
+
+ +

Specializations for floating point values (uses long double) + More...

+ +

#include <FloatValue.h>

+
+Inheritance diagram for FloatValue:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for FloatValue:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 FloatValue (const long double &value)
 
 ~FloatValue () override
 
ValueDeepcopy () const override
 Will return a deeopopy of this object. More...
 
std::string GetAsOsString () const override
 Will return a string suitable for an std::ostream;. More...
 
const long double & GetValue () const
 Will return the raw value. More...
 
 operator long double () const
 
 operator double () const
 
long long int GetInt64 () const override
 Will return the data as a long long int. More...
 
int GetInt32 () const override
 Will return the data as an int. More...
 
long double GetFloat64 () const override
 Will return the data as a long double. More...
 
double GetFloat32 () const override
 Will return the data as a double. More...
 
std::string GetString () const override
 Will return the data as a string. More...
 
const std::vector< Value * > & GetList () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
- Public Member Functions inherited from Value
virtual ~Value ()
 
DATA_TYPE GetDataType () const
 Will return the data type of this value. More...
 
+ + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Value
 Value (DATA_TYPE type)
 
- Protected Attributes inherited from Value
DATA_TYPE type
 
+

Detailed Description

+

Specializations for floating point values (uses long double)

+ +

Definition at line 7 of file FloatValue.h.

+

Constructor & Destructor Documentation

+ +

◆ FloatValue()

+ +
+
+ + + + + + + + +
FloatValue::FloatValue (const long double & value)
+
+ +

Definition at line 5 of file FloatValue.cpp.

+
6  :
+ +
8  value { value }
+
9 {
+
10  return;
+
11 }
+
+
+
+ +

◆ ~FloatValue()

+ +
+
+ + + + + +
+ + + + + + + +
FloatValue::~FloatValue ()
+
+inlineoverride
+
+ +

Definition at line 11 of file FloatValue.h.

+
11 {};
+
+
+
+

Member Function Documentation

+ +

◆ Deepcopy()

+ +
+
+ + + + + +
+ + + + + + + +
Value * FloatValue::Deepcopy () const
+
+overridevirtual
+
+ +

Will return a deeopopy of this object.

+ +

Implements Value.

+ +

Definition at line 13 of file FloatValue.cpp.

+
14 {
+
15  return new FloatValue(value);
+
16 }
+
+
+
+ +

◆ GetAsOsString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string FloatValue::GetAsOsString () const
+
+overridevirtual
+
+ +

Will return a string suitable for an std::ostream;.

+ +

Implements Value.

+ +

Definition at line 18 of file FloatValue.cpp.

+
19 {
+
20  std::stringstream ss;
+
21  ss << "FloatValue: " << value;
+
22  return ss.str();
+
23 }
+
+
+
+ +

◆ GetFloat32()

+ +
+
+ + + + + +
+ + + + + + + +
double FloatValue::GetFloat32 () const
+
+overridevirtual
+
+ +

Will return the data as a double.

+ +

Implements Value.

+ +

Definition at line 57 of file FloatValue.cpp.

+
58 {
+
59  return (double)value;
+
60 }
+
+
+
+ +

◆ GetFloat64()

+ +
+
+ + + + + +
+ + + + + + + +
long double FloatValue::GetFloat64 () const
+
+overridevirtual
+
+ +

Will return the data as a long double.

+ +

Implements Value.

+ +

Definition at line 52 of file FloatValue.cpp.

+
53 {
+
54  return value;
+
55 }
+
+
+
+ +

◆ GetInt32()

+ +
+
+ + + + + +
+ + + + + + + +
int FloatValue::GetInt32 () const
+
+overridevirtual
+
+ +

Will return the data as an int.

+ +

Implements Value.

+ +

Definition at line 47 of file FloatValue.cpp.

+
48 {
+
49  return (int)value;
+
50 }
+
+
+
+ +

◆ GetInt64()

+ +
+
+ + + + + +
+ + + + + + + +
long long int FloatValue::GetInt64 () const
+
+overridevirtual
+
+ +

Will return the data as a long long int.

+ +

Implements Value.

+ +

Definition at line 42 of file FloatValue.cpp.

+
43 {
+
44  return (long long int)value;
+
45 }
+
+
+
+ +

◆ GetList()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< Value * > & FloatValue::GetList () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 70 of file FloatValue.cpp.

+
71 {
+ +
73 }
+
+
+
+ +

◆ GetString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string FloatValue::GetString () const
+
+overridevirtual
+
+ +

Will return the data as a string.

+ +

Implements Value.

+ +

Definition at line 62 of file FloatValue.cpp.

+
63 {
+
64  std::stringstream ss;
+
65  ss << value;
+
66 
+
67  return ss.str();
+
68 }
+
+
+
+ +

◆ GetValue()

+ +
+
+ + + + + + + +
const long double & FloatValue::GetValue () const
+
+ +

Will return the raw value.

+ +

Definition at line 25 of file FloatValue.cpp.

+
26 {
+
27  return value;
+
28 }
+
+
+
+ +

◆ operator double()

+ +
+
+ + + + + + + +
FloatValue::operator double () const
+
+ +

Definition at line 35 of file FloatValue.cpp.

+
36 {
+
37  return (double)value;
+
38 }
+
+
+
+ +

◆ operator long double()

+ +
+
+ + + + + + + +
FloatValue::operator long double () const
+
+ +

Definition at line 30 of file FloatValue.cpp.

+
31 {
+
32  return value;
+
33 }
+
+
+
+
The documentation for this class was generated from the following files: +
+
DATA_TYPE::FLOAT
@ FLOAT
+
HazelnuppValueNotConvertibleException
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
Definition: HazelnuppException.h:33
+
Value::Value
Value(DATA_TYPE type)
Definition: Value.cpp:3
+
FloatValue::FloatValue
FloatValue(const long double &value)
Definition: FloatValue.cpp:5
+ + + + diff --git a/docs/classFloatValue__coll__graph.map b/docs/classFloatValue__coll__graph.map new file mode 100644 index 0000000..d1e1117 --- /dev/null +++ b/docs/classFloatValue__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/classFloatValue__coll__graph.md5 b/docs/classFloatValue__coll__graph.md5 new file mode 100644 index 0000000..ce67a40 --- /dev/null +++ b/docs/classFloatValue__coll__graph.md5 @@ -0,0 +1 @@ +61a7c55eab2b6c56d37885d5512dd079 \ No newline at end of file diff --git a/docs/classFloatValue__coll__graph.png b/docs/classFloatValue__coll__graph.png new file mode 100644 index 0000000..81a6e85 Binary files /dev/null and b/docs/classFloatValue__coll__graph.png differ diff --git a/docs/classFloatValue__inherit__graph.map b/docs/classFloatValue__inherit__graph.map new file mode 100644 index 0000000..d1e1117 --- /dev/null +++ b/docs/classFloatValue__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/classFloatValue__inherit__graph.md5 b/docs/classFloatValue__inherit__graph.md5 new file mode 100644 index 0000000..ce67a40 --- /dev/null +++ b/docs/classFloatValue__inherit__graph.md5 @@ -0,0 +1 @@ +61a7c55eab2b6c56d37885d5512dd079 \ No newline at end of file diff --git a/docs/classFloatValue__inherit__graph.png b/docs/classFloatValue__inherit__graph.png new file mode 100644 index 0000000..81a6e85 Binary files /dev/null and b/docs/classFloatValue__inherit__graph.png differ diff --git a/docs/classHazelnupp-members.html b/docs/classHazelnupp-members.html new file mode 100644 index 0000000..58b4906 --- /dev/null +++ b/docs/classHazelnupp-members.html @@ -0,0 +1,103 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Hazelnupp Member List
+
+
+ +

This is the complete list of members for Hazelnupp, including all inherited members.

+ + + + + + + + + + + + + + + + +
ClearAbbreviations()Hazelnupp
ClearConstraints()Hazelnupp
GetAbbreviation(const std::string &abbrev) constHazelnupp
GetCrashOnFail() constHazelnupp
GetExecutableName() constHazelnupp
HasAbbreviation(const std::string &abbrev) constHazelnupp
HasParam(const std::string &key) constHazelnupp
Hazelnupp()Hazelnupp
Hazelnupp(const int argc, const char *const *argv)Hazelnupp
operator[](const std::string &key) constHazelnupp
Parse(const int argc, const char *const *argv)Hazelnupp
RegisterAbbreviation(const std::string &abbrev, const std::string &target)Hazelnupp
RegisterConstraints(const std::vector< ParamConstraint > &constraints)Hazelnupp
SetCrashOnFail(bool crashOnFail)Hazelnupp
~Hazelnupp()Hazelnupp
+ + + + diff --git a/docs/classHazelnupp.html b/docs/classHazelnupp.html new file mode 100644 index 0000000..bcd6022 --- /dev/null +++ b/docs/classHazelnupp.html @@ -0,0 +1,630 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +List of all members
+
+
Hazelnupp Class Reference
+
+
+ +

The main class to interface with. + More...

+ +

#include <Hazelnupp.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Hazelnupp ()
 
 Hazelnupp (const int argc, const char *const *argv)
 
 ~Hazelnupp ()
 
void Parse (const int argc, const char *const *argv)
 Will parse command line arguments. More...
 
const std::string & GetExecutableName () const
 Will return argv[0], the name of the executable. More...
 
const Valueoperator[] (const std::string &key) const
 Will return the value given a key. More...
 
bool HasParam (const std::string &key) const
 Will check wether a parameter exists given a key, or not. More...
 
void RegisterAbbreviation (const std::string &abbrev, const std::string &target)
 Will register an abbreviation (like -f for –force) More...
 
const std::string & GetAbbreviation (const std::string &abbrev) const
 Will return the long form of an abbreviation (like –force for -f) More...
 
bool HasAbbreviation (const std::string &abbrev) const
 Will check wether or not an abbreviation is registered. More...
 
void ClearAbbreviations ()
 Will delete all abbreviations. More...
 
void RegisterConstraints (const std::vector< ParamConstraint > &constraints)
 Will register parameter constraints. More...
 
void ClearConstraints ()
 Will delete all constraints. More...
 
void SetCrashOnFail (bool crashOnFail)
 Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsing, or not. More...
 
bool GetCrashOnFail () const
 Gets whether the application crashes on an exception whilst parsing, and prints to stderr. More...
 
+

Detailed Description

+

The main class to interface with.

+ +

Definition at line 9 of file Hazelnupp.h.

+

Constructor & Destructor Documentation

+ +

◆ Hazelnupp() [1/2]

+ +
+
+ + + + + + + +
Hazelnupp::Hazelnupp ()
+
+ +

Definition at line 12 of file Hazelnupp.cpp.

+
13 {
+
14  return;
+
15 }
+
+
+
+ +

◆ Hazelnupp() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Hazelnupp::Hazelnupp (const int argc,
const char *const * argv 
)
+
+ +

Definition at line 17 of file Hazelnupp.cpp.

+
18 {
+
19  Parse(argc, argv);
+
20  return;
+
21 }
+
+
+
+ +

◆ ~Hazelnupp()

+ +
+
+ + + + + + + +
Hazelnupp::~Hazelnupp ()
+
+ +

Definition at line 23 of file Hazelnupp.cpp.

+
24 {
+
25  for (auto& it : parameters)
+
26  delete it.second;
+
27 
+
28  parameters.clear();
+
29 
+
30  return;
+
31 }
+
+
+
+

Member Function Documentation

+ +

◆ ClearAbbreviations()

+ +
+
+ + + + + + + +
void Hazelnupp::ClearAbbreviations ()
+
+ +

Will delete all abbreviations.

+ +

Definition at line 346 of file Hazelnupp.cpp.

+
347 {
+
348  abbreviations.clear();
+
349  return;
+
350 }
+
+
+
+ +

◆ ClearConstraints()

+ +
+
+ + + + + + + +
void Hazelnupp::ClearConstraints ()
+
+ +

Will delete all constraints.

+ +

Definition at line 373 of file Hazelnupp.cpp.

+
374 {
+
375  constraints.clear();
+
376  return;
+
377 }
+
+
+
+ +

◆ GetAbbreviation()

+ +
+
+ + + + + + + + +
const std::string & Hazelnupp::GetAbbreviation (const std::string & abbrev) const
+
+ +

Will return the long form of an abbreviation (like –force for -f)

+ +

Definition at line 336 of file Hazelnupp.cpp.

+
337 {
+
338  return abbreviations.find(abbrev)->second;
+
339 }
+
+
+
+ +

◆ GetCrashOnFail()

+ +
+
+ + + + + + + +
bool Hazelnupp::GetCrashOnFail () const
+
+ +

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

+ +

Definition at line 277 of file Hazelnupp.cpp.

+
278 {
+
279  return crashOnFail;
+
280 }
+
+
+
+ +

◆ GetExecutableName()

+ +
+
+ + + + + + + +
const std::string & Hazelnupp::GetExecutableName () const
+
+ +

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

+ +

Definition at line 316 of file Hazelnupp.cpp.

+
317 {
+
318  return executableName;
+
319 }
+
+
+
+ +

◆ HasAbbreviation()

+ +
+
+ + + + + + + + +
bool Hazelnupp::HasAbbreviation (const std::string & abbrev) const
+
+ +

Will check wether or not an abbreviation is registered.

+ +

Definition at line 341 of file Hazelnupp.cpp.

+
342 {
+
343  return abbreviations.find(abbrev) != abbreviations.end();
+
344 }
+
+
+
+ +

◆ HasParam()

+ +
+
+ + + + + + + + +
bool Hazelnupp::HasParam (const std::string & key) const
+
+ +

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

+ +

Definition at line 151 of file Hazelnupp.cpp.

+
152 {
+
153  return parameters.find(key) != parameters.end();
+
154 }
+
+
+
+ +

◆ operator[]()

+ +
+
+ + + + + + + + +
const Value & Hazelnupp::operator[] (const std::string & key) const
+
+ +

Will return the value given a key.

+ +

Definition at line 321 of file Hazelnupp.cpp.

+
322 {
+
323  // Throw exception if param is unknown
+
324  if (!HasParam(key))
+ +
326 
+
327  return *parameters.find(key)->second->GetValue();
+
328 }
+
+
+
+ +

◆ Parse()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Hazelnupp::Parse (const int argc,
const char *const * argv 
)
+
+ +

Will parse command line arguments.

+ +

Definition at line 33 of file Hazelnupp.cpp.

+
34 {
+
35  try
+
36  {
+
37  // Populate raw arguments
+
38  PopulateRawArgs(argc, argv);
+
39 
+
40  // Expand abbreviations
+
41  ExpandAbbreviations();
+
42 
+
43  executableName = std::string(rawArgs[0]);
+
44 
+
45  std::size_t i = 1;
+
46  while (i < rawArgs.size())
+
47  {
+
48  if ((rawArgs[i].length() > 2) && (rawArgs[i].substr(0, 2) == "--"))
+
49  {
+
50  Parameter* param = nullptr;
+
51  i = ParseNextParameter(i, param);
+
52 
+
53  parameters.insert(std::pair<std::string, Parameter*>(param->Key(), param));
+
54  }
+
55  else
+
56  i++;
+
57  }
+
58 
+
59  // Apply constraints such as default values, and required parameters.
+
60  // Types have already been enforced.
+
61  ApplyConstraints();
+
62  }
+
63  catch (const HazelnuppConstraintTypeMissmatch& hctm)
+
64  {
+
65  if (crashOnFail)
+
66  {
+
67  std::cerr << "Fatal error: Command-line parameter value-type mismatch at \"" << hctm.What() << "\"!";
+
68  quick_exit(-1009);
+
69  }
+
70  else
+
71  throw hctm; // yeet
+
72  }
+
73  catch (const HazelnuppConstraintMissingValue& hctm)
+
74  {
+
75  if (crashOnFail)
+
76  {
+
77  std::cerr << "Fatal error: Missing required command-line parameter \"" << hctm.What() << "\"!";
+
78  quick_exit(-1010);
+
79  }
+
80  else
+
81  throw hctm; // yeet
+
82  }
+
83 
+
84  return;
+
85 }
+
+
+
+ +

◆ RegisterAbbreviation()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Hazelnupp::RegisterAbbreviation (const std::string & abbrev,
const std::string & target 
)
+
+ +

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

+ +

Definition at line 330 of file Hazelnupp.cpp.

+
331 {
+
332  abbreviations.insert(std::pair<std::string, std::string>(abbrev, target));
+
333  return;
+
334 }
+
+
+
+ +

◆ RegisterConstraints()

+ +
+
+ + + + + + + + +
void Hazelnupp::RegisterConstraints (const std::vector< ParamConstraint > & constraints)
+
+ +

Will register parameter constraints.

+ +

Definition at line 352 of file Hazelnupp.cpp.

+
353 {
+
354  for (const ParamConstraint& pc : constraints)
+
355  {
+
356  // Does this constraint already exist?
+
357  const auto constraint = this->constraints.find(pc.key);
+
358  // If yes, replace it.
+
359  if (constraint != this->constraints.end())
+
360  constraint->second = pc;
+
361 
+
362  // Else, create a new pair
+
363  else
+
364  this->constraints.insert(std::pair<std::string, ParamConstraint>(
+
365  pc.key,
+
366  pc
+
367  ));
+
368  }
+
369 
+
370  return;
+
371 }
+
+
+
+ +

◆ SetCrashOnFail()

+ +
+
+ + + + + + + + +
void Hazelnupp::SetCrashOnFail (bool crashOnFail)
+
+ +

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

+ +

Definition at line 379 of file Hazelnupp.cpp.

+
380 {
+
381  this->crashOnFail = crashOnFail;
+
382  return;
+
383 }
+
+
+
+
The documentation for this class was generated from the following files: +
+
HazelnuppException::What
const std::string & What() const
Will return an error message.
Definition: HazelnuppException.h:13
+
HazelnuppConstraintTypeMissmatch
Gets thrown when a parameter is of a type that does not match the required type, and is not convertib...
Definition: HazelnuppException.h:51
+
HazelnuppConstraintMissingValue
Gets thrown when a parameter constrained to be required is not provided, and has no default value set...
Definition: HazelnuppException.h:60
+
Parameter
Definition: Parameter.h:6
+
Parameter::Key
const std::string & Key() const
Will return the key of this parameter.
Definition: Parameter.cpp:19
+
HazelnuppInvalidKeyException
Gets thrown when an non-existent key gets dereferenced.
Definition: HazelnuppException.h:24
+
Hazelnupp::HasParam
bool HasParam(const std::string &key) const
Will check wether a parameter exists given a key, or not.
Definition: Hazelnupp.cpp:151
+
ParamConstraint
Definition: ParamConstraint.h:6
+
Hazelnupp::Parse
void Parse(const int argc, const char *const *argv)
Will parse command line arguments.
Definition: Hazelnupp.cpp:33
+ + + + diff --git a/docs/classHazelnuppConstraintException-members.html b/docs/classHazelnuppConstraintException-members.html new file mode 100644 index 0000000..7080787 --- /dev/null +++ b/docs/classHazelnuppConstraintException-members.html @@ -0,0 +1,94 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
HazelnuppConstraintException Member List
+
+
+ +

This is the complete list of members for HazelnuppConstraintException, including all inherited members.

+ + + + + + + +
HazelnuppConstraintException()HazelnuppConstraintExceptioninline
HazelnuppConstraintException(const std::string &msg)HazelnuppConstraintExceptioninline
HazelnuppException()HazelnuppExceptioninline
HazelnuppException(const std::string &msg)HazelnuppExceptioninline
messageHazelnuppExceptionprotected
What() constHazelnuppExceptioninline
+ + + + diff --git a/docs/classHazelnuppConstraintException.html b/docs/classHazelnuppConstraintException.html new file mode 100644 index 0000000..0460eb3 --- /dev/null +++ b/docs/classHazelnuppConstraintException.html @@ -0,0 +1,205 @@ + + + + + + + +Leonetienne/Hazelnupp: HazelnuppConstraintException Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +List of all members
+
+
HazelnuppConstraintException Class Reference
+
+
+ +

Gets thrown something bad happens because of parameter constraints. + More...

+ +

#include <HazelnuppException.h>

+
+Inheritance diagram for HazelnuppConstraintException:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for HazelnuppConstraintException:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

 HazelnuppConstraintException ()
 
 HazelnuppConstraintException (const std::string &msg)
 
- Public Member Functions inherited from 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 HazelnuppException
std::string message
 
+

Detailed Description

+

Gets thrown something bad happens because of parameter constraints.

+ +

Definition at line 42 of file HazelnuppException.h.

+

Constructor & Destructor Documentation

+ +

◆ HazelnuppConstraintException() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
HazelnuppConstraintException::HazelnuppConstraintException ()
+
+inline
+
+ +

Definition at line 45 of file HazelnuppException.h.

+
45 : HazelnuppException() {};
+
+
+
+ +

◆ HazelnuppConstraintException() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
HazelnuppConstraintException::HazelnuppConstraintException (const std::string & msg)
+
+inline
+
+ +

Definition at line 46 of file HazelnuppException.h.

+
46 : HazelnuppException(msg) {};
+
+
+
+
The documentation for this class was generated from the following file: +
+
HazelnuppException::HazelnuppException
HazelnuppException()
Definition: HazelnuppException.h:9
+ + + + diff --git a/docs/classHazelnuppConstraintException__coll__graph.map b/docs/classHazelnuppConstraintException__coll__graph.map new file mode 100644 index 0000000..5fa5350 --- /dev/null +++ b/docs/classHazelnuppConstraintException__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/classHazelnuppConstraintException__coll__graph.md5 b/docs/classHazelnuppConstraintException__coll__graph.md5 new file mode 100644 index 0000000..b5ab92d --- /dev/null +++ b/docs/classHazelnuppConstraintException__coll__graph.md5 @@ -0,0 +1 @@ +8780b5af48266ddbb9e3e39964ac24c9 \ No newline at end of file diff --git a/docs/classHazelnuppConstraintException__coll__graph.png b/docs/classHazelnuppConstraintException__coll__graph.png new file mode 100644 index 0000000..46cfddc Binary files /dev/null and b/docs/classHazelnuppConstraintException__coll__graph.png differ diff --git a/docs/classHazelnuppConstraintException__inherit__graph.map b/docs/classHazelnuppConstraintException__inherit__graph.map new file mode 100644 index 0000000..1d23b5b --- /dev/null +++ b/docs/classHazelnuppConstraintException__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/classHazelnuppConstraintException__inherit__graph.md5 b/docs/classHazelnuppConstraintException__inherit__graph.md5 new file mode 100644 index 0000000..e37e84a --- /dev/null +++ b/docs/classHazelnuppConstraintException__inherit__graph.md5 @@ -0,0 +1 @@ +16bc78b0ae884e3cc8de0c87c60d24c5 \ No newline at end of file diff --git a/docs/classHazelnuppConstraintException__inherit__graph.png b/docs/classHazelnuppConstraintException__inherit__graph.png new file mode 100644 index 0000000..03b4355 Binary files /dev/null and b/docs/classHazelnuppConstraintException__inherit__graph.png differ diff --git a/docs/classHazelnuppConstraintMissingValue-members.html b/docs/classHazelnuppConstraintMissingValue-members.html new file mode 100644 index 0000000..e15abd6 --- /dev/null +++ b/docs/classHazelnuppConstraintMissingValue-members.html @@ -0,0 +1,96 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
HazelnuppConstraintMissingValue Member List
+
+
+ +

This is the complete list of members for HazelnuppConstraintMissingValue, including all inherited members.

+ + + + + + + + + +
HazelnuppConstraintException()HazelnuppConstraintExceptioninline
HazelnuppConstraintException(const std::string &msg)HazelnuppConstraintExceptioninline
HazelnuppConstraintMissingValue()HazelnuppConstraintMissingValueinline
HazelnuppConstraintMissingValue(const std::string &msg)HazelnuppConstraintMissingValueinline
HazelnuppException()HazelnuppExceptioninline
HazelnuppException(const std::string &msg)HazelnuppExceptioninline
messageHazelnuppExceptionprotected
What() constHazelnuppExceptioninline
+ + + + diff --git a/docs/classHazelnuppConstraintMissingValue.html b/docs/classHazelnuppConstraintMissingValue.html new file mode 100644 index 0000000..8a44906 --- /dev/null +++ b/docs/classHazelnuppConstraintMissingValue.html @@ -0,0 +1,210 @@ + + + + + + + +Leonetienne/Hazelnupp: HazelnuppConstraintMissingValue Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +List of all members
+
+
HazelnuppConstraintMissingValue Class Reference
+
+
+ +

Gets thrown when a parameter constrained to be required is not provided, and has no default value set. + More...

+ +

#include <HazelnuppException.h>

+
+Inheritance diagram for HazelnuppConstraintMissingValue:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for HazelnuppConstraintMissingValue:
+
+
Collaboration graph
+ + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 HazelnuppConstraintMissingValue ()
 
 HazelnuppConstraintMissingValue (const std::string &msg)
 
- Public Member Functions inherited from HazelnuppConstraintException
 HazelnuppConstraintException ()
 
 HazelnuppConstraintException (const std::string &msg)
 
- Public Member Functions inherited from 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 HazelnuppException
std::string message
 
+

Detailed Description

+

Gets thrown when a parameter constrained to be required is not provided, and has no default value set.

+ +

Definition at line 60 of file HazelnuppException.h.

+

Constructor & Destructor Documentation

+ +

◆ HazelnuppConstraintMissingValue() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue ()
+
+inline
+
+ +

Definition at line 63 of file HazelnuppException.h.

+ +
+
+ +

◆ HazelnuppConstraintMissingValue() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue (const std::string & msg)
+
+inline
+
+ +

Definition at line 64 of file HazelnuppException.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
HazelnuppConstraintException::HazelnuppConstraintException
HazelnuppConstraintException()
Definition: HazelnuppException.h:45
+ + + + diff --git a/docs/classHazelnuppConstraintMissingValue__coll__graph.map b/docs/classHazelnuppConstraintMissingValue__coll__graph.map new file mode 100644 index 0000000..a3c28ef --- /dev/null +++ b/docs/classHazelnuppConstraintMissingValue__coll__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/classHazelnuppConstraintMissingValue__coll__graph.md5 b/docs/classHazelnuppConstraintMissingValue__coll__graph.md5 new file mode 100644 index 0000000..a3e58d6 --- /dev/null +++ b/docs/classHazelnuppConstraintMissingValue__coll__graph.md5 @@ -0,0 +1 @@ +53168f4d3c07fb954273ae81459e9a52 \ No newline at end of file diff --git a/docs/classHazelnuppConstraintMissingValue__coll__graph.png b/docs/classHazelnuppConstraintMissingValue__coll__graph.png new file mode 100644 index 0000000..2efec37 Binary files /dev/null and b/docs/classHazelnuppConstraintMissingValue__coll__graph.png differ diff --git a/docs/classHazelnuppConstraintMissingValue__inherit__graph.map b/docs/classHazelnuppConstraintMissingValue__inherit__graph.map new file mode 100644 index 0000000..5659d69 --- /dev/null +++ b/docs/classHazelnuppConstraintMissingValue__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/classHazelnuppConstraintMissingValue__inherit__graph.md5 b/docs/classHazelnuppConstraintMissingValue__inherit__graph.md5 new file mode 100644 index 0000000..f3f9de7 --- /dev/null +++ b/docs/classHazelnuppConstraintMissingValue__inherit__graph.md5 @@ -0,0 +1 @@ +30c14b46f5309ee00f2ac553ceadf88a \ No newline at end of file diff --git a/docs/classHazelnuppConstraintMissingValue__inherit__graph.png b/docs/classHazelnuppConstraintMissingValue__inherit__graph.png new file mode 100644 index 0000000..e9df92f Binary files /dev/null and b/docs/classHazelnuppConstraintMissingValue__inherit__graph.png differ diff --git a/docs/classHazelnuppConstraintTypeMissmatch-members.html b/docs/classHazelnuppConstraintTypeMissmatch-members.html new file mode 100644 index 0000000..d35c233 --- /dev/null +++ b/docs/classHazelnuppConstraintTypeMissmatch-members.html @@ -0,0 +1,96 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
HazelnuppConstraintTypeMissmatch Member List
+
+
+ +

This is the complete list of members for HazelnuppConstraintTypeMissmatch, including all inherited members.

+ + + + + + + + + +
HazelnuppConstraintException()HazelnuppConstraintExceptioninline
HazelnuppConstraintException(const std::string &msg)HazelnuppConstraintExceptioninline
HazelnuppConstraintTypeMissmatch()HazelnuppConstraintTypeMissmatchinline
HazelnuppConstraintTypeMissmatch(const std::string &msg)HazelnuppConstraintTypeMissmatchinline
HazelnuppException()HazelnuppExceptioninline
HazelnuppException(const std::string &msg)HazelnuppExceptioninline
messageHazelnuppExceptionprotected
What() constHazelnuppExceptioninline
+ + + + diff --git a/docs/classHazelnuppConstraintTypeMissmatch.html b/docs/classHazelnuppConstraintTypeMissmatch.html new file mode 100644 index 0000000..818c3b5 --- /dev/null +++ b/docs/classHazelnuppConstraintTypeMissmatch.html @@ -0,0 +1,210 @@ + + + + + + + +Leonetienne/Hazelnupp: HazelnuppConstraintTypeMissmatch Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +List of all members
+
+
HazelnuppConstraintTypeMissmatch Class Reference
+
+
+ +

Gets thrown when a parameter is of a type that does not match the required type, and is not convertible to it. + More...

+ +

#include <HazelnuppException.h>

+
+Inheritance diagram for HazelnuppConstraintTypeMissmatch:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for HazelnuppConstraintTypeMissmatch:
+
+
Collaboration graph
+ + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 HazelnuppConstraintTypeMissmatch ()
 
 HazelnuppConstraintTypeMissmatch (const std::string &msg)
 
- Public Member Functions inherited from HazelnuppConstraintException
 HazelnuppConstraintException ()
 
 HazelnuppConstraintException (const std::string &msg)
 
- Public Member Functions inherited from 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 HazelnuppException
std::string message
 
+

Detailed Description

+

Gets thrown when a parameter is of a type that does not match the required type, and is not convertible to it.

+ +

Definition at line 51 of file HazelnuppException.h.

+

Constructor & Destructor Documentation

+ +

◆ HazelnuppConstraintTypeMissmatch() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch ()
+
+inline
+
+ +

Definition at line 54 of file HazelnuppException.h.

+ +
+
+ +

◆ HazelnuppConstraintTypeMissmatch() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch (const std::string & msg)
+
+inline
+
+ +

Definition at line 55 of file HazelnuppException.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
HazelnuppConstraintException::HazelnuppConstraintException
HazelnuppConstraintException()
Definition: HazelnuppException.h:45
+ + + + diff --git a/docs/classHazelnuppConstraintTypeMissmatch__coll__graph.map b/docs/classHazelnuppConstraintTypeMissmatch__coll__graph.map new file mode 100644 index 0000000..0c19bad --- /dev/null +++ b/docs/classHazelnuppConstraintTypeMissmatch__coll__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/classHazelnuppConstraintTypeMissmatch__coll__graph.md5 b/docs/classHazelnuppConstraintTypeMissmatch__coll__graph.md5 new file mode 100644 index 0000000..afe2d90 --- /dev/null +++ b/docs/classHazelnuppConstraintTypeMissmatch__coll__graph.md5 @@ -0,0 +1 @@ +16e304d64e326eb561ef8c13d477c677 \ No newline at end of file diff --git a/docs/classHazelnuppConstraintTypeMissmatch__coll__graph.png b/docs/classHazelnuppConstraintTypeMissmatch__coll__graph.png new file mode 100644 index 0000000..fb08f14 Binary files /dev/null and b/docs/classHazelnuppConstraintTypeMissmatch__coll__graph.png differ diff --git a/docs/classHazelnuppConstraintTypeMissmatch__inherit__graph.map b/docs/classHazelnuppConstraintTypeMissmatch__inherit__graph.map new file mode 100644 index 0000000..3814bac --- /dev/null +++ b/docs/classHazelnuppConstraintTypeMissmatch__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/classHazelnuppConstraintTypeMissmatch__inherit__graph.md5 b/docs/classHazelnuppConstraintTypeMissmatch__inherit__graph.md5 new file mode 100644 index 0000000..d76519e --- /dev/null +++ b/docs/classHazelnuppConstraintTypeMissmatch__inherit__graph.md5 @@ -0,0 +1 @@ +099f62bbcdccec595c21e9510dc0dae9 \ No newline at end of file diff --git a/docs/classHazelnuppConstraintTypeMissmatch__inherit__graph.png b/docs/classHazelnuppConstraintTypeMissmatch__inherit__graph.png new file mode 100644 index 0000000..fe764c6 Binary files /dev/null and b/docs/classHazelnuppConstraintTypeMissmatch__inherit__graph.png differ diff --git a/docs/classHazelnuppException-members.html b/docs/classHazelnuppException-members.html new file mode 100644 index 0000000..45714c5 --- /dev/null +++ b/docs/classHazelnuppException-members.html @@ -0,0 +1,92 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
HazelnuppException Member List
+
+
+ +

This is the complete list of members for HazelnuppException, including all inherited members.

+ + + + + +
HazelnuppException()HazelnuppExceptioninline
HazelnuppException(const std::string &msg)HazelnuppExceptioninline
messageHazelnuppExceptionprotected
What() constHazelnuppExceptioninline
+ + + + diff --git a/docs/classHazelnuppException.html b/docs/classHazelnuppException.html new file mode 100644 index 0000000..fcc987e --- /dev/null +++ b/docs/classHazelnuppException.html @@ -0,0 +1,259 @@ + + + + + + + +Leonetienne/Hazelnupp: HazelnuppException Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +Protected Attributes | +List of all members
+
+
HazelnuppException Class Reference
+
+
+ +

Generic hazelnupp exception. + More...

+ +

#include <HazelnuppException.h>

+
+Inheritance diagram for HazelnuppException:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for HazelnuppException:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + +

+Public Member Functions

 HazelnuppException ()
 
 HazelnuppException (const std::string &msg)
 
const std::string & What () const
 Will return an error message. More...
 
+ + + +

+Protected Attributes

std::string message
 
+

Detailed Description

+

Generic hazelnupp exception.

+ +

Definition at line 6 of file HazelnuppException.h.

+

Constructor & Destructor Documentation

+ +

◆ HazelnuppException() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
HazelnuppException::HazelnuppException ()
+
+inline
+
+ +

Definition at line 9 of file HazelnuppException.h.

+
9 {};
+
+
+
+ +

◆ HazelnuppException() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
HazelnuppException::HazelnuppException (const std::string & msg)
+
+inline
+
+ +

Definition at line 10 of file HazelnuppException.h.

+
10 : message{ msg } {};
+
+
+
+

Member Function Documentation

+ +

◆ What()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string& HazelnuppException::What () const
+
+inline
+
+ +

Will return an error message.

+ +

Definition at line 13 of file HazelnuppException.h.

+
14  {
+
15  return message;
+
16  }
+
+
+
+

Member Data Documentation

+ +

◆ message

+ +
+
+ + + + + +
+ + + + +
std::string HazelnuppException::message
+
+protected
+
+ +

Definition at line 19 of file HazelnuppException.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
HazelnuppException::message
std::string message
Definition: HazelnuppException.h:19
+ + + + diff --git a/docs/classHazelnuppException__coll__graph.map b/docs/classHazelnuppException__coll__graph.map new file mode 100644 index 0000000..0faf445 --- /dev/null +++ b/docs/classHazelnuppException__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/classHazelnuppException__coll__graph.md5 b/docs/classHazelnuppException__coll__graph.md5 new file mode 100644 index 0000000..c1bf83d --- /dev/null +++ b/docs/classHazelnuppException__coll__graph.md5 @@ -0,0 +1 @@ +73a1a62dc1264bfb70a21bb9c678179c \ No newline at end of file diff --git a/docs/classHazelnuppException__coll__graph.png b/docs/classHazelnuppException__coll__graph.png new file mode 100644 index 0000000..1493d52 Binary files /dev/null and b/docs/classHazelnuppException__coll__graph.png differ diff --git a/docs/classHazelnuppException__inherit__graph.map b/docs/classHazelnuppException__inherit__graph.map new file mode 100644 index 0000000..6246c04 --- /dev/null +++ b/docs/classHazelnuppException__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/classHazelnuppException__inherit__graph.md5 b/docs/classHazelnuppException__inherit__graph.md5 new file mode 100644 index 0000000..ffa0264 --- /dev/null +++ b/docs/classHazelnuppException__inherit__graph.md5 @@ -0,0 +1 @@ +2ea7051c44210f9778f71602609d2ced \ No newline at end of file diff --git a/docs/classHazelnuppException__inherit__graph.png b/docs/classHazelnuppException__inherit__graph.png new file mode 100644 index 0000000..93ce952 Binary files /dev/null and b/docs/classHazelnuppException__inherit__graph.png differ diff --git a/docs/classHazelnuppInvalidKeyException-members.html b/docs/classHazelnuppInvalidKeyException-members.html new file mode 100644 index 0000000..d96d6a1 --- /dev/null +++ b/docs/classHazelnuppInvalidKeyException-members.html @@ -0,0 +1,94 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
HazelnuppInvalidKeyException Member List
+
+
+ +

This is the complete list of members for HazelnuppInvalidKeyException, including all inherited members.

+ + + + + + + +
HazelnuppException()HazelnuppExceptioninline
HazelnuppException(const std::string &msg)HazelnuppExceptioninline
HazelnuppInvalidKeyException()HazelnuppInvalidKeyExceptioninline
HazelnuppInvalidKeyException(const std::string &msg)HazelnuppInvalidKeyExceptioninline
messageHazelnuppExceptionprotected
What() constHazelnuppExceptioninline
+ + + + diff --git a/docs/classHazelnuppInvalidKeyException.html b/docs/classHazelnuppInvalidKeyException.html new file mode 100644 index 0000000..6b63a3d --- /dev/null +++ b/docs/classHazelnuppInvalidKeyException.html @@ -0,0 +1,203 @@ + + + + + + + +Leonetienne/Hazelnupp: HazelnuppInvalidKeyException Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +List of all members
+
+
HazelnuppInvalidKeyException Class Reference
+
+
+ +

Gets thrown when an non-existent key gets dereferenced. + More...

+ +

#include <HazelnuppException.h>

+
+Inheritance diagram for HazelnuppInvalidKeyException:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for HazelnuppInvalidKeyException:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

 HazelnuppInvalidKeyException ()
 
 HazelnuppInvalidKeyException (const std::string &msg)
 
- Public Member Functions inherited from 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 HazelnuppException
std::string message
 
+

Detailed Description

+

Gets thrown when an non-existent key gets dereferenced.

+ +

Definition at line 24 of file HazelnuppException.h.

+

Constructor & Destructor Documentation

+ +

◆ HazelnuppInvalidKeyException() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
HazelnuppInvalidKeyException::HazelnuppInvalidKeyException ()
+
+inline
+
+ +

Definition at line 27 of file HazelnuppException.h.

+
27 : HazelnuppException() {};
+
+
+
+ +

◆ HazelnuppInvalidKeyException() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
HazelnuppInvalidKeyException::HazelnuppInvalidKeyException (const std::string & msg)
+
+inline
+
+ +

Definition at line 28 of file HazelnuppException.h.

+
28 : HazelnuppException(msg) {};
+
+
+
+
The documentation for this class was generated from the following file: +
+
HazelnuppException::HazelnuppException
HazelnuppException()
Definition: HazelnuppException.h:9
+ + + + diff --git a/docs/classHazelnuppInvalidKeyException__coll__graph.map b/docs/classHazelnuppInvalidKeyException__coll__graph.map new file mode 100644 index 0000000..b678d19 --- /dev/null +++ b/docs/classHazelnuppInvalidKeyException__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/classHazelnuppInvalidKeyException__coll__graph.md5 b/docs/classHazelnuppInvalidKeyException__coll__graph.md5 new file mode 100644 index 0000000..6ea7594 --- /dev/null +++ b/docs/classHazelnuppInvalidKeyException__coll__graph.md5 @@ -0,0 +1 @@ +9824cce6102c022eca7ea3340a6e069a \ No newline at end of file diff --git a/docs/classHazelnuppInvalidKeyException__coll__graph.png b/docs/classHazelnuppInvalidKeyException__coll__graph.png new file mode 100644 index 0000000..6f49ccd Binary files /dev/null and b/docs/classHazelnuppInvalidKeyException__coll__graph.png differ diff --git a/docs/classHazelnuppInvalidKeyException__inherit__graph.map b/docs/classHazelnuppInvalidKeyException__inherit__graph.map new file mode 100644 index 0000000..d2fb1c2 --- /dev/null +++ b/docs/classHazelnuppInvalidKeyException__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/classHazelnuppInvalidKeyException__inherit__graph.md5 b/docs/classHazelnuppInvalidKeyException__inherit__graph.md5 new file mode 100644 index 0000000..cd0380e --- /dev/null +++ b/docs/classHazelnuppInvalidKeyException__inherit__graph.md5 @@ -0,0 +1 @@ +3cbba2db8b9e26494124e6786b5e2b42 \ No newline at end of file diff --git a/docs/classHazelnuppInvalidKeyException__inherit__graph.png b/docs/classHazelnuppInvalidKeyException__inherit__graph.png new file mode 100644 index 0000000..b95d9af Binary files /dev/null and b/docs/classHazelnuppInvalidKeyException__inherit__graph.png differ diff --git a/docs/classHazelnuppValueNotConvertibleException-members.html b/docs/classHazelnuppValueNotConvertibleException-members.html new file mode 100644 index 0000000..346dbc4 --- /dev/null +++ b/docs/classHazelnuppValueNotConvertibleException-members.html @@ -0,0 +1,94 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
HazelnuppValueNotConvertibleException Member List
+
+
+ +

This is the complete list of members for HazelnuppValueNotConvertibleException, including all inherited members.

+ + + + + + + +
HazelnuppException()HazelnuppExceptioninline
HazelnuppException(const std::string &msg)HazelnuppExceptioninline
HazelnuppValueNotConvertibleException()HazelnuppValueNotConvertibleExceptioninline
HazelnuppValueNotConvertibleException(const std::string &msg)HazelnuppValueNotConvertibleExceptioninline
messageHazelnuppExceptionprotected
What() constHazelnuppExceptioninline
+ + + + diff --git a/docs/classHazelnuppValueNotConvertibleException.html b/docs/classHazelnuppValueNotConvertibleException.html new file mode 100644 index 0000000..7857c7a --- /dev/null +++ b/docs/classHazelnuppValueNotConvertibleException.html @@ -0,0 +1,203 @@ + + + + + + + +Leonetienne/Hazelnupp: HazelnuppValueNotConvertibleException Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +List of all members
+
+
HazelnuppValueNotConvertibleException Class Reference
+
+
+ +

Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not convertible. + More...

+ +

#include <HazelnuppException.h>

+
+Inheritance diagram for HazelnuppValueNotConvertibleException:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for HazelnuppValueNotConvertibleException:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

 HazelnuppValueNotConvertibleException ()
 
 HazelnuppValueNotConvertibleException (const std::string &msg)
 
- Public Member Functions inherited from 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 HazelnuppException
std::string message
 
+

Detailed Description

+

Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not convertible.

+ +

Definition at line 33 of file HazelnuppException.h.

+

Constructor & Destructor Documentation

+ +

◆ HazelnuppValueNotConvertibleException() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException ()
+
+inline
+
+ +

Definition at line 36 of file HazelnuppException.h.

+
36 : HazelnuppException() {};
+
+
+
+ +

◆ HazelnuppValueNotConvertibleException() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException (const std::string & msg)
+
+inline
+
+ +

Definition at line 37 of file HazelnuppException.h.

+
37 : HazelnuppException(msg) {};
+
+
+
+
The documentation for this class was generated from the following file: +
+
HazelnuppException::HazelnuppException
HazelnuppException()
Definition: HazelnuppException.h:9
+ + + + diff --git a/docs/classHazelnuppValueNotConvertibleException__coll__graph.map b/docs/classHazelnuppValueNotConvertibleException__coll__graph.map new file mode 100644 index 0000000..549a305 --- /dev/null +++ b/docs/classHazelnuppValueNotConvertibleException__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/classHazelnuppValueNotConvertibleException__coll__graph.md5 b/docs/classHazelnuppValueNotConvertibleException__coll__graph.md5 new file mode 100644 index 0000000..19e2e3f --- /dev/null +++ b/docs/classHazelnuppValueNotConvertibleException__coll__graph.md5 @@ -0,0 +1 @@ +9d32983d0d841eed4a6fd0df8a5f7cc4 \ No newline at end of file diff --git a/docs/classHazelnuppValueNotConvertibleException__coll__graph.png b/docs/classHazelnuppValueNotConvertibleException__coll__graph.png new file mode 100644 index 0000000..e198a8c Binary files /dev/null and b/docs/classHazelnuppValueNotConvertibleException__coll__graph.png differ diff --git a/docs/classHazelnuppValueNotConvertibleException__inherit__graph.map b/docs/classHazelnuppValueNotConvertibleException__inherit__graph.map new file mode 100644 index 0000000..c262591 --- /dev/null +++ b/docs/classHazelnuppValueNotConvertibleException__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/classHazelnuppValueNotConvertibleException__inherit__graph.md5 b/docs/classHazelnuppValueNotConvertibleException__inherit__graph.md5 new file mode 100644 index 0000000..438de84 --- /dev/null +++ b/docs/classHazelnuppValueNotConvertibleException__inherit__graph.md5 @@ -0,0 +1 @@ +8ca6ce8b99f1fee2372c0029f0781e92 \ No newline at end of file diff --git a/docs/classHazelnuppValueNotConvertibleException__inherit__graph.png b/docs/classHazelnuppValueNotConvertibleException__inherit__graph.png new file mode 100644 index 0000000..f33f98f Binary files /dev/null and b/docs/classHazelnuppValueNotConvertibleException__inherit__graph.png differ diff --git a/docs/classIntValue-members.html b/docs/classIntValue-members.html new file mode 100644 index 0000000..fa2b2c4 --- /dev/null +++ b/docs/classIntValue-members.html @@ -0,0 +1,105 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IntValue Member List
+
+
+ +

This is the complete list of members for IntValue, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
Deepcopy() const overrideIntValuevirtual
GetAsOsString() const overrideIntValuevirtual
GetDataType() constValue
GetFloat32() const overrideIntValuevirtual
GetFloat64() const overrideIntValuevirtual
GetInt32() const overrideIntValuevirtual
GetInt64() const overrideIntValuevirtual
GetList() const overrideIntValuevirtual
GetString() const overrideIntValuevirtual
GetValue() constIntValue
IntValue(const long long int &value)IntValue
operator int() constIntValue
operator long long int() constIntValue
typeValueprotected
Value(DATA_TYPE type)Valueprotected
~IntValue() overrideIntValueinline
~Value()Valueinlinevirtual
+ + + + diff --git a/docs/classIntValue.html b/docs/classIntValue.html new file mode 100644 index 0000000..30a0b97 --- /dev/null +++ b/docs/classIntValue.html @@ -0,0 +1,578 @@ + + + + + + + +Leonetienne/Hazelnupp: IntValue Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +List of all members
+
+
IntValue Class Reference
+
+
+ +

Specializations for integer values (uses long long int) + More...

+ +

#include <IntValue.h>

+
+Inheritance diagram for IntValue:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for IntValue:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntValue (const long long int &value)
 
 ~IntValue () override
 
ValueDeepcopy () const override
 Will return a deeopopy of this object. More...
 
std::string GetAsOsString () const override
 Will return a string suitable for an std::ostream;. More...
 
const long long int & GetValue () const
 Will return the raw value. More...
 
 operator long long int () const
 
 operator int () const
 
long long int GetInt64 () const override
 Will return the data as a long long int. More...
 
int GetInt32 () const override
 Will return the data as an int. More...
 
long double GetFloat64 () const override
 Will return the data as a long double. More...
 
double GetFloat32 () const override
 Will return the data as a double. More...
 
std::string GetString () const override
 Will return the data as a string. More...
 
const std::vector< Value * > & GetList () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
- Public Member Functions inherited from Value
virtual ~Value ()
 
DATA_TYPE GetDataType () const
 Will return the data type of this value. More...
 
+ + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Value
 Value (DATA_TYPE type)
 
- Protected Attributes inherited from Value
DATA_TYPE type
 
+

Detailed Description

+

Specializations for integer values (uses long long int)

+ +

Definition at line 6 of file IntValue.h.

+

Constructor & Destructor Documentation

+ +

◆ IntValue()

+ +
+
+ + + + + + + + +
IntValue::IntValue (const long long int & value)
+
+ +

Definition at line 5 of file IntValue.cpp.

+
6  :
+ +
8  value { value }
+
9 {
+
10  return;
+
11 }
+
+
+
+ +

◆ ~IntValue()

+ +
+
+ + + + + +
+ + + + + + + +
IntValue::~IntValue ()
+
+inlineoverride
+
+ +

Definition at line 10 of file IntValue.h.

+
10 {};
+
+
+
+

Member Function Documentation

+ +

◆ Deepcopy()

+ +
+
+ + + + + +
+ + + + + + + +
Value * IntValue::Deepcopy () const
+
+overridevirtual
+
+ +

Will return a deeopopy of this object.

+ +

Implements Value.

+ +

Definition at line 13 of file IntValue.cpp.

+
14 {
+
15  return new IntValue(value);
+
16 }
+
+
+
+ +

◆ GetAsOsString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string IntValue::GetAsOsString () const
+
+overridevirtual
+
+ +

Will return a string suitable for an std::ostream;.

+ +

Implements Value.

+ +

Definition at line 18 of file IntValue.cpp.

+
19 {
+
20  std::stringstream ss;
+
21  ss << "IntValue: " << value;
+
22  return ss.str();
+
23 }
+
+
+
+ +

◆ GetFloat32()

+ +
+
+ + + + + +
+ + + + + + + +
double IntValue::GetFloat32 () const
+
+overridevirtual
+
+ +

Will return the data as a double.

+ +

Implements Value.

+ +

Definition at line 57 of file IntValue.cpp.

+
58 {
+
59  return (double)value;
+
60 }
+
+
+
+ +

◆ GetFloat64()

+ +
+
+ + + + + +
+ + + + + + + +
long double IntValue::GetFloat64 () const
+
+overridevirtual
+
+ +

Will return the data as a long double.

+ +

Implements Value.

+ +

Definition at line 52 of file IntValue.cpp.

+
53 {
+
54  return (long double)value;
+
55 }
+
+
+
+ +

◆ GetInt32()

+ +
+
+ + + + + +
+ + + + + + + +
int IntValue::GetInt32 () const
+
+overridevirtual
+
+ +

Will return the data as an int.

+ +

Implements Value.

+ +

Definition at line 47 of file IntValue.cpp.

+
48 {
+
49  return (int)value;
+
50 }
+
+
+
+ +

◆ GetInt64()

+ +
+
+ + + + + +
+ + + + + + + +
long long int IntValue::GetInt64 () const
+
+overridevirtual
+
+ +

Will return the data as a long long int.

+ +

Implements Value.

+ +

Definition at line 42 of file IntValue.cpp.

+
43 {
+
44  return value;
+
45 }
+
+
+
+ +

◆ GetList()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< Value * > & IntValue::GetList () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 70 of file IntValue.cpp.

+
71 {
+ +
73 }
+
+
+
+ +

◆ GetString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string IntValue::GetString () const
+
+overridevirtual
+
+ +

Will return the data as a string.

+ +

Implements Value.

+ +

Definition at line 62 of file IntValue.cpp.

+
63 {
+
64  std::stringstream ss;
+
65  ss << value;
+
66 
+
67  return ss.str();
+
68 }
+
+
+
+ +

◆ GetValue()

+ +
+
+ + + + + + + +
const long long int & IntValue::GetValue () const
+
+ +

Will return the raw value.

+ +

Definition at line 25 of file IntValue.cpp.

+
26 {
+
27  return value;
+
28 }
+
+
+
+ +

◆ operator int()

+ +
+
+ + + + + + + +
IntValue::operator int () const
+
+ +

Definition at line 35 of file IntValue.cpp.

+
36 {
+
37  return (int)value;
+
38 }
+
+
+
+ +

◆ operator long long int()

+ +
+
+ + + + + + + +
IntValue::operator long long int () const
+
+ +

Definition at line 30 of file IntValue.cpp.

+
31 {
+
32  return value;
+
33 }
+
+
+
+
The documentation for this class was generated from the following files: +
+
HazelnuppValueNotConvertibleException
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
Definition: HazelnuppException.h:33
+
DATA_TYPE::INT
@ INT
+
IntValue::IntValue
IntValue(const long long int &value)
Definition: IntValue.cpp:5
+
Value::Value
Value(DATA_TYPE type)
Definition: Value.cpp:3
+ + + + diff --git a/docs/classIntValue__coll__graph.map b/docs/classIntValue__coll__graph.map new file mode 100644 index 0000000..7dc6700 --- /dev/null +++ b/docs/classIntValue__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/classIntValue__coll__graph.md5 b/docs/classIntValue__coll__graph.md5 new file mode 100644 index 0000000..4283d04 --- /dev/null +++ b/docs/classIntValue__coll__graph.md5 @@ -0,0 +1 @@ +fe282cdc62e45fcd3bd1eea2f9ef3879 \ No newline at end of file diff --git a/docs/classIntValue__coll__graph.png b/docs/classIntValue__coll__graph.png new file mode 100644 index 0000000..3133f8d Binary files /dev/null and b/docs/classIntValue__coll__graph.png differ diff --git a/docs/classIntValue__inherit__graph.map b/docs/classIntValue__inherit__graph.map new file mode 100644 index 0000000..7dc6700 --- /dev/null +++ b/docs/classIntValue__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/classIntValue__inherit__graph.md5 b/docs/classIntValue__inherit__graph.md5 new file mode 100644 index 0000000..4283d04 --- /dev/null +++ b/docs/classIntValue__inherit__graph.md5 @@ -0,0 +1 @@ +fe282cdc62e45fcd3bd1eea2f9ef3879 \ No newline at end of file diff --git a/docs/classIntValue__inherit__graph.png b/docs/classIntValue__inherit__graph.png new file mode 100644 index 0000000..3133f8d Binary files /dev/null and b/docs/classIntValue__inherit__graph.png differ diff --git a/docs/classListValue-members.html b/docs/classListValue-members.html new file mode 100644 index 0000000..d92098e --- /dev/null +++ b/docs/classListValue-members.html @@ -0,0 +1,105 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
ListValue Member List
+
+
+ +

This is the complete list of members for ListValue, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
AddValue(const Value *value)ListValue
Deepcopy() const overrideListValuevirtual
GetAsOsString() const overrideListValuevirtual
GetDataType() constValue
GetFloat32() const overrideListValuevirtual
GetFloat64() const overrideListValuevirtual
GetInt32() const overrideListValuevirtual
GetInt64() const overrideListValuevirtual
GetList() const overrideListValuevirtual
GetString() const overrideListValuevirtual
GetValue() constListValue
ListValue()ListValue
operator std::vector< Value * >() constListValue
typeValueprotected
Value(DATA_TYPE type)Valueprotected
~ListValue() overrideListValue
~Value()Valueinlinevirtual
+ + + + diff --git a/docs/classListValue.html b/docs/classListValue.html new file mode 100644 index 0000000..a935940 --- /dev/null +++ b/docs/classListValue.html @@ -0,0 +1,605 @@ + + + + + + + +Leonetienne/Hazelnupp: ListValue Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +List of all members
+
+
ListValue Class Reference
+
+
+ +

Specializations for list values (uses std::vector<Value*>) + More...

+ +

#include <ListValue.h>

+
+Inheritance diagram for ListValue:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ListValue:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ListValue ()
 
 ~ListValue () override
 
ValueDeepcopy () const override
 Will return a deeopopy of this object. More...
 
std::string GetAsOsString () const override
 Will return a string suitable for an std::ostream;. More...
 
void AddValue (const Value *value)
 Will add this value to the list. More...
 
const std::vector< Value * > & GetValue () const
 Will return the raw value. More...
 
 operator std::vector< Value * > () const
 
long long int GetInt64 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
int GetInt32 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
long double GetFloat64 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
double GetFloat32 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
std::string GetString () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
const std::vector< Value * > & GetList () const override
 Will return this values list. More...
 
- Public Member Functions inherited from Value
virtual ~Value ()
 
DATA_TYPE GetDataType () const
 Will return the data type of this value. More...
 
+ + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Value
 Value (DATA_TYPE type)
 
- Protected Attributes inherited from Value
DATA_TYPE type
 
+

Detailed Description

+

Specializations for list values (uses std::vector<Value*>)

+ +

Definition at line 7 of file ListValue.h.

+

Constructor & Destructor Documentation

+ +

◆ ListValue()

+ +
+
+ + + + + + + +
ListValue::ListValue ()
+
+ +

Definition at line 5 of file ListValue.cpp.

+
5  :
+ +
7 {
+
8  return;
+
9 }
+
+
+
+ +

◆ ~ListValue()

+ +
+
+ + + + + +
+ + + + + + + +
ListValue::~ListValue ()
+
+override
+
+ +

Definition at line 11 of file ListValue.cpp.

+
12 {
+
13  for (Value* val : value)
+
14  delete val;
+
15 
+
16  value.clear();
+
17 
+
18  return;
+
19 }
+
+
+
+

Member Function Documentation

+ +

◆ AddValue()

+ +
+
+ + + + + + + + +
void ListValue::AddValue (const Valuevalue)
+
+ +

Will add this value to the list.

+ +

Definition at line 31 of file ListValue.cpp.

+
32 {
+
33  this->value.emplace_back(value->Deepcopy());
+
34  return;
+
35 }
+
+
+
+ +

◆ Deepcopy()

+ +
+
+ + + + + +
+ + + + + + + +
Value * ListValue::Deepcopy () const
+
+overridevirtual
+
+ +

Will return a deeopopy of this object.

+ +

Implements Value.

+ +

Definition at line 21 of file ListValue.cpp.

+
22 {
+
23  ListValue* newList = new ListValue();
+
24 
+
25  for (const Value* val : value)
+
26  newList->AddValue(val);
+
27 
+
28  return newList;
+
29 }
+
+
+
+ +

◆ GetAsOsString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ListValue::GetAsOsString () const
+
+overridevirtual
+
+ +

Will return a string suitable for an std::ostream;.

+ +

Implements Value.

+ +

Definition at line 42 of file ListValue.cpp.

+
43 {
+
44  std::stringstream ss;
+
45 
+
46  ss << "ListValue: [";
+
47 
+
48  for (const Value* val : value)
+
49  {
+
50  ss << *val;
+
51  if (val != value.back())
+
52  ss << ", ";
+
53  }
+
54 
+
55  ss << "]";
+
56 
+
57  return ss.str();
+
58 }
+
+
+
+ +

◆ GetFloat32()

+ +
+
+ + + + + +
+ + + + + + + +
double ListValue::GetFloat32 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 82 of file ListValue.cpp.

+
83 {
+ +
85 }
+
+
+
+ +

◆ GetFloat64()

+ +
+
+ + + + + +
+ + + + + + + +
long double ListValue::GetFloat64 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 77 of file ListValue.cpp.

+
78 {
+ +
80 }
+
+
+
+ +

◆ GetInt32()

+ +
+
+ + + + + +
+ + + + + + + +
int ListValue::GetInt32 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 72 of file ListValue.cpp.

+
73 {
+ +
75 }
+
+
+
+ +

◆ GetInt64()

+ +
+
+ + + + + +
+ + + + + + + +
long long int ListValue::GetInt64 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 67 of file ListValue.cpp.

+
68 {
+ +
70 }
+
+
+
+ +

◆ GetList()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< Value * > & ListValue::GetList () const
+
+overridevirtual
+
+ +

Will return this values list.

+ +

Implements Value.

+ +

Definition at line 92 of file ListValue.cpp.

+
93 {
+
94  return value;
+
95 }
+
+
+
+ +

◆ GetString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ListValue::GetString () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 87 of file ListValue.cpp.

+
88 {
+ +
90 }
+
+
+
+ +

◆ GetValue()

+ +
+
+ + + + + + + +
const std::vector< Value * > & ListValue::GetValue () const
+
+ +

Will return the raw value.

+ +

Definition at line 37 of file ListValue.cpp.

+
38 {
+
39  return value;
+
40 }
+
+
+
+ +

◆ operator std::vector< Value * >()

+ +
+
+ + + + + + + +
ListValue::operator std::vector< Value * > () const
+
+ +

Definition at line 60 of file ListValue.cpp.

+
61 {
+
62  return value;
+
63 }
+
+
+
+
The documentation for this class was generated from the following files: +
+
ListValue::AddValue
void AddValue(const Value *value)
Will add this value to the list.
Definition: ListValue.cpp:31
+
ListValue
Specializations for list values (uses std::vector<Value*>)
Definition: ListValue.h:7
+
DATA_TYPE::LIST
@ LIST
+
ListValue::ListValue
ListValue()
Definition: ListValue.cpp:5
+
Value
Abstract class for values.
Definition: Value.h:8
+
Value::Deepcopy
virtual Value * Deepcopy() const =0
Will return a deeopopy of this object.
+
HazelnuppValueNotConvertibleException
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
Definition: HazelnuppException.h:33
+
Value::Value
Value(DATA_TYPE type)
Definition: Value.cpp:3
+ + + + diff --git a/docs/classListValue__coll__graph.map b/docs/classListValue__coll__graph.map new file mode 100644 index 0000000..1053ad5 --- /dev/null +++ b/docs/classListValue__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/classListValue__coll__graph.md5 b/docs/classListValue__coll__graph.md5 new file mode 100644 index 0000000..e3af863 --- /dev/null +++ b/docs/classListValue__coll__graph.md5 @@ -0,0 +1 @@ +7d4215aa276a9b6216eeee2d4500b5d1 \ No newline at end of file diff --git a/docs/classListValue__coll__graph.png b/docs/classListValue__coll__graph.png new file mode 100644 index 0000000..cc8b727 Binary files /dev/null and b/docs/classListValue__coll__graph.png differ diff --git a/docs/classListValue__inherit__graph.map b/docs/classListValue__inherit__graph.map new file mode 100644 index 0000000..1053ad5 --- /dev/null +++ b/docs/classListValue__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/classListValue__inherit__graph.md5 b/docs/classListValue__inherit__graph.md5 new file mode 100644 index 0000000..e3af863 --- /dev/null +++ b/docs/classListValue__inherit__graph.md5 @@ -0,0 +1 @@ +7d4215aa276a9b6216eeee2d4500b5d1 \ No newline at end of file diff --git a/docs/classListValue__inherit__graph.png b/docs/classListValue__inherit__graph.png new file mode 100644 index 0000000..cc8b727 Binary files /dev/null and b/docs/classListValue__inherit__graph.png differ diff --git a/docs/classParameter-members.html b/docs/classParameter-members.html new file mode 100644 index 0000000..9f9b58b --- /dev/null +++ b/docs/classParameter-members.html @@ -0,0 +1,93 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Parameter Member List
+
+
+ +

This is the complete list of members for Parameter, including all inherited members.

+ + + + + + +
GetValue() constParameter
Key() constParameter
operator<<(std::ostream &os, const Parameter &p)Parameterfriend
Parameter(const std::string &key, const Value *value)Parameterexplicit
~Parameter()Parameter
+ + + + diff --git a/docs/classParameter.html b/docs/classParameter.html new file mode 100644 index 0000000..8782b5e --- /dev/null +++ b/docs/classParameter.html @@ -0,0 +1,279 @@ + + + + + + + +Leonetienne/Hazelnupp: Parameter Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +Friends | +List of all members
+
+
Parameter Class Reference
+
+
+ +

#include <Parameter.h>

+ + + + + + + + + + + + +

+Public Member Functions

 Parameter (const std::string &key, const Value *value)
 
 ~Parameter ()
 
const std::string & Key () const
 Will return the key of this parameter. More...
 
const ValueGetValue () const
 Will return the value of this parameter. More...
 
+ + + +

+Friends

std::ostream & operator<< (std::ostream &os, const Parameter &p)
 
+

Detailed Description

+
+

Definition at line 6 of file Parameter.h.

+

Constructor & Destructor Documentation

+ +

◆ Parameter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Parameter::Parameter (const std::string & key,
const Valuevalue 
)
+
+explicit
+
+ +

Definition at line 3 of file Parameter.cpp.

+
4  :
+
5  key{ key }
+
6 {
+
7  this->value = value->Deepcopy();
+
8  return;
+
9 }
+
+
+
+ +

◆ ~Parameter()

+ +
+
+ + + + + + + +
Parameter::~Parameter ()
+
+ +

Definition at line 11 of file Parameter.cpp.

+
12 {
+
13  delete value;
+
14  value = nullptr;
+
15 
+
16  return;
+
17 }
+
+
+
+

Member Function Documentation

+ +

◆ GetValue()

+ +
+
+ + + + + + + +
const ::Value * Parameter::GetValue () const
+
+ +

Will return the value of this parameter.

+ +

Definition at line 24 of file Parameter.cpp.

+
25 {
+
26  return value;
+
27 }
+
+
+
+ +

◆ Key()

+ +
+
+ + + + + + + +
const std::string & Parameter::Key () const
+
+ +

Will return the key of this parameter.

+ +

Definition at line 19 of file Parameter.cpp.

+
20 {
+
21  return key;
+
22 }
+
+
+
+

Friends And Related Function Documentation

+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::ostream& operator<< (std::ostream & os,
const Parameterp 
)
+
+friend
+
+ +

Definition at line 18 of file Parameter.h.

+
19  {
+
20  return os << "{ Key: \"" << p.key << "\" -> " << *p.value << " }";
+
21  }
+
+
+
+
The documentation for this class was generated from the following files: +
+
Value::Deepcopy
virtual Value * Deepcopy() const =0
Will return a deeopopy of this object.
+ + + + diff --git a/docs/classStringTools-members.html b/docs/classStringTools-members.html new file mode 100644 index 0000000..5d5bb3a --- /dev/null +++ b/docs/classStringTools-members.html @@ -0,0 +1,96 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
StringTools Member List
+
+
+ +

This is the complete list of members for StringTools, including all inherited members.

+ + + + + + + + + +
Contains(const std::string &str, const char c)StringToolsstatic
IsNumeric(const std::string &str, const bool allowDecimalPoint=false)StringToolsstatic
ParseNumber(const std::string &str, bool &out_isInt, long double &out_number)StringToolsstatic
Replace(const std::string &str, const char find, const std::string &subst)StringToolsstatic
Replace(const std::string &str, const std::string &find, const std::string &subst)StringToolsstatic
SplitString(const std::string &str, const char delimiter)StringToolsstatic
SplitString(const std::string &str, const std::string &delimiter)StringToolsstatic
ToLower(const std::string &str)StringToolsstatic
+ + + + diff --git a/docs/classStringTools.html b/docs/classStringTools.html new file mode 100644 index 0000000..7b961af --- /dev/null +++ b/docs/classStringTools.html @@ -0,0 +1,630 @@ + + + + + + + +Leonetienne/Hazelnupp: StringTools Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Static Public Member Functions | +List of all members
+
+
StringTools Class Reference
+
+
+ +

Internal helper class. + More...

+ +

#include <StringTools.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool Contains (const std::string &str, const char c)
 Will return wether or not a given char is in a string. More...
 
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. More...
 
static std::string Replace (const std::string &str, const std::string &find, const std::string &subst)
 Will replace a part of a string with another string. More...
 
static bool IsNumeric (const std::string &str, const bool allowDecimalPoint=false)
 Will return true if the given string consists only of digits (including signage) More...
 
static bool ParseNumber (const std::string &str, bool &out_isInt, long double &out_number)
 Will convert the number in str to a number. More...
 
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! More...
 
static std::vector< std::string > SplitString (const std::string &str, const std::string &delimiter)
 Will split a string by a delimiter string. The delimiter will be excluded! More...
 
static std::string ToLower (const std::string &str)
 Will make a string all lower-case. More...
 
+

Detailed Description

+

Internal helper class.

+

Feel free to use it tho.

+ +

Definition at line 9 of file StringTools.h.

+

Member Function Documentation

+ +

◆ Contains()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool StringTools::Contains (const std::string & str,
const char c 
)
+
+static
+
+ +

Will return wether or not a given char is in a string.

+ +

Definition at line 3 of file StringTools.cpp.

+
4 {
+
5  for (const char& i : str)
+
6  if (i == c)
+
7  return true;
+
8 
+
9  return false;
+
10 }
+
+
+
+ +

◆ IsNumeric()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool StringTools::IsNumeric (const std::string & str,
const bool allowDecimalPoint = false 
)
+
+static
+
+ +

Will return true if the given string consists only of digits (including signage)

+ +

Definition at line 54 of file StringTools.cpp.

+
55 {
+
56  if (str.length() == 0) return false;
+
57 
+
58  bool alreadyParsedDecimalPoint = false;
+
59  std::size_t digitCount = 0;
+
60 
+
61  for (std::size_t i = 0; i < str.length(); i++)
+
62  {
+
63  if (!(
+
64  ((str[i] >= '0') && (str[i] <= '9')) ||
+
65  ((str[i] == '-') && (i == 0)) ||
+
66  ((str[i] == '.') && (allowDecimalPoint) && (!alreadyParsedDecimalPoint) && (digitCount > 0))
+
67  )) return false;
+
68 
+
69 
+
70  // Here we just have to check for the character. Not for any other conditions.
+
71  // Why? Because if these conditions failed, the function would have already returned false.
+
72  if (((str[i] >= '0') && (str[i] <= '9'))) digitCount++;
+
73  if (str[i] == '.') alreadyParsedDecimalPoint = true;
+
74  }
+
75 
+
76  // Even if we did not find any invalid chars, we should still return false, if we found no digits at all.
+
77  return digitCount > 0;
+
78 }
+
+
+
+ +

◆ ParseNumber()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool StringTools::ParseNumber (const std::string & str,
bool & out_isInt,
long double & out_number 
)
+
+static
+
+ +

Will convert the number in str to a number.

+


+ Returns wether or not the operation was successful.
+ Also returns wether the number is an integer, or floating point. If int, cast out_number to int.

+ +

Definition at line 80 of file StringTools.cpp.

+
81 {
+
82  bool isDecimal = false;
+
83 
+
84  if (str.length() == 0) return false;
+
85  if (Contains(str, '.')) isDecimal = true;
+
86 
+
87  if (isDecimal)
+
88  {
+
89  try
+
90  {
+
91  out_number = std::stold(str);
+
92  out_isInt = false;
+
93  }
+
94  catch (std::invalid_argument&)
+
95  {
+
96  return false;
+
97  }
+
98  catch (std::out_of_range&)
+
99  {
+
100  return false;
+
101  }
+
102  }
+
103  else
+
104  {
+
105  try
+
106  {
+
107  out_number = (long double)std::stoll(str);
+
108  out_isInt = true;
+
109  }
+
110  catch (std::invalid_argument&)
+
111  {
+
112  return false;
+
113  }
+
114  catch (std::out_of_range&)
+
115  {
+
116  return false;
+
117  }
+
118  }
+
119 
+
120  return true;
+
121 }
+
+
+
+ +

◆ Replace() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string StringTools::Replace (const std::string & str,
const char find,
const std::string & subst 
)
+
+static
+
+ +

Will replace a part of a string with another string.

+ +

Definition at line 12 of file StringTools.cpp.

+
13 {
+
14  std::stringstream ss;
+
15 
+
16  for (std::size_t i = 0; i < str.length(); i++)
+
17  {
+
18  if (str[i] != find) ss << str[i];
+
19  else ss << subst;
+
20  }
+
21 
+
22  return ss.str();
+
23 }
+
+
+
+ +

◆ Replace() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string StringTools::Replace (const std::string & str,
const std::string & find,
const std::string & subst 
)
+
+static
+
+ +

Will replace a part of a string with another string.

+ +

Definition at line 25 of file StringTools.cpp.

+
26 {
+
27  if (find.length() == 0) return str;
+
28 
+
29  std::stringstream ss;
+
30 
+
31  std::size_t posFound = 0;
+
32  std::size_t lastFound = 0;
+
33 
+
34  while (posFound != std::string::npos)
+
35  {
+
36  lastFound = posFound;
+
37  posFound = str.find(find, posFound);
+
38 
+
39  if (posFound != std::string::npos)
+
40  {
+
41  ss << str.substr(lastFound, posFound - lastFound) << subst;
+
42  posFound += find.length();
+
43  }
+
44  else
+
45  {
+
46  ss << str.substr(lastFound, (str.length()) - lastFound);
+
47  }
+
48  }
+
49 
+
50  return ss.str();
+
51 }
+
+
+
+ +

◆ SplitString() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::vector< std::string > StringTools::SplitString (const std::string & str,
const char delimiter 
)
+
+static
+
+ +

Will split a string by a delimiter char. The delimiter will be excluded!

+ +

Definition at line 123 of file StringTools.cpp.

+
124 {
+
125  if (str.length() == 0) return std::vector<std::string>();
+
126 
+
127  return SplitString(str, delimiter);
+
128 }
+
+
+
+ +

◆ SplitString() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::vector< std::string > StringTools::SplitString (const std::string & str,
const std::string & delimiter 
)
+
+static
+
+ +

Will split a string by a delimiter string. The delimiter will be excluded!

+ +

Definition at line 130 of file StringTools.cpp.

+
131 {
+
132  if (str.length() == 0) return std::vector<std::string>();
+
133 
+
134  std::vector<std::string> parts;
+
135 
+
136  if (delimiter.length() == 0) // If the delimiter is "" (empty), just split between every single char. Not useful, but logical
+
137  {
+
138  for (std::size_t i = 0; i < str.length(); i++)
+
139  {
+
140  parts.push_back(std::string({ str[i] }));
+
141  }
+
142  return parts;
+
143  }
+
144 
+
145  std::size_t posFound = 0;
+
146  std::size_t lastFound = 0;
+
147 
+
148  while (posFound != std::string::npos)
+
149  {
+
150  lastFound = posFound;
+
151  posFound = str.find(delimiter, posFound);
+
152 
+
153  std::string found;
+
154 
+
155  if (posFound != std::string::npos)
+
156  {
+
157  found = str.substr(lastFound, posFound - lastFound);
+
158  posFound += delimiter.length();
+
159  }
+
160  else
+
161  {
+
162  found = str.substr(lastFound, str.length() - lastFound);
+
163  }
+
164 
+
165  parts.push_back(found);
+
166  }
+
167 
+
168  return parts;
+
169 }
+
+
+
+ +

◆ ToLower()

+ +
+
+ + + + + +
+ + + + + + + + +
std::string StringTools::ToLower (const std::string & str)
+
+static
+
+ +

Will make a string all lower-case.

+ +

Definition at line 171 of file StringTools.cpp.

+
172 {
+
173  std::stringstream ss;
+
174  for (std::size_t i = 0; i < str.length(); i++)
+
175  {
+
176  if ((str[i] >= 'A') && (str[i] <= 'Z')) ss << (char)(((int)str[i]) + 32);
+
177  else if (str[i] == -60) ss << (char)-28; // AE => ae
+
178  else if (str[i] == -42) ss << (char)-10; // OE => oe
+
179  else if (str[i] == -36) ss << (char)-4; // UE => ue
+
180  else ss << str[i];
+
181  }
+
182 
+
183  return ss.str();
+
184 }
+
+
+
+
The documentation for this class was generated from the following files: +
+
StringTools::Contains
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:3
+
StringTools::SplitString
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!
Definition: StringTools.cpp:123
+ + + + diff --git a/docs/classStringValue-members.html b/docs/classStringValue-members.html new file mode 100644 index 0000000..2f06bd7 --- /dev/null +++ b/docs/classStringValue-members.html @@ -0,0 +1,104 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
StringValue Member List
+
+
+ +

This is the complete list of members for StringValue, including all inherited members.

+ + + + + + + + + + + + + + + + + +
Deepcopy() const overrideStringValuevirtual
GetAsOsString() const overrideStringValuevirtual
GetDataType() constValue
GetFloat32() const overrideStringValuevirtual
GetFloat64() const overrideStringValuevirtual
GetInt32() const overrideStringValuevirtual
GetInt64() const overrideStringValuevirtual
GetList() const overrideStringValuevirtual
GetString() const overrideStringValuevirtual
GetValue() constStringValue
operator std::string() constStringValue
StringValue(const std::string &value)StringValue
typeValueprotected
Value(DATA_TYPE type)Valueprotected
~StringValue() overrideStringValueinline
~Value()Valueinlinevirtual
+ + + + diff --git a/docs/classStringValue.html b/docs/classStringValue.html new file mode 100644 index 0000000..57ae1ac --- /dev/null +++ b/docs/classStringValue.html @@ -0,0 +1,551 @@ + + + + + + + +Leonetienne/Hazelnupp: StringValue Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +List of all members
+
+
StringValue Class Reference
+
+
+ +

Specializations for string values (uses std::string) + More...

+ +

#include <StringValue.h>

+
+Inheritance diagram for StringValue:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for StringValue:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StringValue (const std::string &value)
 
 ~StringValue () override
 
ValueDeepcopy () const override
 Will return a deeopopy of this object. More...
 
std::string GetAsOsString () const override
 Will return a string suitable for an std::ostream;. More...
 
const std::string & GetValue () const
 Will return the raw value. More...
 
 operator std::string () const
 
long long int GetInt64 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
int GetInt32 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
long double GetFloat64 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
double GetFloat32 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
std::string GetString () const override
 Will return this value as a string. More...
 
const std::vector< Value * > & GetList () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
- Public Member Functions inherited from Value
virtual ~Value ()
 
DATA_TYPE GetDataType () const
 Will return the data type of this value. More...
 
+ + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Value
 Value (DATA_TYPE type)
 
- Protected Attributes inherited from Value
DATA_TYPE type
 
+

Detailed Description

+

Specializations for string values (uses std::string)

+ +

Definition at line 7 of file StringValue.h.

+

Constructor & Destructor Documentation

+ +

◆ StringValue()

+ +
+
+ + + + + + + + +
StringValue::StringValue (const std::string & value)
+
+ +

Definition at line 5 of file StringValue.cpp.

+
6  :
+ +
8  value { value }
+
9 {
+
10  return;
+
11 }
+
+
+
+ +

◆ ~StringValue()

+ +
+
+ + + + + +
+ + + + + + + +
StringValue::~StringValue ()
+
+inlineoverride
+
+ +

Definition at line 11 of file StringValue.h.

+
11 {};
+
+
+
+

Member Function Documentation

+ +

◆ Deepcopy()

+ +
+
+ + + + + +
+ + + + + + + +
Value * StringValue::Deepcopy () const
+
+overridevirtual
+
+ +

Will return a deeopopy of this object.

+ +

Implements Value.

+ +

Definition at line 13 of file StringValue.cpp.

+
14 {
+
15  return new StringValue(value);
+
16 }
+
+
+
+ +

◆ GetAsOsString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string StringValue::GetAsOsString () const
+
+overridevirtual
+
+ +

Will return a string suitable for an std::ostream;.

+ +

Implements Value.

+ +

Definition at line 18 of file StringValue.cpp.

+
19 {
+
20  std::stringstream ss;
+
21  ss << "StringValue: " << value;
+
22  return ss.str();
+
23 }
+
+
+
+ +

◆ GetFloat32()

+ +
+
+ + + + + +
+ + + + + + + +
double StringValue::GetFloat32 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 52 of file StringValue.cpp.

+
53 {
+ +
55 }
+
+
+
+ +

◆ GetFloat64()

+ +
+
+ + + + + +
+ + + + + + + +
long double StringValue::GetFloat64 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 47 of file StringValue.cpp.

+
48 {
+ +
50 }
+
+
+
+ +

◆ GetInt32()

+ +
+
+ + + + + +
+ + + + + + + +
int StringValue::GetInt32 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 42 of file StringValue.cpp.

+
43 {
+ +
45 }
+
+
+
+ +

◆ GetInt64()

+ +
+
+ + + + + +
+ + + + + + + +
long long int StringValue::GetInt64 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 37 of file StringValue.cpp.

+
38 {
+ +
40 }
+
+
+
+ +

◆ GetList()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< Value * > & StringValue::GetList () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 62 of file StringValue.cpp.

+
63 {
+ +
65 }
+
+
+
+ +

◆ GetString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string StringValue::GetString () const
+
+overridevirtual
+
+ +

Will return this value as a string.

+ +

Implements Value.

+ +

Definition at line 57 of file StringValue.cpp.

+
58 {
+
59  return value;
+
60 }
+
+
+
+ +

◆ GetValue()

+ +
+
+ + + + + + + +
const std::string & StringValue::GetValue () const
+
+ +

Will return the raw value.

+ +

Definition at line 25 of file StringValue.cpp.

+
26 {
+
27  return value;
+
28 }
+
+
+
+ +

◆ operator std::string()

+ +
+
+ + + + + + + +
StringValue::operator std::string () const
+
+ +

Definition at line 30 of file StringValue.cpp.

+
31 {
+
32  return value;
+
33 }
+
+
+
+
The documentation for this class was generated from the following files: +
+
HazelnuppValueNotConvertibleException
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
Definition: HazelnuppException.h:33
+
Value::Value
Value(DATA_TYPE type)
Definition: Value.cpp:3
+
StringValue::StringValue
StringValue(const std::string &value)
Definition: StringValue.cpp:5
+
DATA_TYPE::STRING
@ STRING
+ + + + diff --git a/docs/classStringValue__coll__graph.map b/docs/classStringValue__coll__graph.map new file mode 100644 index 0000000..d2b7fd3 --- /dev/null +++ b/docs/classStringValue__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/classStringValue__coll__graph.md5 b/docs/classStringValue__coll__graph.md5 new file mode 100644 index 0000000..8d0e42c --- /dev/null +++ b/docs/classStringValue__coll__graph.md5 @@ -0,0 +1 @@ +22c37eb3e53210c1533895d69c2ccfe0 \ No newline at end of file diff --git a/docs/classStringValue__coll__graph.png b/docs/classStringValue__coll__graph.png new file mode 100644 index 0000000..dda135c Binary files /dev/null and b/docs/classStringValue__coll__graph.png differ diff --git a/docs/classStringValue__inherit__graph.map b/docs/classStringValue__inherit__graph.map new file mode 100644 index 0000000..d2b7fd3 --- /dev/null +++ b/docs/classStringValue__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/classStringValue__inherit__graph.md5 b/docs/classStringValue__inherit__graph.md5 new file mode 100644 index 0000000..8d0e42c --- /dev/null +++ b/docs/classStringValue__inherit__graph.md5 @@ -0,0 +1 @@ +22c37eb3e53210c1533895d69c2ccfe0 \ No newline at end of file diff --git a/docs/classStringValue__inherit__graph.png b/docs/classStringValue__inherit__graph.png new file mode 100644 index 0000000..dda135c Binary files /dev/null and b/docs/classStringValue__inherit__graph.png differ diff --git a/docs/classValue-members.html b/docs/classValue-members.html new file mode 100644 index 0000000..0a363f8 --- /dev/null +++ b/docs/classValue-members.html @@ -0,0 +1,101 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Value Member List
+
+
+ +

This is the complete list of members for Value, including all inherited members.

+ + + + + + + + + + + + + + +
Deepcopy() const =0Valuepure virtual
GetAsOsString() const =0Valuepure virtual
GetDataType() constValue
GetFloat32() const =0Valuepure virtual
GetFloat64() const =0Valuepure virtual
GetInt32() const =0Valuepure virtual
GetInt64() const =0Valuepure virtual
GetList() const =0Valuepure virtual
GetString() const =0Valuepure virtual
operator<<(std::ostream &os, const Value &v)Valuefriend
typeValueprotected
Value(DATA_TYPE type)Valueprotected
~Value()Valueinlinevirtual
+ + + + diff --git a/docs/classValue.html b/docs/classValue.html new file mode 100644 index 0000000..3e7e312 --- /dev/null +++ b/docs/classValue.html @@ -0,0 +1,553 @@ + + + + + + + +Leonetienne/Hazelnupp: Value Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +Protected Member Functions | +Protected Attributes | +Friends | +List of all members
+
+
Value Class Referenceabstract
+
+
+ +

Abstract class for values. + More...

+ +

#include <Value.h>

+
+Inheritance diagram for Value:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~Value ()
 
virtual ValueDeepcopy () const =0
 Will return a deeopopy of this object. More...
 
virtual std::string GetAsOsString () const =0
 Will return a string suitable for an std::ostream. More...
 
DATA_TYPE GetDataType () const
 Will return the data type of this value. More...
 
virtual long long int GetInt64 () const =0
 Will attempt to return the integer data (long long) More...
 
virtual int GetInt32 () const =0
 Will attempt to return the integer data (int) More...
 
virtual long double GetFloat64 () const =0
 Will attempt to return the floating-point data (long double) More...
 
virtual double GetFloat32 () const =0
 Will attempt to return the floating-point data (double) More...
 
virtual std::string GetString () const =0
 Will attempt to return the string-data. More...
 
virtual const std::vector< Value * > & GetList () const =0
 Will attempt to return the list-data. More...
 
+ + + +

+Protected Member Functions

 Value (DATA_TYPE type)
 
+ + + +

+Protected Attributes

DATA_TYPE type
 
+ + + +

+Friends

std::ostream & operator<< (std::ostream &os, const Value &v)
 
+

Detailed Description

+

Abstract class for values.

+ +

Definition at line 8 of file Value.h.

+

Constructor & Destructor Documentation

+ +

◆ ~Value()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Value::~Value ()
+
+inlinevirtual
+
+ +

Definition at line 11 of file Value.h.

+
11 {};
+
+
+
+ +

◆ Value()

+ +
+
+ + + + + +
+ + + + + + + + +
Value::Value (DATA_TYPE type)
+
+protected
+
+ +

Definition at line 3 of file Value.cpp.

+
4  :
+
5  type{ type }
+
6 {
+
7  return;
+
8 }
+
+
+
+

Member Function Documentation

+ +

◆ Deepcopy()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Value* Value::Deepcopy () const
+
+pure virtual
+
+ +

Will return a deeopopy of this object.

+ +

Implemented in FloatValue, ListValue, StringValue, IntValue, and VoidValue.

+ +
+
+ +

◆ GetAsOsString()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string Value::GetAsOsString () const
+
+pure virtual
+
+ +

Will return a string suitable for an std::ostream.

+ +

Implemented in FloatValue, ListValue, StringValue, IntValue, and VoidValue.

+ +
+
+ +

◆ GetDataType()

+ +
+
+ + + + + + + +
DATA_TYPE Value::GetDataType () const
+
+ +

Will return the data type of this value.

+ +

Definition at line 10 of file Value.cpp.

+
11 {
+
12  return type;
+
13 }
+
+
+
+ +

◆ GetFloat32()

+ +
+
+ + + + + +
+ + + + + + + +
virtual double Value::GetFloat32 () const
+
+pure virtual
+
+ +

Will attempt to return the floating-point data (double)

+ +

Implemented in ListValue, FloatValue, IntValue, StringValue, and VoidValue.

+ +
+
+ +

◆ GetFloat64()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long double Value::GetFloat64 () const
+
+pure virtual
+
+ +

Will attempt to return the floating-point data (long double)

+ +

Implemented in ListValue, FloatValue, IntValue, StringValue, and VoidValue.

+ +
+
+ +

◆ GetInt32()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int Value::GetInt32 () const
+
+pure virtual
+
+ +

Will attempt to return the integer data (int)

+ +

Implemented in ListValue, FloatValue, IntValue, StringValue, and VoidValue.

+ +
+
+ +

◆ GetInt64()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long long int Value::GetInt64 () const
+
+pure virtual
+
+ +

Will attempt to return the integer data (long long)

+ +

Implemented in ListValue, FloatValue, IntValue, StringValue, and VoidValue.

+ +
+
+ +

◆ GetList()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const std::vector<Value*>& Value::GetList () const
+
+pure virtual
+
+ +

Will attempt to return the list-data.

+ +

Implemented in ListValue, FloatValue, IntValue, StringValue, and VoidValue.

+ +
+
+ +

◆ GetString()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string Value::GetString () const
+
+pure virtual
+
+ +

Will attempt to return the string-data.

+ +

Implemented in ListValue, FloatValue, IntValue, StringValue, and VoidValue.

+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::ostream& operator<< (std::ostream & os,
const Valuev 
)
+
+friend
+
+ +

Definition at line 22 of file Value.h.

+
23  {
+
24  return os << v.GetAsOsString();
+
25  }
+
+
+
+

Member Data Documentation

+ +

◆ type

+ +
+
+ + + + + +
+ + + + +
DATA_TYPE Value::type
+
+protected
+
+ +

Definition at line 46 of file Value.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
Value::type
DATA_TYPE type
Definition: Value.h:46
+
Value::GetAsOsString
virtual std::string GetAsOsString() const =0
Will return a string suitable for an std::ostream.
+ + + + diff --git a/docs/classValue__inherit__graph.map b/docs/classValue__inherit__graph.map new file mode 100644 index 0000000..21e25b5 --- /dev/null +++ b/docs/classValue__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/classValue__inherit__graph.md5 b/docs/classValue__inherit__graph.md5 new file mode 100644 index 0000000..003a4ef --- /dev/null +++ b/docs/classValue__inherit__graph.md5 @@ -0,0 +1 @@ +77b1f35d4bc0222204841b7253e3c0c7 \ No newline at end of file diff --git a/docs/classValue__inherit__graph.png b/docs/classValue__inherit__graph.png new file mode 100644 index 0000000..110109e Binary files /dev/null and b/docs/classValue__inherit__graph.png differ diff --git a/docs/classVoidValue-members.html b/docs/classVoidValue-members.html new file mode 100644 index 0000000..b30b9b0 --- /dev/null +++ b/docs/classVoidValue-members.html @@ -0,0 +1,102 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
VoidValue Member List
+
+
+ +

This is the complete list of members for VoidValue, including all inherited members.

+ + + + + + + + + + + + + + + +
Deepcopy() const overrideVoidValuevirtual
GetAsOsString() const overrideVoidValuevirtual
GetDataType() constValue
GetFloat32() const overrideVoidValuevirtual
GetFloat64() const overrideVoidValuevirtual
GetInt32() const overrideVoidValuevirtual
GetInt64() const overrideVoidValuevirtual
GetList() constVoidValuevirtual
GetString() const overrideVoidValuevirtual
typeValueprotected
Value(DATA_TYPE type)Valueprotected
VoidValue()VoidValue
~Value()Valueinlinevirtual
~VoidValue() overrideVoidValueinline
+ + + + diff --git a/docs/classVoidValue.html b/docs/classVoidValue.html new file mode 100644 index 0000000..0ae229b --- /dev/null +++ b/docs/classVoidValue.html @@ -0,0 +1,497 @@ + + + + + + + +Leonetienne/Hazelnupp: VoidValue Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +List of all members
+
+
VoidValue Class Reference
+
+
+ +

Specializations for void values. + More...

+ +

#include <VoidValue.h>

+
+Inheritance diagram for VoidValue:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for VoidValue:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 VoidValue ()
 
 ~VoidValue () override
 
ValueDeepcopy () const override
 Will return a deeopopy of this object. More...
 
std::string GetAsOsString () const override
 Will return a string suitable for an std::ostream;. More...
 
long long int GetInt64 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
int GetInt32 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
long double GetFloat64 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
double GetFloat32 () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
std::string GetString () const override
 Throws HazelnuppValueNotConvertibleException. More...
 
const std::vector< Value * > & GetList () const
 Throws HazelnuppValueNotConvertibleException. More...
 
- Public Member Functions inherited from Value
virtual ~Value ()
 
DATA_TYPE GetDataType () const
 Will return the data type of this value. More...
 
+ + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from Value
 Value (DATA_TYPE type)
 
- Protected Attributes inherited from Value
DATA_TYPE type
 
+

Detailed Description

+

Specializations for void values.

+

These house no value whatsoever, but only communicate information by merely existing.

+ +

Definition at line 6 of file VoidValue.h.

+

Constructor & Destructor Documentation

+ +

◆ VoidValue()

+ +
+
+ + + + + + + +
VoidValue::VoidValue ()
+
+ +

Definition at line 4 of file VoidValue.cpp.

+
5  :
+ +
7 {
+
8  return;
+
9 }
+
+
+
+ +

◆ ~VoidValue()

+ +
+
+ + + + + +
+ + + + + + + +
VoidValue::~VoidValue ()
+
+inlineoverride
+
+ +

Definition at line 10 of file VoidValue.h.

+
10 {};
+
+
+
+

Member Function Documentation

+ +

◆ Deepcopy()

+ +
+
+ + + + + +
+ + + + + + + +
Value * VoidValue::Deepcopy () const
+
+overridevirtual
+
+ +

Will return a deeopopy of this object.

+ +

Implements Value.

+ +

Definition at line 11 of file VoidValue.cpp.

+
12 {
+
13  return new VoidValue();
+
14 }
+
+
+
+ +

◆ GetAsOsString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string VoidValue::GetAsOsString () const
+
+overridevirtual
+
+ +

Will return a string suitable for an std::ostream;.

+ +

Implements Value.

+ +

Definition at line 16 of file VoidValue.cpp.

+
17 {
+
18  return "VoidValue";
+
19 }
+
+
+
+ +

◆ GetFloat32()

+ +
+
+ + + + + +
+ + + + + + + +
double VoidValue::GetFloat32 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 38 of file VoidValue.cpp.

+
39 {
+ +
41 }
+
+
+
+ +

◆ GetFloat64()

+ +
+
+ + + + + +
+ + + + + + + +
long double VoidValue::GetFloat64 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 33 of file VoidValue.cpp.

+
34 {
+ +
36 }
+
+
+
+ +

◆ GetInt32()

+ +
+
+ + + + + +
+ + + + + + + +
int VoidValue::GetInt32 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 28 of file VoidValue.cpp.

+
29 {
+ +
31 }
+
+
+
+ +

◆ GetInt64()

+ +
+
+ + + + + +
+ + + + + + + +
long long int VoidValue::GetInt64 () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 23 of file VoidValue.cpp.

+
24 {
+ +
26 }
+
+
+
+ +

◆ GetList()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< Value * > & VoidValue::GetList () const
+
+virtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 48 of file VoidValue.cpp.

+
49 {
+ +
51 }
+
+
+
+ +

◆ GetString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string VoidValue::GetString () const
+
+overridevirtual
+
+ +

Throws HazelnuppValueNotConvertibleException.

+ +

Implements Value.

+ +

Definition at line 43 of file VoidValue.cpp.

+
44 {
+ +
46 }
+
+
+
+
The documentation for this class was generated from the following files: +
+
DATA_TYPE::VOID
@ VOID
+
VoidValue::VoidValue
VoidValue()
Definition: VoidValue.cpp:4
+
HazelnuppValueNotConvertibleException
Gets thrown when an attempt is made to retrieve the wrong data type from a value, when the value not ...
Definition: HazelnuppException.h:33
+
Value::Value
Value(DATA_TYPE type)
Definition: Value.cpp:3
+ + + + diff --git a/docs/classVoidValue__coll__graph.map b/docs/classVoidValue__coll__graph.map new file mode 100644 index 0000000..f9c9a0e --- /dev/null +++ b/docs/classVoidValue__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/classVoidValue__coll__graph.md5 b/docs/classVoidValue__coll__graph.md5 new file mode 100644 index 0000000..8bca56a --- /dev/null +++ b/docs/classVoidValue__coll__graph.md5 @@ -0,0 +1 @@ +49110319ff8617406aa3f422d40aa923 \ No newline at end of file diff --git a/docs/classVoidValue__coll__graph.png b/docs/classVoidValue__coll__graph.png new file mode 100644 index 0000000..abb7ae4 Binary files /dev/null and b/docs/classVoidValue__coll__graph.png differ diff --git a/docs/classVoidValue__inherit__graph.map b/docs/classVoidValue__inherit__graph.map new file mode 100644 index 0000000..f9c9a0e --- /dev/null +++ b/docs/classVoidValue__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/classVoidValue__inherit__graph.md5 b/docs/classVoidValue__inherit__graph.md5 new file mode 100644 index 0000000..8bca56a --- /dev/null +++ b/docs/classVoidValue__inherit__graph.md5 @@ -0,0 +1 @@ +49110319ff8617406aa3f422d40aa923 \ No newline at end of file diff --git a/docs/classVoidValue__inherit__graph.png b/docs/classVoidValue__inherit__graph.png new file mode 100644 index 0000000..abb7ae4 Binary files /dev/null and b/docs/classVoidValue__inherit__graph.png differ diff --git a/docs/classes.html b/docs/classes.html new file mode 100644 index 0000000..4b8568e --- /dev/null +++ b/docs/classes.html @@ -0,0 +1,127 @@ + + + + + + + +Leonetienne/Hazelnupp: Class Index + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
f | h | i | l | p | s | v
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  f  
+
HazelnuppConstraintException   
  i  
+
  p  
+
StringValue   
HazelnuppConstraintMissingValue   
  v  
+
FloatValue   HazelnuppConstraintTypeMissmatch   IntValue   ParamConstraint   
  h  
+
HazelnuppException   
  l  
+
Parameter   Value   
HazelnuppInvalidKeyException   
  s  
+
VoidValue   
Hazelnupp   HazelnuppValueNotConvertibleException   ListValue   
StringTools   
+
f | h | i | l | p | s | v
+
+ + + + diff --git a/docs/closed.png b/docs/closed.png new file mode 100644 index 0000000..3ff4431 Binary files /dev/null and b/docs/closed.png differ diff --git a/docs/dir_000003_000000.html b/docs/dir_000003_000000.html new file mode 100644 index 0000000..1ffa3dc --- /dev/null +++ b/docs/dir_000003_000000.html @@ -0,0 +1,85 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp -> Hazelnupp Relation + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+

Test_Hazelnupp → Hazelnupp Relation

File in Test_HazelnuppIncludes file in Hazelnupp
Abbreviations.cppHazelnupp.h
Basics.cppHazelnupp.h
Basics.cppHazelnuppException.h
Constraints.cppHazelnupp.h
Constraints.cppHazelnuppException.h
Conversion.cppHazelnupp.h
Conversion.cppHazelnuppException.h
+ + + + diff --git a/docs/dir_0202e1e26df2e040f4dc3d434eecf04c.html b/docs/dir_0202e1e26df2e040f4dc3d434eecf04c.html new file mode 100644 index 0000000..55dd772 --- /dev/null +++ b/docs/dir_0202e1e26df2e040f4dc3d434eecf04c.html @@ -0,0 +1,144 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp Directory Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Hazelnupp Directory Reference
+
+
+ + + + + + +

+Directories

directory  Debug
 
directory  Release
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  DataType.h [code]
 
file  FloatValue.cpp [code]
 
file  FloatValue.h [code]
 
file  Hazelnupp.cpp [code]
 
file  Hazelnupp.h [code]
 
file  HazelnuppException.h [code]
 
file  IntValue.cpp [code]
 
file  IntValue.h [code]
 
file  ListValue.cpp [code]
 
file  ListValue.h [code]
 
file  main.cpp [code]
 
file  ParamConstraint.h [code]
 
file  Parameter.cpp [code]
 
file  Parameter.h [code]
 
file  StringTools.cpp [code]
 
file  StringTools.h [code]
 
file  StringValue.cpp [code]
 
file  StringValue.h [code]
 
file  Value.cpp [code]
 
file  Value.h [code]
 
file  VoidValue.cpp [code]
 
file  VoidValue.h [code]
 
+
+ + + + diff --git a/docs/dir_0c3d7a8ae27c1a80e1a2e78f7c177a7d.html b/docs/dir_0c3d7a8ae27c1a80e1a2e78f7c177a7d.html new file mode 100644 index 0000000..2ad44d1 --- /dev/null +++ b/docs/dir_0c3d7a8ae27c1a80e1a2e78f7c177a7d.html @@ -0,0 +1,89 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Release Directory Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Release Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_0cc5f59b28c403d42cc56800132eb975.html b/docs/dir_0cc5f59b28c403d42cc56800132eb975.html new file mode 100644 index 0000000..93ce022 --- /dev/null +++ b/docs/dir_0cc5f59b28c403d42cc56800132eb975.html @@ -0,0 +1,89 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Debug Directory Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Debug Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_1148ebc2b25b55095aebf6f4cbb6efca.html b/docs/dir_1148ebc2b25b55095aebf6f4cbb6efca.html new file mode 100644 index 0000000..4513d6e --- /dev/null +++ b/docs/dir_1148ebc2b25b55095aebf6f4cbb6efca.html @@ -0,0 +1,89 @@ + + + + + + + +Leonetienne/Hazelnupp: Doxygen Directory Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Doxygen Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_5c0eadceca12ef8285078e2e738769ee.html b/docs/dir_5c0eadceca12ef8285078e2e738769ee.html new file mode 100644 index 0000000..2e6c637 --- /dev/null +++ b/docs/dir_5c0eadceca12ef8285078e2e738769ee.html @@ -0,0 +1,89 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/Debug Directory Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Debug Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_a4e10305c1b03e566e1d27ef3ea61492.html b/docs/dir_a4e10305c1b03e566e1d27ef3ea61492.html new file mode 100644 index 0000000..9f333a8 --- /dev/null +++ b/docs/dir_a4e10305c1b03e566e1d27ef3ea61492.html @@ -0,0 +1,122 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp Directory Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Test_Hazelnupp Directory Reference
+
+
+
+Directory dependency graph for Test_Hazelnupp:
+
+
Test_Hazelnupp
+ + + + + + + +
+ + + + + + +

+Directories

directory  Debug
 
directory  Release
 
+ + + + + + + + + + + +

+Files

file  Abbreviations.cpp [code]
 
file  Basics.cpp [code]
 
file  Constraints.cpp [code]
 
file  Conversion.cpp [code]
 
file  helper.h [code]
 
+
+ + + + diff --git a/docs/dir_a4e10305c1b03e566e1d27ef3ea61492_dep.map b/docs/dir_a4e10305c1b03e566e1d27ef3ea61492_dep.map new file mode 100644 index 0000000..43702a4 --- /dev/null +++ b/docs/dir_a4e10305c1b03e566e1d27ef3ea61492_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/dir_a4e10305c1b03e566e1d27ef3ea61492_dep.md5 b/docs/dir_a4e10305c1b03e566e1d27ef3ea61492_dep.md5 new file mode 100644 index 0000000..93c45c0 --- /dev/null +++ b/docs/dir_a4e10305c1b03e566e1d27ef3ea61492_dep.md5 @@ -0,0 +1 @@ +39d561844e34e2a7e7b390ed90e30357 \ No newline at end of file diff --git a/docs/dir_a4e10305c1b03e566e1d27ef3ea61492_dep.png b/docs/dir_a4e10305c1b03e566e1d27ef3ea61492_dep.png new file mode 100644 index 0000000..670d84c Binary files /dev/null and b/docs/dir_a4e10305c1b03e566e1d27ef3ea61492_dep.png differ diff --git a/docs/dir_a8cffda729361e9d9637effa362fcea9.html b/docs/dir_a8cffda729361e9d9637effa362fcea9.html new file mode 100644 index 0000000..724bb46 --- /dev/null +++ b/docs/dir_a8cffda729361e9d9637effa362fcea9.html @@ -0,0 +1,89 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/Release Directory Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Release Directory Reference
+
+
+
+ + + + diff --git a/docs/doc.png b/docs/doc.png new file mode 100644 index 0000000..260aaf7 Binary files /dev/null and b/docs/doc.png differ diff --git a/docs/doxygen.css b/docs/doxygen.css new file mode 100644 index 0000000..2ba8ca9 --- /dev/null +++ b/docs/doxygen.css @@ -0,0 +1,1771 @@ +/* The standard CSS for doxygen 1.8.17 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #D3D7BD; + color: #A0A96F; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, p.intertd, p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #F8F9F5; + border: 1px solid #DEE1CD; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #A8B17C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #B3BB8D; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #DBDFC9; + color: #FFFFFF; + border: 1px double #D3D7BC; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #B3BB8D; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #B3BB8D; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #EAECE0; + background-color: #FDFDFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FDFDFD; + border: 1px solid #EAECE0; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #F8F9F5; + font-weight: bold; + border: 1px solid #EAECE0; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #F8F9F5; + border: 1px solid #EAECE0; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #F9F9F6; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #FCFCFB; + border-left: 2px solid #DBDFC9; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #DBDFC9; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #DEE1CD; +} + +th.dirtab { + background: #F8F9F5; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #B7BE92; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #FDFDFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #F3F4EE; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #B3BB8D; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #E0E3D0; + border-left: 1px solid #E0E3D0; + border-right: 1px solid #E0E3D0; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #F5F6F0; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #B3BB8D; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #F8F9F5; + border: 1px solid #DEE1CD; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #E0E3D0; + border-left: 1px solid #E0E3D0; + border-right: 1px solid #E0E3D0; + padding: 6px 0px 6px 0px; + color: #858F55; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #F4F5EE; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #E0E3D0; + border-left: 1px solid #E0E3D0; + border-right: 1px solid #E0E3D0; + padding: 6px 10px 2px 10px; + background-color: #FDFDFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #CAD0B0; + border-top:1px solid #BDC49B; + border-left:1px solid #BDC49B; + border-right:1px solid #EAECE0; + border-bottom:1px solid #EAECE0; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #DBDFC9; + border-bottom: 1px solid #DBDFC9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #FCFCFB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #A8B17C; +} + +.arrow { + color: #DBDFC9; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #CAD0B0; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #909B5C; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #95A05F; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #A2AB73; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #E0E3D0; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #E0E3D0; + border-bottom: 1px solid #E0E3D0; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #E0E3D0; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #F5F6F0; + font-size: 90%; + color: #858F55; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #E0E3D0; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#D4D8BE; + border:solid 1px #E9ECDF; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#A0AA70; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #8C9659; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#C6CCA9; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#A0AA70; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #FDFDFC; + margin: 0px; + border-bottom: 1px solid #EAECE0; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #BDC49B; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #D6DBC2; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#9CA66A; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #FBFBF9; + border: 1px solid #F1F3EB; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #B3BB8D; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #95A05F; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #95A05F; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #A2AB73; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #95A05F; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #A2AB73; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/docs/doxygen.png b/docs/doxygen.png new file mode 100644 index 0000000..bc0e10e Binary files /dev/null and b/docs/doxygen.png differ diff --git a/docs/dynsections.js b/docs/dynsections.js new file mode 100644 index 0000000..c8e84aa --- /dev/null +++ b/docs/dynsections.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +Leonetienne/Hazelnupp: File List + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
+ + + + diff --git a/docs/folderclosed.png b/docs/folderclosed.png new file mode 100644 index 0000000..72913ae Binary files /dev/null and b/docs/folderclosed.png differ diff --git a/docs/folderopen.png b/docs/folderopen.png new file mode 100644 index 0000000..b85d251 Binary files /dev/null and b/docs/folderopen.png differ diff --git a/docs/functions.html b/docs/functions.html new file mode 100644 index 0000000..f197558 --- /dev/null +++ b/docs/functions.html @@ -0,0 +1,408 @@ + + + + + + + +Leonetienne/Hazelnupp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+ + +

- ~ -

+
+ + + + diff --git a/docs/functions_func.html b/docs/functions_func.html new file mode 100644 index 0000000..323c228 --- /dev/null +++ b/docs/functions_func.html @@ -0,0 +1,379 @@ + + + + + + + +Leonetienne/Hazelnupp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+ + +

- ~ -

+
+ + + + diff --git a/docs/functions_rela.html b/docs/functions_rela.html new file mode 100644 index 0000000..c19da44 --- /dev/null +++ b/docs/functions_rela.html @@ -0,0 +1,87 @@ + + + + + + + +Leonetienne/Hazelnupp: Class Members - Related Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/functions_vars.html b/docs/functions_vars.html new file mode 100644 index 0000000..5b5a23a --- /dev/null +++ b/docs/functions_vars.html @@ -0,0 +1,104 @@ + + + + + + + +Leonetienne/Hazelnupp: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/globals.html b/docs/globals.html new file mode 100644 index 0000000..c2d87eb --- /dev/null +++ b/docs/globals.html @@ -0,0 +1,89 @@ + + + + + + + +Leonetienne/Hazelnupp: File Members + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
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 new file mode 100644 index 0000000..868b6b3 --- /dev/null +++ b/docs/globals_defs.html @@ -0,0 +1,86 @@ + + + + + + + +Leonetienne/Hazelnupp: File Members + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/globals_enum.html b/docs/globals_enum.html new file mode 100644 index 0000000..28b08db --- /dev/null +++ b/docs/globals_enum.html @@ -0,0 +1,86 @@ + + + + + + + +Leonetienne/Hazelnupp: File Members + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/globals_func.html b/docs/globals_func.html new file mode 100644 index 0000000..aaf8e66 --- /dev/null +++ b/docs/globals_func.html @@ -0,0 +1,86 @@ + + + + + + + +Leonetienne/Hazelnupp: File Members + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/globals_type.html b/docs/globals_type.html new file mode 100644 index 0000000..d524f11 --- /dev/null +++ b/docs/globals_type.html @@ -0,0 +1,86 @@ + + + + + + + +Leonetienne/Hazelnupp: File Members + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/graph_legend.html b/docs/graph_legend.html new file mode 100644 index 0000000..5f5d4e7 --- /dev/null +++ b/docs/graph_legend.html @@ -0,0 +1,145 @@ + + + + + + + +Leonetienne/Hazelnupp: Graph Legend + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+ +

The arrows have the following meaning:

+ +
+ + + + diff --git a/docs/graph_legend.md5 b/docs/graph_legend.md5 new file mode 100644 index 0000000..8fcdccd --- /dev/null +++ b/docs/graph_legend.md5 @@ -0,0 +1 @@ +f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/docs/graph_legend.png b/docs/graph_legend.png new file mode 100644 index 0000000..7e2cbcf Binary files /dev/null and b/docs/graph_legend.png differ diff --git a/docs/helper_8h.html b/docs/helper_8h.html new file mode 100644 index 0000000..c9c2151 --- /dev/null +++ b/docs/helper_8h.html @@ -0,0 +1,165 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/helper.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
helper.h File Reference
+
+
+
#include <vector>
+
+Include dependency graph for helper.h:
+
+
+ + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Macros

#define C_Ify(vector)   vector.size(), vector.data()
 
+ + + +

+Typedefs

typedef std::vector< const char * > ArgList
 
+

Macro Definition Documentation

+ +

◆ C_Ify

+ +
+
+ + + + + + + + +
#define C_Ify( vector)   vector.size(), vector.data()
+
+ +

Definition at line 4 of file helper.h.

+ +
+
+

Typedef Documentation

+ +

◆ ArgList

+ +
+
+ + + + +
typedef std::vector<const char*> ArgList
+
+ +

Definition at line 6 of file helper.h.

+ +
+
+
+ + + + diff --git a/docs/helper_8h__dep__incl.map b/docs/helper_8h__dep__incl.map new file mode 100644 index 0000000..89aaa7e --- /dev/null +++ b/docs/helper_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/helper_8h__dep__incl.md5 b/docs/helper_8h__dep__incl.md5 new file mode 100644 index 0000000..426dd98 --- /dev/null +++ b/docs/helper_8h__dep__incl.md5 @@ -0,0 +1 @@ +1227db7e106ab3999edfad0e739912b2 \ No newline at end of file diff --git a/docs/helper_8h__dep__incl.png b/docs/helper_8h__dep__incl.png new file mode 100644 index 0000000..856b621 Binary files /dev/null and b/docs/helper_8h__dep__incl.png differ diff --git a/docs/helper_8h__incl.map b/docs/helper_8h__incl.map new file mode 100644 index 0000000..22e622e --- /dev/null +++ b/docs/helper_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/helper_8h__incl.md5 b/docs/helper_8h__incl.md5 new file mode 100644 index 0000000..e553760 --- /dev/null +++ b/docs/helper_8h__incl.md5 @@ -0,0 +1 @@ +259281a56cf33665dc686d86fe837a4d \ No newline at end of file diff --git a/docs/helper_8h__incl.png b/docs/helper_8h__incl.png new file mode 100644 index 0000000..d2165c2 Binary files /dev/null and b/docs/helper_8h__incl.png differ diff --git a/docs/helper_8h_source.html b/docs/helper_8h_source.html new file mode 100644 index 0000000..3ca0786 --- /dev/null +++ b/docs/helper_8h_source.html @@ -0,0 +1,96 @@ + + + + + + + +Leonetienne/Hazelnupp: Test_Hazelnupp/helper.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
helper.h
+
+
+Go to the documentation of this file.
1 #pragma once
+
2 #include <vector>
+
3 
+
4 #define C_Ify(vector) vector.size(), vector.data()
+
5 
+
6 typedef std::vector<const char*> ArgList;
+
+
std::vector< const char * > ArgList
Definition: helper.h:6
+ + + + diff --git a/docs/hierarchy.html b/docs/hierarchy.html new file mode 100644 index 0000000..99dbae8 --- /dev/null +++ b/docs/hierarchy.html @@ -0,0 +1,108 @@ + + + + + + + +Leonetienne/Hazelnupp: Class Hierarchy + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + +
 Cstd::exceptionSTL class
 CHazelnuppExceptionGeneric hazelnupp exception
 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
 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
 CHazelnuppThe main class to interface with
 CParamConstraint
 CParameter
 CStringToolsInternal helper class
 CValueAbstract class for values
 CFloatValueSpecializations for floating point values (uses long double)
 CIntValueSpecializations for integer values (uses long long int)
 CListValueSpecializations for list values (uses std::vector<Value*>)
 CStringValueSpecializations for string values (uses std::string)
 CVoidValueSpecializations for void values
+
+
+ + + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..67fdd8a --- /dev/null +++ b/docs/index.html @@ -0,0 +1,324 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+

is a simple, easy to use command line parameter parser.
+ Hazelnupp does not support windows-, or bsd-style arguments. Only linux-style.
+

+

What is the linux-style? This:

# Using a long parameter
+
a.out --long-parameter 1234
+
# Using an abbreviated parameter
+
a.out -lp 1234
+

+Note

+

These examples reference exceptions. These are not enabled by default. The default behaviour for user-fault exceptions is to produce output to stderr and kill the process.
+ To enable exceptions, call this method:

Hazelnupp args;
+
args.SetCrashOnFail(false);
+

+Importing into a project

+
+

How do i actually import this into my existing project?

+
+

I am working on a proper way to make this a fast-and-easy include.
+ I am probably going to make it a single-header–single-cpp file solution. A namespace will obviously also be used.
+

+

If you want to use it NOW, the best idea would probably be to either compile a lib from source or set the entire Visual Studio project as a dependency, if you are using VS.

+

+What's the concept?

+

The concept is that each parameter must be one of five types. These are:

    +
  • Void
  • +
  • Int
  • +
  • Float
  • +
  • String
  • +
  • List (non-recursive)
  • +
+

Here are examples on how to create them

# Void
+
a.out --foo
+
+
# Int
+
a.out --foo 5
+
+
# Float
+
a.out --foo 5.5
+
+
# String
+
a.out --foo peter
+
+
# List (any type above works)
+
a.out --foo peter jake jeff billy
+
+
# List, mixed types
+
a.out --foo 1 2 3 4 peter willy billy bob 3
+

These parameters can then be accessed via a simple lookup!

+

+Minimal working example

+

So what's the simplest way to use Hazelnupp to work with command-line parameters? See:

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args(argc, argv);
+
+
if (args.HasParam("--force"))
+
// do forced
+
else
+
// be gentle
+
+
return 0;
+
}
+

Looks super easy! But what about actual values?

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args(argc, argv);
+
+
// Either check via HasParam(), or do a try-catch
+
try
+
{
+
int myInt = args["--my-int"].GetInt32();
+
double myInt = args["--my-float"].GetFloat32();
+
std::string myStr = args["--my-string"].GetString();
+
}
+ +
{
+
return -1;
+
}
+
+
return 0;
+
}
+

What about lists?

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args(argc, argv);
+
+
const auto& myList = args["--my-list"].GetList(); // std::vector<Value*>
+
+
for (const auto* it : myList)
+
{
+
// Should probably check for type-correctness with it->GetDataType()
+
std::cout << it->GetString() << std::endl;
+
}
+
+
return 0;
+
}
+

+Abbreviations

+

Abbreviations are a very important part of command line arguments. Like, typing -f instead of --force. Here's how to use them in Hazelnupp:

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args;
+
+
// Register abbreviations
+
args.RegisterAbbreviation("-f", "--force");
+
+
// Parse
+
args.Parse(argc, argv);
+
+
if (args.HasParam("--force")) // This key will be present, even if the user passed '-f'
+
// do forced
+
else
+
// be gentle
+
+
return 0;
+
}
+

+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:

+

+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.
  • +
+

Minimal working example:

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args;
+
+
// Register constraints
+ +
ParamConstraint::Require("--this-is-required"), // This missing throws an exception
+
ParamConstraint::Require("--also-required-but-defaulted", {"122"}), // This will default to 122
+
});
+
+
// Parse
+
args.Parse(argc, argv);
+
+
return 0;
+
}
+

+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.
+ If a supplied type does not match, but is convertible, it will be converted.
+ If it is not convertible, an exception will be thrown.

+

These conversions are:

    +
  • int -> [float, string, list, void]
  • +
  • float ->[int, string, list, void]
  • +
  • string -> [list, void]
  • +
  • list -> [void]
  • +
  • void -> [list]
  • +
+

The conversions *->list just create a list with a single entry (except for void->list which produces an empty list).
+ The *->void conversions just drop their value.

+

Minimal working example:

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args;
+
+
// Register constraints
+ + +
});
+
+
// Parse
+
args.Parse(argc, argv);
+
+
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.

+
+

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

+
pc.key = "--my-key";
+
pc.constrainType = true;
+ +
pc.defaultValue = {}; // no default value
+
pc.required = true;
+
+ +

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

+

+More examples?

+

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

+

+Further notes

+

This is still in alpha! There is no guarantee at all that this actually works.
+ Whilst i did my best do make sure it does, i bet there are still a few flaws i did overlook.
+ 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 do it, but i'm not sure when.
+ Feel free to submit a PR if you fixed something :)

+

+What is not supported?

+

Chaining abbreviated parameters, like this:

# This is not supported. It would think -ltr is one parameter.
+
a.out -ltr
+
+
# Instead do this
+
a.out -l -t -r
+

+LICENSE

+
Copyright (c) 2021, Leon Etienne
+
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+
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.
+
+
+
void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
Will register an abbreviation (like -f for –force)
Definition: Hazelnupp.cpp:330
+
bool required
If set to true, and no default value set, an error will be produced if this parameter is not supplied...
+
void RegisterConstraints(const std::vector< ParamConstraint > &constraints)
Will register parameter constraints.
Definition: Hazelnupp.cpp:352
+
static ParamConstraint TypeSafety(const std::string &key, DATA_TYPE wantedType, bool constrainType=true)
Constructs a type-safety constraint.
+
int main(int argc, char **argv)
Definition: main.cpp:5
+
std::vector< std::string > defaultValue
The default value for this parameter.
+
@ INT
+
static ParamConstraint Require(const std::string &key, const std::vector< std::string > &defaultValue={}, bool required=true)
Constructs a require constraint.
+
std::string key
The key of the parameter to constrain.
+
+
Gets thrown when an non-existent key gets dereferenced.
+
void SetCrashOnFail(bool crashOnFail)
Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...
Definition: Hazelnupp.cpp:379
+
bool HasParam(const std::string &key) const
Will check wether a parameter exists given a key, or not.
Definition: Hazelnupp.cpp:151
+
bool constrainType
Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
+
@ STRING
+
DATA_TYPE wantedType
Constrain the parameter to this value. Requires constrainType to be set to true.
+
The main class to interface with.
Definition: Hazelnupp.h:9
+
+
void Parse(const int argc, const char *const *argv)
Will parse command line arguments.
Definition: Hazelnupp.cpp:33
+ + + + diff --git a/docs/index_8md.html b/docs/index_8md.html new file mode 100644 index 0000000..be5e7cb --- /dev/null +++ b/docs/index_8md.html @@ -0,0 +1,85 @@ + + + + + + + +Leonetienne/Hazelnupp: Doxygen/index.md File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Doxygen/index.md File Reference
+
+
+
+ + + + diff --git a/docs/inherit_graph_0.map b/docs/inherit_graph_0.map new file mode 100644 index 0000000..9741c9e --- /dev/null +++ b/docs/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/inherit_graph_0.md5 b/docs/inherit_graph_0.md5 new file mode 100644 index 0000000..232c3e6 --- /dev/null +++ b/docs/inherit_graph_0.md5 @@ -0,0 +1 @@ +05f5fbf778280a49be054f37088fe987 \ No newline at end of file diff --git a/docs/inherit_graph_0.png b/docs/inherit_graph_0.png new file mode 100644 index 0000000..8b3ae89 Binary files /dev/null and b/docs/inherit_graph_0.png differ diff --git a/docs/inherit_graph_1.map b/docs/inherit_graph_1.map new file mode 100644 index 0000000..bbbbf01 --- /dev/null +++ b/docs/inherit_graph_1.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/inherit_graph_1.md5 b/docs/inherit_graph_1.md5 new file mode 100644 index 0000000..9fcad0b --- /dev/null +++ b/docs/inherit_graph_1.md5 @@ -0,0 +1 @@ +11f045deeaf9a601d5ad34a79967a0f9 \ No newline at end of file diff --git a/docs/inherit_graph_1.png b/docs/inherit_graph_1.png new file mode 100644 index 0000000..827eff2 Binary files /dev/null and b/docs/inherit_graph_1.png differ diff --git a/docs/inherit_graph_2.map b/docs/inherit_graph_2.map new file mode 100644 index 0000000..67e54a1 --- /dev/null +++ b/docs/inherit_graph_2.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/inherit_graph_2.md5 b/docs/inherit_graph_2.md5 new file mode 100644 index 0000000..3373ae5 --- /dev/null +++ b/docs/inherit_graph_2.md5 @@ -0,0 +1 @@ +192546f8044e385dcb4e1aca18ebe513 \ No newline at end of file diff --git a/docs/inherit_graph_2.png b/docs/inherit_graph_2.png new file mode 100644 index 0000000..7cac96f Binary files /dev/null and b/docs/inherit_graph_2.png differ diff --git a/docs/inherit_graph_3.map b/docs/inherit_graph_3.map new file mode 100644 index 0000000..b155a08 --- /dev/null +++ b/docs/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/inherit_graph_3.md5 b/docs/inherit_graph_3.md5 new file mode 100644 index 0000000..308f1f7 --- /dev/null +++ b/docs/inherit_graph_3.md5 @@ -0,0 +1 @@ +6481c4409a2d34d7347ae0ab04e39488 \ No newline at end of file diff --git a/docs/inherit_graph_3.png b/docs/inherit_graph_3.png new file mode 100644 index 0000000..15e18f4 Binary files /dev/null and b/docs/inherit_graph_3.png differ diff --git a/docs/inherit_graph_4.map b/docs/inherit_graph_4.map new file mode 100644 index 0000000..1a5cc03 --- /dev/null +++ b/docs/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/inherit_graph_4.md5 b/docs/inherit_graph_4.md5 new file mode 100644 index 0000000..86dc5ad --- /dev/null +++ b/docs/inherit_graph_4.md5 @@ -0,0 +1 @@ +c74d2ba194164b7d25404563e65b9801 \ No newline at end of file diff --git a/docs/inherit_graph_4.png b/docs/inherit_graph_4.png new file mode 100644 index 0000000..8b0046f Binary files /dev/null and b/docs/inherit_graph_4.png differ diff --git a/docs/inherit_graph_5.map b/docs/inherit_graph_5.map new file mode 100644 index 0000000..262f085 --- /dev/null +++ b/docs/inherit_graph_5.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/inherit_graph_5.md5 b/docs/inherit_graph_5.md5 new file mode 100644 index 0000000..8306c47 --- /dev/null +++ b/docs/inherit_graph_5.md5 @@ -0,0 +1 @@ +62f776d5de34d54281012fb34d2f62cc \ No newline at end of file diff --git a/docs/inherit_graph_5.png b/docs/inherit_graph_5.png new file mode 100644 index 0000000..a1ae793 Binary files /dev/null and b/docs/inherit_graph_5.png differ diff --git a/docs/inherits.html b/docs/inherits.html new file mode 100644 index 0000000..cb18cf9 --- /dev/null +++ b/docs/inherits.html @@ -0,0 +1,130 @@ + + + + + + + +Leonetienne/Hazelnupp: Class Hierarchy + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + + + + + +
+ + + +
+ + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + +
+
+ + + + diff --git a/docs/jquery.js b/docs/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/docs/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/main_8cpp.html b/docs/main_8cpp.html new file mode 100644 index 0000000..cc2a642 --- /dev/null +++ b/docs/main_8cpp.html @@ -0,0 +1,219 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/main.cpp File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
main.cpp File Reference
+
+
+
#include <iostream>
+#include "Hazelnupp.h"
+#include "IntValue.h"
+
+Include dependency graph for main.cpp:
+
+
+ + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char **argv)
 
+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char ** argv 
)
+
+ +

Definition at line 5 of file main.cpp.

+
6 {
+
7  while (1)
+
8  {
+
9  // Mock command-line params
+
10  std::vector<const char*> testArgv = {
+
11  "meinpfad",
+
12  "-w",
+
13  "-99",
+
14  "--alfred",
+
15  "apfel",
+
16  "banane",
+
17  "triangle",
+
18  "--numbers",
+
19  "1",
+
20  "2",
+
21  "3",
+
22  "4",
+
23  "5",
+
24  };
+
25 
+
26  argc = testArgv.size();
+
27  argv = const_cast<char**>(testArgv.data());
+
28 
+
29  // Prepare Hazelnupp parser
+
30  Hazelnupp args;
+
31 
+
32  ParamConstraint pc;
+
33  pc.key = "--alfredo";
+
34  pc.constrainType = true;
+ +
36  pc.required = true;
+
37  pc.defaultValue = { "coca cola", "fanta" };
+
38 
+
39  args.RegisterConstraints({
+
40  pc
+
41  });
+
42 
+
43  args.RegisterAbbreviation("-w", "--word");
+
44 
+
45  // Parse
+
46  args.Parse(argc, argv);
+
47 
+
48  // Use
+
49  if (args.HasParam("--alfredo"))
+
50  {
+
51  std::cout << args["--alfredo"].GetInt32() << std::endl;
+
52  }
+
53  else
+
54  {
+
55  std::cout << "No --alfredo!" << std::endl;
+
56  }
+
57  }
+
58 
+
59  return 0;
+
60 }
+
+
+
+
+
void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
Will register an abbreviation (like -f for –force)
Definition: Hazelnupp.cpp:330
+
bool required
If set to true, and no default value set, an error will be produced if this parameter is not supplied...
+
void RegisterConstraints(const std::vector< ParamConstraint > &constraints)
Will register parameter constraints.
Definition: Hazelnupp.cpp:352
+ +
std::vector< std::string > defaultValue
The default value for this parameter.
+
std::string key
The key of the parameter to constrain.
+
bool HasParam(const std::string &key) const
Will check wether a parameter exists given a key, or not.
Definition: Hazelnupp.cpp:151
+
bool constrainType
Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
+
DATA_TYPE wantedType
Constrain the parameter to this value. Requires constrainType to be set to true.
+
The main class to interface with.
Definition: Hazelnupp.h:9
+ +
void Parse(const int argc, const char *const *argv)
Will parse command line arguments.
Definition: Hazelnupp.cpp:33
+ + + + diff --git a/docs/main_8cpp__incl.map b/docs/main_8cpp__incl.map new file mode 100644 index 0000000..28486ea --- /dev/null +++ b/docs/main_8cpp__incl.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/main_8cpp__incl.md5 b/docs/main_8cpp__incl.md5 new file mode 100644 index 0000000..1779fee --- /dev/null +++ b/docs/main_8cpp__incl.md5 @@ -0,0 +1 @@ +ea0d373d42abb0550133bf07768e4a65 \ No newline at end of file diff --git a/docs/main_8cpp__incl.png b/docs/main_8cpp__incl.png new file mode 100644 index 0000000..b0f0694 Binary files /dev/null and b/docs/main_8cpp__incl.png differ diff --git a/docs/main_8cpp_source.html b/docs/main_8cpp_source.html new file mode 100644 index 0000000..302509f --- /dev/null +++ b/docs/main_8cpp_source.html @@ -0,0 +1,164 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp/main.cpp Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
main.cpp
+
+
+Go to the documentation of this file.
1 #include <iostream>
+
2 #include "Hazelnupp.h"
+
3 #include "IntValue.h"
+
4 
+
5 int main(int argc, char** argv)
+
6 {
+
7  while (1)
+
8  {
+
9  // Mock command-line params
+
10  std::vector<const char*> testArgv = {
+
11  "meinpfad",
+
12  "-w",
+
13  "-99",
+
14  "--alfred",
+
15  "apfel",
+
16  "banane",
+
17  "triangle",
+
18  "--numbers",
+
19  "1",
+
20  "2",
+
21  "3",
+
22  "4",
+
23  "5",
+
24  };
+
25 
+
26  argc = testArgv.size();
+
27  argv = const_cast<char**>(testArgv.data());
+
28 
+
29  // Prepare Hazelnupp parser
+
30  Hazelnupp args;
+
31 
+
32  ParamConstraint pc;
+
33  pc.key = "--alfredo";
+
34  pc.constrainType = true;
+ +
36  pc.required = true;
+
37  pc.defaultValue = { "coca cola", "fanta" };
+
38 
+
39  args.RegisterConstraints({
+
40  pc
+
41  });
+
42 
+
43  args.RegisterAbbreviation("-w", "--word");
+
44 
+
45  // Parse
+
46  args.Parse(argc, argv);
+
47 
+
48  // Use
+
49  if (args.HasParam("--alfredo"))
+
50  {
+
51  std::cout << args["--alfredo"].GetInt32() << std::endl;
+
52  }
+
53  else
+
54  {
+
55  std::cout << "No --alfredo!" << std::endl;
+
56  }
+
57  }
+
58 
+
59  return 0;
+
60 }
+
+
void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
Will register an abbreviation (like -f for –force)
Definition: Hazelnupp.cpp:330
+
bool required
If set to true, and no default value set, an error will be produced if this parameter is not supplied...
+
void RegisterConstraints(const std::vector< ParamConstraint > &constraints)
Will register parameter constraints.
Definition: Hazelnupp.cpp:352
+ + +
int main(int argc, char **argv)
Definition: main.cpp:5
+
std::vector< std::string > defaultValue
The default value for this parameter.
+
std::string key
The key of the parameter to constrain.
+ +
bool HasParam(const std::string &key) const
Will check wether a parameter exists given a key, or not.
Definition: Hazelnupp.cpp:151
+
bool constrainType
Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
+
DATA_TYPE wantedType
Constrain the parameter to this value. Requires constrainType to be set to true.
+
The main class to interface with.
Definition: Hazelnupp.h:9
+ +
void Parse(const int argc, const char *const *argv)
Will parse command line arguments.
Definition: Hazelnupp.cpp:33
+ + + + diff --git a/docs/md_Doxygen_index.html b/docs/md_Doxygen_index.html new file mode 100644 index 0000000..4716109 --- /dev/null +++ b/docs/md_Doxygen_index.html @@ -0,0 +1,324 @@ + + + + + + + +Leonetienne/Hazelnupp: Hazelnupp + + + + + + + + + + + +
+
+ + + + + + + +
+
Leonetienne/Hazelnupp +
+
Simple, easy to use, command line parameter interface
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
+

is a simple, easy to use command line parameter parser.
+ Hazelnupp does not support windows-, or bsd-style arguments. Only linux-style.
+

+

What is the linux-style? This:

# Using a long parameter
+
a.out --long-parameter 1234
+
# Using an abbreviated parameter
+
a.out -lp 1234
+

+Note

+

These examples reference exceptions. These are not enabled by default. The default behaviour for user-fault exceptions is to produce output to stderr and kill the process.
+ To enable exceptions, call this method:

Hazelnupp args;
+
args.SetCrashOnFail(false);
+

+Importing into a project

+
+

How do i actually import this into my existing project?

+
+

I am working on a proper way to make this a fast-and-easy include.
+ I am probably going to make it a single-header–single-cpp file solution. A namespace will obviously also be used.
+

+

If you want to use it NOW, the best idea would probably be to either compile a lib from source or set the entire Visual Studio project as a dependency, if you are using VS.

+

+What's the concept?

+

The concept is that each parameter must be one of five types. These are:

    +
  • Void
  • +
  • Int
  • +
  • Float
  • +
  • String
  • +
  • List (non-recursive)
  • +
+

Here are examples on how to create them

# Void
+
a.out --foo
+
+
# Int
+
a.out --foo 5
+
+
# Float
+
a.out --foo 5.5
+
+
# String
+
a.out --foo peter
+
+
# List (any type above works)
+
a.out --foo peter jake jeff billy
+
+
# List, mixed types
+
a.out --foo 1 2 3 4 peter willy billy bob 3
+

These parameters can then be accessed via a simple lookup!

+

+Minimal working example

+

So what's the simplest way to use Hazelnupp to work with command-line parameters? See:

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args(argc, argv);
+
+
if (args.HasParam("--force"))
+
// do forced
+
else
+
// be gentle
+
+
return 0;
+
}
+

Looks super easy! But what about actual values?

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args(argc, argv);
+
+
// Either check via HasParam(), or do a try-catch
+
try
+
{
+
int myInt = args["--my-int"].GetInt32();
+
double myInt = args["--my-float"].GetFloat32();
+
std::string myStr = args["--my-string"].GetString();
+
}
+ +
{
+
return -1;
+
}
+
+
return 0;
+
}
+

What about lists?

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args(argc, argv);
+
+
const auto& myList = args["--my-list"].GetList(); // std::vector<Value*>
+
+
for (const auto* it : myList)
+
{
+
// Should probably check for type-correctness with it->GetDataType()
+
std::cout << it->GetString() << std::endl;
+
}
+
+
return 0;
+
}
+

+Abbreviations

+

Abbreviations are a very important part of command line arguments. Like, typing -f instead of --force. Here's how to use them in Hazelnupp:

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args;
+
+
// Register abbreviations
+
args.RegisterAbbreviation("-f", "--force");
+
+
// Parse
+
args.Parse(argc, argv);
+
+
if (args.HasParam("--force")) // This key will be present, even if the user passed '-f'
+
// do forced
+
else
+
// be gentle
+
+
return 0;
+
}
+

+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:

+

+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.
  • +
+

Minimal working example:

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args;
+
+
// Register constraints
+ +
ParamConstraint::Require("--this-is-required"), // This missing throws an exception
+
ParamConstraint::Require("--also-required-but-defaulted", {"122"}), // This will default to 122
+
});
+
+
// Parse
+
args.Parse(argc, argv);
+
+
return 0;
+
}
+

+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.
+ If a supplied type does not match, but is convertible, it will be converted.
+ If it is not convertible, an exception will be thrown.

+

These conversions are:

    +
  • int -> [float, string, list, void]
  • +
  • float ->[int, string, list, void]
  • +
  • string -> [list, void]
  • +
  • list -> [void]
  • +
  • void -> [list]
  • +
+

The conversions *->list just create a list with a single entry (except for void->list which produces an empty list).
+ The *->void conversions just drop their value.

+

Minimal working example:

#include "Hazelnupp.h"
+
+
int main(int argc, char** argv)
+
{
+
Hazelnupp args;
+
+
// Register constraints
+ + +
});
+
+
// Parse
+
args.Parse(argc, argv);
+
+
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.

+
+

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

+
pc.key = "--my-key";
+
pc.constrainType = true;
+ +
pc.defaultValue = {}; // no default value
+
pc.required = true;
+
+ +

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

+

+More examples?

+

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

+

+Further notes

+

This is still in alpha! There is no guarantee at all that this actually works.
+ Whilst i did my best do make sure it does, i bet there are still a few flaws i did overlook.
+ 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 do it, but i'm not sure when.
+ Feel free to submit a PR if you fixed something :)

+

+What is not supported?

+

Chaining abbreviated parameters, like this:

# This is not supported. It would think -ltr is one parameter.
+
a.out -ltr
+
+
# Instead do this
+
a.out -l -t -r
+

+LICENSE

+
Copyright (c) 2021, Leon Etienne
+
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+
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.
+
+
+
void RegisterAbbreviation(const std::string &abbrev, const std::string &target)
Will register an abbreviation (like -f for –force)
Definition: Hazelnupp.cpp:330
+
bool required
If set to true, and no default value set, an error will be produced if this parameter is not supplied...
+
void RegisterConstraints(const std::vector< ParamConstraint > &constraints)
Will register parameter constraints.
Definition: Hazelnupp.cpp:352
+
static ParamConstraint TypeSafety(const std::string &key, DATA_TYPE wantedType, bool constrainType=true)
Constructs a type-safety constraint.
+
int main(int argc, char **argv)
Definition: main.cpp:5
+
std::vector< std::string > defaultValue
The default value for this parameter.
+ +
static ParamConstraint Require(const std::string &key, const std::vector< std::string > &defaultValue={}, bool required=true)
Constructs a require constraint.
+
std::string key
The key of the parameter to constrain.
+ +
Gets thrown when an non-existent key gets dereferenced.
+
void SetCrashOnFail(bool crashOnFail)
Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...
Definition: Hazelnupp.cpp:379
+
bool HasParam(const std::string &key) const
Will check wether a parameter exists given a key, or not.
Definition: Hazelnupp.cpp:151
+
bool constrainType
Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
+ +
DATA_TYPE wantedType
Constrain the parameter to this value. Requires constrainType to be set to true.
+
The main class to interface with.
Definition: Hazelnupp.h:9
+ +
void Parse(const int argc, const char *const *argv)
Will parse command line arguments.
Definition: Hazelnupp.cpp:33
+ + + + diff --git a/docs/menu.js b/docs/menu.js new file mode 100644 index 0000000..433c15b --- /dev/null +++ b/docs/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs/menudata.js b/docs/menudata.js new file mode 100644 index 0000000..bfb6993 --- /dev/null +++ b/docs/menudata.js @@ -0,0 +1,74 @@ +/* +@licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2019 by Dimitri van Heesch + +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"k",url:"functions.html#index_k"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"v",url:"functions.html#index_v"}, +{text:"w",url:"functions.html#index_w"}, +{text:"~",url:"functions.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"h",url:"functions_func.html#index_h"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"k",url:"functions_func.html#index_k"}, +{text:"l",url:"functions_func.html#index_l"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"v",url:"functions_func.html#index_v"}, +{text:"w",url:"functions_func.html#index_w"}, +{text:"~",url:"functions_func.html#index__7E"}]}, +{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 Members",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions",url:"globals_func.html"}, +{text:"Enumerations",url:"globals_enum.html"}]}]}]} diff --git a/docs/namespaceTestHazelnupp.html b/docs/namespaceTestHazelnupp.html new file mode 100644 index 0000000..ac25f51 --- /dev/null +++ b/docs/namespaceTestHazelnupp.html @@ -0,0 +1,1139 @@ + + + + + + + +Leonetienne/Hazelnupp: TestHazelnupp Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Leonetienne/Hazelnupp +
    +
    Simple, easy to use, command line parameter interface
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    TestHazelnupp Namespace Reference
    +
    +
    + + + + + + + + + + +

    +Functions

     TEST_CLASS (_Abbreviations)
     
     TEST_CLASS (_Basics)
     
     TEST_CLASS (_Constraints)
     
     TEST_CLASS (_Conversion)
     
    +

    Function Documentation

    + +

    ◆ TEST_CLASS() [1/4]

    + +
    +
    + + + + + + + + +
    TestHazelnupp::TEST_CLASS (_Abbreviations )
    +
    + +

    Definition at line 9 of file Abbreviations.cpp.

    +
    10  {
    +
    11  public:
    +
    12 
    +
    13  // Tests keys exist after parsing
    +
    14  TEST_METHOD(KeysExist)
    +
    15  {
    +
    16  // Setup
    +
    17  ArgList args({
    +
    18  "/my/fake/path/wahoo.out",
    +
    19  "-ms",
    +
    20  "billybob",
    +
    21  "-mv",
    +
    22  "-mf",
    +
    23  "-23.199",
    +
    24  "-mi",
    +
    25  "199",
    +
    26  "-mnl",
    +
    27  "1",
    +
    28  "2",
    +
    29  "3",
    +
    30  "4",
    +
    31  "-msl",
    +
    32  "apple",
    +
    33  "banana",
    +
    34  "pumpkin",
    +
    35  });
    +
    36 
    +
    37  // Exercise
    +
    38  Hazelnupp nupp;
    +
    39  nupp.SetCrashOnFail(false);
    +
    40 
    +
    41  nupp.RegisterAbbreviation("-ms", "--my_string");
    +
    42  nupp.RegisterAbbreviation("-mv", "--my_void");
    +
    43  nupp.RegisterAbbreviation("-mi", "--my_int");
    +
    44  nupp.RegisterAbbreviation("-mf", "--my_float");
    +
    45  nupp.RegisterAbbreviation("-mnl", "--my_num_list");
    +
    46  nupp.RegisterAbbreviation("-msl", "--my_str_list");
    +
    47 
    +
    48  nupp.Parse(C_Ify(args));
    +
    49 
    +
    50  // Verify
    +
    51  Assert::IsTrue(nupp.HasParam("--my_string"));
    +
    52  Assert::IsTrue(nupp.HasParam("--my_void"));
    +
    53  Assert::IsTrue(nupp.HasParam("--my_float"));
    +
    54  Assert::IsTrue(nupp.HasParam("--my_int"));
    +
    55  Assert::IsTrue(nupp.HasParam("--my_num_list"));
    +
    56  Assert::IsTrue(nupp.HasParam("--my_str_list"));
    +
    57 
    +
    58  return;
    +
    59  }
    +
    60 
    +
    61  // Tests keys are of the correct type after parsing
    +
    62  TEST_METHOD(CorrectType)
    +
    63  {
    +
    64  // Setup
    +
    65  ArgList args({
    +
    66  "/my/fake/path/wahoo.out",
    +
    67  "-ms",
    +
    68  "billybob",
    +
    69  "-mv",
    +
    70  "-mf",
    +
    71  "-23.199",
    +
    72  "-mi",
    +
    73  "199",
    +
    74  "-mnl",
    +
    75  "1",
    +
    76  "2",
    +
    77  "3",
    +
    78  "4",
    +
    79  "-msl",
    +
    80  "apple",
    +
    81  "banana",
    +
    82  "pumpkin",
    +
    83  });
    +
    84 
    +
    85  // Exercise
    +
    86  Hazelnupp nupp;
    +
    87  nupp.SetCrashOnFail(false);
    +
    88 
    +
    89  nupp.RegisterAbbreviation("-ms", "--my_string");
    +
    90  nupp.RegisterAbbreviation("-mv", "--my_void");
    +
    91  nupp.RegisterAbbreviation("-mi", "--my_int");
    +
    92  nupp.RegisterAbbreviation("-mf", "--my_float");
    +
    93  nupp.RegisterAbbreviation("-mnl", "--my_num_list");
    +
    94  nupp.RegisterAbbreviation("-msl", "--my_str_list");
    +
    95 
    +
    96  nupp.Parse(C_Ify(args));
    +
    97 
    +
    98  // Verify
    +
    99  Assert::IsTrue(nupp["--my_string"].GetDataType() == DATA_TYPE::STRING);
    +
    100  Assert::IsTrue(nupp["--my_void"].GetDataType() == DATA_TYPE::VOID);
    +
    101  Assert::IsTrue(nupp["--my_float"].GetDataType() == DATA_TYPE::FLOAT);
    +
    102  Assert::IsTrue(nupp["--my_int"].GetDataType() == DATA_TYPE::INT);
    +
    103  Assert::IsTrue(nupp["--my_num_list"].GetDataType() == DATA_TYPE::LIST);
    +
    104  Assert::IsTrue(nupp["--my_str_list"].GetDataType() == DATA_TYPE::LIST);
    +
    105 
    +
    106  return;
    +
    107  }
    +
    108 
    +
    109  // Tests keys have the correct value after parsing
    +
    110  TEST_METHOD(CorrectValues)
    +
    111  {
    +
    112  // Setup
    +
    113  ArgList args({
    +
    114  "/my/fake/path/wahoo.out",
    +
    115  "-ms",
    +
    116  "billybob",
    +
    117  "-mv",
    +
    118  "-mf",
    +
    119  "-23.199",
    +
    120  "-mi",
    +
    121  "199",
    +
    122  "-mnl",
    +
    123  "1",
    +
    124  "2",
    +
    125  "3",
    +
    126  "4",
    +
    127  "-msl",
    +
    128  "apple",
    +
    129  "banana",
    +
    130  "pumpkin",
    +
    131  });
    +
    132 
    +
    133  // Exercise
    +
    134  Hazelnupp nupp;
    +
    135  nupp.SetCrashOnFail(false);
    +
    136 
    +
    137  nupp.RegisterAbbreviation("-ms", "--my_string");
    +
    138  nupp.RegisterAbbreviation("-mv", "--my_void");
    +
    139  nupp.RegisterAbbreviation("-mi", "--my_int");
    +
    140  nupp.RegisterAbbreviation("-mf", "--my_float");
    +
    141  nupp.RegisterAbbreviation("-mnl", "--my_num_list");
    +
    142  nupp.RegisterAbbreviation("-msl", "--my_str_list");
    +
    143 
    +
    144  nupp.Parse(C_Ify(args));
    +
    145 
    +
    146  // Verify
    +
    147  Assert::AreEqual(nupp["--my_string"].GetString(), std::string("billybob"));
    +
    148  Assert::AreEqual(nupp["--my_float"].GetFloat32(), -23.199);
    +
    149  Assert::AreEqual(nupp["--my_int"].GetInt32(), 199);
    +
    150  Assert::AreEqual(nupp["--my_num_list"].GetList()[0]->GetInt32(), 1);
    +
    151  Assert::AreEqual(nupp["--my_num_list"].GetList()[1]->GetInt32(), 2);
    +
    152  Assert::AreEqual(nupp["--my_num_list"].GetList()[2]->GetInt32(), 3);
    +
    153  Assert::AreEqual(nupp["--my_num_list"].GetList()[3]->GetInt32(), 4);
    +
    154  Assert::AreEqual(nupp["--my_str_list"].GetList()[0]->GetString(), std::string("apple"));
    +
    155  Assert::AreEqual(nupp["--my_str_list"].GetList()[1]->GetString(), std::string("banana"));
    +
    156  Assert::AreEqual(nupp["--my_str_list"].GetList()[2]->GetString(), std::string("pumpkin"));
    +
    157 
    +
    158  return;
    +
    159  }
    +
    160  };
    +
    +
    +
    + +

    ◆ TEST_CLASS() [2/4]

    + +
    +
    + + + + + + + + +
    TestHazelnupp::TEST_CLASS (_Basics )
    +
    + +

    Definition at line 10 of file Basics.cpp.

    +
    11  {
    +
    12  public:
    +
    13 
    +
    14  // Tests the application path gets exported correctly
    +
    15  TEST_METHOD(ApplicationPathWorks)
    +
    16  {
    +
    17  // Setup
    +
    18  ArgList args({
    +
    19  "/my/fake/path/wahoo.out"
    +
    20  });
    +
    21 
    +
    22  // Exercise
    +
    23  Hazelnupp nupp(C_Ify(args));
    +
    24  nupp.SetCrashOnFail(false);
    +
    25 
    +
    26  // Verify
    +
    27  Assert::AreEqual(std::string("/my/fake/path/wahoo.out"), nupp.GetExecutableName());
    +
    28 
    +
    29  return;
    +
    30  }
    +
    31 
    +
    32  // Edgecase test: We only have one param.
    +
    33  TEST_METHOD(Only_One_Param)
    +
    34  {
    +
    35  // Setup
    +
    36  ArgList args({
    +
    37  "/my/fake/path/wahoo.out",
    +
    38  "--dummy"
    +
    39  });
    +
    40 
    +
    41  // Exercise
    +
    42  Hazelnupp nupp(C_Ify(args));
    +
    43  nupp.SetCrashOnFail(false);
    +
    44 
    +
    45  // Verify
    +
    46  Assert::IsTrue(nupp.HasParam("--dummy"));
    +
    47 
    +
    48  return;
    +
    49  }
    +
    50 
    +
    51  // Edgecase test: We begin with an actual value, instead of an argument.
    +
    52  TEST_METHOD(Weird_Case_1)
    +
    53  {
    +
    54  // Setup
    +
    55  ArgList args({
    +
    56  "/my/fake/path/wahoo.out",
    +
    57  "dummy"
    +
    58  });
    +
    59 
    +
    60  // Exercise
    +
    61  Hazelnupp nupp(C_Ify(args));
    +
    62  nupp.SetCrashOnFail(false);
    +
    63 
    +
    64  // Verify (no exception)
    +
    65 
    +
    66  return;
    +
    67  }
    +
    68 
    +
    69  // Edgecase test: We begin with first an actual value, and then an argument.
    +
    70  TEST_METHOD(Weird_Case_2)
    +
    71  {
    +
    72  // Setup
    +
    73  ArgList args({
    +
    74  "/my/fake/path/wahoo.out",
    +
    75  "dummy",
    +
    76  "--dummy"
    +
    77  });
    +
    78 
    +
    79  // Exercise
    +
    80  Hazelnupp nupp(C_Ify(args));
    +
    81  nupp.SetCrashOnFail(false);
    +
    82 
    +
    83  // Verify
    +
    84  Assert::IsTrue(nupp.HasParam("--dummy"), L"Failed has-param");
    +
    85  Assert::IsTrue(nupp["--dummy"].GetDataType() == DATA_TYPE::VOID, L"Failed type");
    +
    86 
    +
    87  return;
    +
    88  }
    +
    89 
    +
    90  // Tests keys exist after parsing
    +
    91  TEST_METHOD(KeysExist)
    +
    92  {
    +
    93  // Setup
    +
    94  ArgList args({
    +
    95  "/my/fake/path/wahoo.out",
    +
    96  "--my_string",
    +
    97  "billybob",
    +
    98  "--my_void",
    +
    99  "--my_float",
    +
    100  "-23.199",
    +
    101  "--my_int",
    +
    102  "199",
    +
    103  "--my_num_list",
    +
    104  "1",
    +
    105  "2",
    +
    106  "3",
    +
    107  "4",
    +
    108  "--my_str_list",
    +
    109  "apple",
    +
    110  "banana",
    +
    111  "pumpkin",
    +
    112  });
    +
    113 
    +
    114  // Exercise
    +
    115  Hazelnupp nupp(C_Ify(args));
    +
    116  nupp.SetCrashOnFail(false);
    +
    117 
    +
    118  // Verify
    +
    119  Assert::IsTrue(nupp.HasParam("--my_string"));
    +
    120  Assert::IsTrue(nupp.HasParam("--my_void"));
    +
    121  Assert::IsTrue(nupp.HasParam("--my_float"));
    +
    122  Assert::IsTrue(nupp.HasParam("--my_int"));
    +
    123  Assert::IsTrue(nupp.HasParam("--my_num_list"));
    +
    124  Assert::IsTrue(nupp.HasParam("--my_str_list"));
    +
    125 
    +
    126  return;
    +
    127  }
    +
    128 
    +
    129  // Tests keys are of the correct type after parsing
    +
    130  TEST_METHOD(CorrectType)
    +
    131  {
    +
    132  // Setup
    +
    133  ArgList args({
    +
    134  "/my/fake/path/wahoo.out",
    +
    135  "--my_string",
    +
    136  "billybob",
    +
    137  "--my_void",
    +
    138  "--my_float",
    +
    139  "-23.199",
    +
    140  "--my_int",
    +
    141  "199",
    +
    142  "--my_num_list",
    +
    143  "1",
    +
    144  "2",
    +
    145  "3",
    +
    146  "4",
    +
    147  "--my_str_list",
    +
    148  "apple",
    +
    149  "banana",
    +
    150  "pumpkin",
    +
    151  });
    +
    152 
    +
    153  // Exercise
    +
    154  Hazelnupp nupp(C_Ify(args));
    +
    155  nupp.SetCrashOnFail(false);
    +
    156 
    +
    157  // Verify
    +
    158  Assert::IsTrue(nupp["--my_string"].GetDataType() == DATA_TYPE::STRING);
    +
    159  Assert::IsTrue(nupp["--my_void"].GetDataType() == DATA_TYPE::VOID);
    +
    160  Assert::IsTrue(nupp["--my_float"].GetDataType() == DATA_TYPE::FLOAT);
    +
    161  Assert::IsTrue(nupp["--my_int"].GetDataType() == DATA_TYPE::INT);
    +
    162  Assert::IsTrue(nupp["--my_num_list"].GetDataType() == DATA_TYPE::LIST);
    +
    163  Assert::IsTrue(nupp["--my_str_list"].GetDataType() == DATA_TYPE::LIST);
    +
    164 
    +
    165  return;
    +
    166  }
    +
    167 
    +
    168  // Tests keys have the correct value after parsing
    +
    169  TEST_METHOD(CorrectValues)
    +
    170  {
    +
    171  // Setup
    +
    172  ArgList args({
    +
    173  "/my/fake/path/wahoo.out",
    +
    174  "--my_string",
    +
    175  "billybob",
    +
    176  "--my_void",
    +
    177  "--my_float",
    +
    178  "-23.199",
    +
    179  "--my_int",
    +
    180  "199",
    +
    181  "--my_num_list",
    +
    182  "1",
    +
    183  "2",
    +
    184  "3",
    +
    185  "4",
    +
    186  "--my_str_list",
    +
    187  "apple",
    +
    188  "banana",
    +
    189  "pumpkin",
    +
    190  });
    +
    191 
    +
    192  // Exercise
    +
    193  Hazelnupp nupp(C_Ify(args));
    +
    194  nupp.SetCrashOnFail(false);
    +
    195 
    +
    196  // Verify
    +
    197  Assert::AreEqual(nupp["--my_string"].GetString(), std::string("billybob"));
    +
    198  Assert::AreEqual(nupp["--my_float"].GetFloat32(), -23.199);
    +
    199  Assert::AreEqual(nupp["--my_int"].GetInt32(), 199);
    +
    200  Assert::AreEqual(nupp["--my_num_list"].GetList()[0]->GetInt32(), 1);
    +
    201  Assert::AreEqual(nupp["--my_num_list"].GetList()[1]->GetInt32(), 2);
    +
    202  Assert::AreEqual(nupp["--my_num_list"].GetList()[2]->GetInt32(), 3);
    +
    203  Assert::AreEqual(nupp["--my_num_list"].GetList()[3]->GetInt32(), 4);
    +
    204  Assert::AreEqual(nupp["--my_str_list"].GetList()[0]->GetString(), std::string("apple"));
    +
    205  Assert::AreEqual(nupp["--my_str_list"].GetList()[1]->GetString(), std::string("banana"));
    +
    206  Assert::AreEqual(nupp["--my_str_list"].GetList()[2]->GetString(), std::string("pumpkin"));
    +
    207 
    +
    208  return;
    +
    209  }
    +
    210 
    +
    211  // Tests that an HazelnuppInvalidKeyException gets raised, if an invalid gey is tried to access
    +
    212  TEST_METHOD(Exception_On_Invalid_Key)
    +
    213  {
    +
    214  // Setup
    +
    215  ArgList args({
    +
    216  "/my/fake/path/wahoo.out",
    +
    217  "--my_string",
    +
    218  "billybob",
    +
    219  "--my_void",
    +
    220  "--my_float",
    +
    221  "-23.199",
    +
    222  "--my_int",
    +
    223  "199",
    +
    224  "--my_num_list",
    +
    225  "1",
    +
    226  "2",
    +
    227  "3",
    +
    228  "4",
    +
    229  "--my_str_list",
    +
    230  "apple",
    +
    231  "banana",
    +
    232  "pumpkin",
    +
    233  });
    +
    234 
    +
    235  Hazelnupp nupp(C_Ify(args));
    +
    236  nupp.SetCrashOnFail(false);
    +
    237 
    +
    238  // Exercise, Verify
    +
    239  Assert::ExpectException<HazelnuppInvalidKeyException>(
    +
    240  [args]
    +
    241  {
    +
    242  Hazelnupp nupp(C_Ify(args));
    +
    243  nupp["--borrnana"];
    +
    244  }
    +
    245  );
    +
    246 
    +
    247  return;
    +
    248  }
    +
    249  };
    +
    +
    +
    + +

    ◆ TEST_CLASS() [3/4]

    + +
    +
    + + + + + + + + +
    TestHazelnupp::TEST_CLASS (_Constraints )
    +
    + +

    Definition at line 10 of file Constraints.cpp.

    +
    11  {
    +
    12  public:
    +
    13 
    +
    14  // Tests that default values get added
    +
    15  TEST_METHOD(DefaultValues_GetAdded)
    +
    16  {
    +
    17  // Setup
    +
    18  ArgList args({
    +
    19  "/my/fake/path/wahoo.out",
    +
    20  "--dummy",
    +
    21  "123"
    +
    22  });
    +
    23 
    +
    24  // Exercise
    +
    25  Hazelnupp nupp;
    +
    26  nupp.SetCrashOnFail(false);
    +
    27 
    +
    28  nupp.RegisterConstraints({
    +
    29  ParamConstraint::Require("--elenor-int", {"5994"}),
    +
    30  ParamConstraint::Require("--federich-float", {"420.69"}),
    +
    31  ParamConstraint::Require("--siegbert-string", {"banana"}),
    +
    32  ParamConstraint::Require("--lieber-liste", {"banana", "apple", "59"})
    +
    33  });
    +
    34 
    +
    35  nupp.Parse(C_Ify(args));
    +
    36 
    +
    37  // Verify
    +
    38  Assert::IsTrue(nupp.HasParam("--elenor-int"));
    +
    39  Assert::IsTrue(nupp["--elenor-int"].GetDataType() == DATA_TYPE::INT);
    +
    40  Assert::AreEqual(nupp["--elenor-int"].GetInt32(), 5994);
    +
    41 
    +
    42  Assert::IsTrue(nupp.HasParam("--federich-float"));
    +
    43  Assert::IsTrue(nupp["--federich-float"].GetDataType() == DATA_TYPE::FLOAT);
    +
    44  Assert::AreEqual(nupp["--federich-float"].GetFloat32(), 420.69);
    +
    45 
    +
    46  Assert::IsTrue(nupp.HasParam("--siegbert-string"));
    +
    47  Assert::IsTrue(nupp["--siegbert-string"].GetDataType() == DATA_TYPE::STRING);
    +
    48  Assert::AreEqual(nupp["--siegbert-string"].GetString(), std::string("banana"));
    +
    49 
    +
    50  Assert::IsTrue(nupp.HasParam("--lieber-liste"));
    +
    51  Assert::IsTrue(nupp["--lieber-liste"].GetDataType() == DATA_TYPE::LIST);
    +
    52  Assert::AreEqual(nupp["--lieber-liste"].GetList()[0]->GetString(), std::string("banana"));
    +
    53  Assert::AreEqual(nupp["--lieber-liste"].GetList()[1]->GetString(), std::string("apple"));
    +
    54  Assert::AreEqual(nupp["--lieber-liste"].GetList()[2]->GetInt32(), 59);
    +
    55 
    +
    56  return;
    +
    57  }
    +
    58 
    +
    59  // Tests that the default values do not override actually set values
    +
    60  TEST_METHOD(DefaultValues_DefaultDoesntOverride)
    +
    61  {
    +
    62  // Setup
    +
    63  ArgList args({
    +
    64  "/my/fake/path/wahoo.out",
    +
    65  "--dummy",
    +
    66  "--elenor-int",
    +
    67  "5994",
    +
    68  "--federich-float",
    +
    69  "420.69",
    +
    70  "--siegbert-string",
    +
    71  "banana",
    +
    72  "--lieber-liste",
    +
    73  "banana",
    +
    74  "apple",
    +
    75  "59"
    +
    76  });
    +
    77 
    +
    78  // Exercise
    +
    79  Hazelnupp nupp;
    +
    80  nupp.SetCrashOnFail(false);
    +
    81 
    +
    82  nupp.RegisterConstraints({
    +
    83  ParamConstraint::Require("--elenor-int", {"6871"}),
    +
    84  ParamConstraint::Require("--federich-float", {"-199.44"}),
    +
    85  ParamConstraint::Require("--siegbert-string", {"bornana"}),
    +
    86  ParamConstraint::Require("--lieber-liste", {"bornana", "ollpe", "5"})
    +
    87  });
    +
    88 
    +
    89  nupp.Parse(C_Ify(args));
    +
    90 
    +
    91  // Verify
    +
    92  Assert::IsTrue(nupp.HasParam("--elenor-int"));
    +
    93  Assert::IsTrue(nupp["--elenor-int"].GetDataType() == DATA_TYPE::INT);
    +
    94  Assert::AreEqual(nupp["--elenor-int"].GetInt32(), 5994);
    +
    95 
    +
    96  Assert::IsTrue(nupp.HasParam("--federich-float"));
    +
    97  Assert::IsTrue(nupp["--federich-float"].GetDataType() == DATA_TYPE::FLOAT);
    +
    98  Assert::AreEqual(nupp["--federich-float"].GetFloat32(), 420.69);
    +
    99 
    +
    100  Assert::IsTrue(nupp.HasParam("--siegbert-string"));
    +
    101  Assert::IsTrue(nupp["--siegbert-string"].GetDataType() == DATA_TYPE::STRING);
    +
    102  Assert::AreEqual(nupp["--siegbert-string"].GetString(), std::string("banana"));
    +
    103 
    +
    104  Assert::IsTrue(nupp.HasParam("--lieber-liste"));
    +
    105  Assert::IsTrue(nupp["--lieber-liste"].GetDataType() == DATA_TYPE::LIST);
    +
    106  Assert::AreEqual(nupp["--lieber-liste"].GetList()[0]->GetString(), std::string("banana"));
    +
    107  Assert::AreEqual(nupp["--lieber-liste"].GetList()[1]->GetString(), std::string("apple"));
    +
    108  Assert::AreEqual(nupp["--lieber-liste"].GetList()[2]->GetInt32(), 59);
    +
    109 
    +
    110  return;
    +
    111  }
    +
    112 
    +
    113  // Tests that data types get forced according to the constraints
    +
    114  TEST_METHOD(ForceTypes)
    +
    115  {
    +
    116  // Setup
    +
    117  ArgList args({
    +
    118  "/my/fake/path/wahoo.out",
    +
    119  "--dummy",
    +
    120  "--num-apples",
    +
    121  "39.75",
    +
    122  "--table-height",
    +
    123  "400",
    +
    124  "--license-plate",
    +
    125  "193273",
    +
    126  "--fav-fruits",
    +
    127  "apple",
    +
    128  "--indices",
    +
    129  "9",
    +
    130  "--force",
    +
    131  "plsdontuseme"
    +
    132  });
    +
    133 
    +
    134  // Exercise
    +
    135  Hazelnupp nupp;
    +
    136  nupp.SetCrashOnFail(false);
    +
    137 
    +
    138  nupp.RegisterConstraints({
    + + + + + + +
    145  });
    +
    146 
    +
    147  nupp.Parse(C_Ify(args));
    +
    148 
    +
    149  // Verify
    +
    150  Assert::IsTrue(nupp.HasParam("--num-apples"));
    +
    151  Assert::IsTrue(nupp["--num-apples"].GetDataType() == DATA_TYPE::INT);
    +
    152  Assert::AreEqual(nupp["--num-apples"].GetInt32(), 39);
    +
    153 
    +
    154  Assert::IsTrue(nupp.HasParam("--table-height"));
    +
    155  Assert::IsTrue(nupp["--table-height"].GetDataType() == DATA_TYPE::FLOAT);
    +
    156  Assert::AreEqual(nupp["--table-height"].GetFloat32(), 400.0);
    +
    157 
    +
    158  Assert::IsTrue(nupp.HasParam("--license-plate"));
    +
    159  Assert::IsTrue(nupp["--license-plate"].GetDataType() == DATA_TYPE::STRING);
    +
    160  Assert::AreEqual(nupp["--license-plate"].GetString(), std::string("193273"));
    +
    161 
    +
    162  Assert::IsTrue(nupp.HasParam("--fav-fruits"));
    +
    163  Assert::IsTrue(nupp["--fav-fruits"].GetDataType() == DATA_TYPE::LIST);
    +
    164  Assert::AreEqual(nupp["--fav-fruits"].GetList()[0]->GetString(), std::string("apple"));
    +
    165 
    +
    166  Assert::IsTrue(nupp.HasParam("--indices"));
    +
    167  Assert::IsTrue(nupp["--indices"].GetDataType() == DATA_TYPE::LIST);
    +
    168  Assert::AreEqual(nupp["--indices"].GetList()[0]->GetInt32(), 9);
    +
    169 
    +
    170  Assert::IsTrue(nupp.HasParam("--force"));
    +
    171  Assert::IsTrue(nupp["--force"].GetDataType() == DATA_TYPE::VOID);
    +
    172 
    +
    173  return;
    +
    174  }
    +
    175 
    +
    176  // Tests that an HazelnuppConstraintMissingValue gets raised if a required parameter
    +
    177  // is missing and does not have a default parameter
    +
    178  TEST_METHOD(Exception_MissingImportant_Parameter_WithoutDefault)
    +
    179  {
    +
    180  // Setup
    +
    181  ArgList args({
    +
    182  "/my/fake/path/wahoo.out",
    +
    183  "--dummy",
    +
    184  "--federich-float",
    +
    185  "420.69",
    +
    186  "--siegbert-string",
    +
    187  "banana",
    +
    188  "--lieber-liste",
    +
    189  "banana",
    +
    190  "apple",
    +
    191  "59"
    +
    192  });
    +
    193 
    +
    194  Assert::ExpectException<HazelnuppConstraintMissingValue>(
    +
    195  [args]
    +
    196  {
    +
    197  Hazelnupp nupp;
    +
    198  nupp.SetCrashOnFail(false);
    +
    199 
    +
    200  nupp.RegisterConstraints({
    +
    201  ParamConstraint::Require("--elenor-int"),
    +
    202  });
    +
    203 
    +
    204  nupp.Parse(C_Ify(args));
    +
    205  }
    +
    206  );
    +
    207 
    +
    208  return;
    +
    209  }
    +
    210 
    +
    211  // Tests that an HazelnuppConstraintTypeMissmatch gets raised if a required parameter
    +
    212  // is missing of the wrong type and cannot be converted
    +
    213  TEST_METHOD(Exception_TypeMismatch_Parameter_NotConvertable)
    +
    214  {
    +
    215  // Setup
    +
    216  ArgList args({
    +
    217  "/my/fake/path/wahoo.out",
    +
    218  "--dummy",
    +
    219  "--elenor-int",
    +
    220  "hello"
    +
    221  "--federich-float",
    +
    222  "420.69",
    +
    223  "--siegbert-string",
    +
    224  "banana",
    +
    225  "--lieber-liste",
    +
    226  "banana",
    +
    227  "apple",
    +
    228  "59"
    +
    229  });
    +
    230 
    +
    231  Assert::ExpectException<HazelnuppConstraintTypeMissmatch>(
    +
    232  [args]
    +
    233  {
    +
    234  Hazelnupp nupp;
    +
    235  nupp.SetCrashOnFail(false);
    +
    236 
    +
    237  nupp.RegisterConstraints({
    + +
    239  });
    +
    240 
    +
    241  nupp.Parse(C_Ify(args));
    +
    242  }
    +
    243  );
    +
    244 
    +
    245  return;
    +
    246  }
    +
    247 
    +
    248  // Tests that everything can be converted to void
    +
    249  TEST_METHOD(Weird_Load_Conversions_ToVoid)
    +
    250  {
    +
    251  // Setup
    +
    252  ArgList args({
    +
    253  "/my/fake/path/wahoo.out",
    +
    254  "--dummy",
    +
    255  "--void1",
    +
    256  "--void2",
    +
    257  "12",
    +
    258  "--void3",
    +
    259  "9.5",
    +
    260  "--void4",
    +
    261  "hello",
    +
    262  "--void5",
    +
    263  "foo",
    +
    264  "baz"
    +
    265  });
    +
    266 
    +
    267  Hazelnupp nupp;
    +
    268  nupp.SetCrashOnFail(false);
    +
    269 
    +
    270  nupp.RegisterConstraints({
    + + + + + +
    276  });
    +
    277 
    +
    278 
    +
    279  // Exercise
    +
    280  nupp.Parse(C_Ify(args));
    +
    281 
    +
    282  // Verify
    +
    283  Assert::IsTrue(nupp["--void1"].GetDataType() == DATA_TYPE::VOID);
    +
    284  Assert::IsTrue(nupp["--void2"].GetDataType() == DATA_TYPE::VOID);
    +
    285  Assert::IsTrue(nupp["--void3"].GetDataType() == DATA_TYPE::VOID);
    +
    286  Assert::IsTrue(nupp["--void4"].GetDataType() == DATA_TYPE::VOID);
    +
    287  Assert::IsTrue(nupp["--void5"].GetDataType() == DATA_TYPE::VOID);
    +
    288 
    +
    289  return;
    +
    290  }
    +
    291 
    +
    292  // Tests that everything a void can be converted to an empty list
    +
    293  TEST_METHOD(Weird_Load_Conversions_VoidToEmptyList)
    +
    294  {
    +
    295  // Setup
    +
    296  ArgList args({
    +
    297  "/my/fake/path/wahoo.out",
    +
    298  "--dummy",
    +
    299  "--empty-list",
    +
    300  });
    +
    301 
    +
    302  Hazelnupp nupp;
    +
    303  nupp.SetCrashOnFail(false);
    +
    304 
    +
    305  nupp.RegisterConstraints({
    + +
    307  });
    +
    308 
    +
    309 
    +
    310  // Exercise
    +
    311  nupp.Parse(C_Ify(args));
    +
    312 
    +
    313  // Verify
    +
    314  Assert::IsTrue(nupp["--empty-list"].GetDataType() == DATA_TYPE::LIST);
    +
    315  Assert::AreEqual(std::size_t(0), nupp["--empty-list"].GetList().size());
    +
    316 
    +
    317  return;
    +
    318  }
    +
    319  };
    +
    +
    +
    + +

    ◆ TEST_CLASS() [4/4]

    + +
    +
    + + + + + + + + +
    TestHazelnupp::TEST_CLASS (_Conversion )
    +
    + +

    Definition at line 10 of file Conversion.cpp.

    +
    11  {
    +
    12  public:
    +
    13 
    +
    14  // Tests that string conversion methods work
    +
    15  TEST_METHOD(Convert_String)
    +
    16  {
    +
    17  // Setup
    +
    18  ArgList args({
    +
    19  "/my/fake/path/wahoo.out",
    +
    20  "--pud",
    +
    21  "hello"
    +
    22  });
    +
    23 
    +
    24  // Exercise
    +
    25  Hazelnupp nupp(C_Ify(args));
    +
    26  nupp.SetCrashOnFail(false);
    +
    27 
    +
    28  // Verify
    +
    29  const Hazelnupp* ptnupp = &nupp;
    +
    30 
    +
    31  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    32  [ptnupp]
    +
    33  {
    +
    34  (*ptnupp)["--pud"].GetInt64();
    +
    35  }
    +
    36  , L"Int64");
    +
    37 
    +
    38  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    39  [ptnupp]
    +
    40  {
    +
    41  (*ptnupp)["--pud"].GetInt32();
    +
    42  }
    +
    43  , L"Int32");
    +
    44 
    +
    45  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    46  [ptnupp]
    +
    47  {
    +
    48  (*ptnupp)["--pud"].GetFloat64();
    +
    49  }
    +
    50  , L"Float64");
    +
    51 
    +
    52  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    53  [ptnupp]
    +
    54  {
    +
    55  (*ptnupp)["--pud"].GetFloat32();
    +
    56  }
    +
    57  , L"Float32");
    +
    58 
    +
    59  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    60  [ptnupp]
    +
    61  {
    +
    62  (*ptnupp)["--pud"].GetList();
    +
    63  }
    +
    64  , L"List");
    +
    65 
    +
    66 
    +
    67  return;
    +
    68  }
    +
    69 
    +
    70  // Tests that void conversion methods work
    +
    71  TEST_METHOD(Convert_Void)
    +
    72  {
    +
    73  // Setup
    +
    74  ArgList args({
    +
    75  "/my/fake/path/wahoo.out",
    +
    76  "--pud"
    +
    77  });
    +
    78 
    +
    79  // Exercise
    +
    80  Hazelnupp nupp(C_Ify(args));
    +
    81  nupp.SetCrashOnFail(false);
    +
    82 
    +
    83  // Verify
    +
    84  const Hazelnupp* ptnupp = &nupp;
    +
    85 
    +
    86  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    87  [ptnupp]
    +
    88  {
    +
    89  (*ptnupp)["--pud"].GetInt64();
    +
    90  }
    +
    91  , L"Int64");
    +
    92 
    +
    93  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    94  [ptnupp]
    +
    95  {
    +
    96  (*ptnupp)["--pud"].GetInt32();
    +
    97  }
    +
    98  , L"Int32");
    +
    99 
    +
    100  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    101  [ptnupp]
    +
    102  {
    +
    103  (*ptnupp)["--pud"].GetFloat64();
    +
    104  }
    +
    105  , L"Float64");
    +
    106 
    +
    107  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    108  [ptnupp]
    +
    109  {
    +
    110  (*ptnupp)["--pud"].GetFloat32();
    +
    111  }
    +
    112  , L"Float32");
    +
    113 
    +
    114  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    115  [ptnupp]
    +
    116  {
    +
    117  (*ptnupp)["--pud"].GetString();
    +
    118  }
    +
    119  , L"String");
    +
    120 
    +
    121  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    122  [ptnupp]
    +
    123  {
    +
    124  (*ptnupp)["--pud"].GetList();
    +
    125  }
    +
    126  , L"List");
    +
    127 
    +
    128 
    +
    129  return;
    +
    130  }
    +
    131 
    +
    132  // Tests that int conversion methods work
    +
    133  TEST_METHOD(Convert_Int)
    +
    134  {
    +
    135  // Setup
    +
    136  ArgList args({
    +
    137  "/my/fake/path/wahoo.out",
    +
    138  "--pud",
    +
    139  "39"
    +
    140  });
    +
    141 
    +
    142  // Exercise
    +
    143  Hazelnupp nupp(C_Ify(args));
    +
    144  nupp.SetCrashOnFail(false);
    +
    145 
    +
    146  // Verify
    +
    147  const Hazelnupp* ptnupp = &nupp;
    +
    148 
    +
    149  Assert::AreEqual(39ll, nupp["--pud"].GetInt64(), L"Int64");
    +
    150  Assert::AreEqual(39, nupp["--pud"].GetInt32(), L"Int32");
    +
    151  Assert::IsTrue(39.0l == nupp["--pud"].GetFloat64(), L"Float64");
    +
    152  Assert::AreEqual(39.0, nupp["--pud"].GetFloat32(), L"Float32");
    +
    153  Assert::AreEqual(std::string("39"), nupp["--pud"].GetString(), L"String");
    +
    154 
    +
    155  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    156  [ptnupp]
    +
    157  {
    +
    158  (*ptnupp)["--pud"].GetList();
    +
    159  }
    +
    160  , L"List");
    +
    161 
    +
    162 
    +
    163  return;
    +
    164  }
    +
    165 
    +
    166  // Tests that float conversion methods work
    +
    167  TEST_METHOD(Convert_Float)
    +
    168  {
    +
    169  // Setup
    +
    170  ArgList args({
    +
    171  "/my/fake/path/wahoo.out",
    +
    172  "--pud",
    +
    173  "39.5"
    +
    174  });
    +
    175 
    +
    176  // Exercise
    +
    177  Hazelnupp nupp(C_Ify(args));
    +
    178  nupp.SetCrashOnFail(false);
    +
    179 
    +
    180  // Verify
    +
    181  const Hazelnupp* ptnupp = &nupp;
    +
    182 
    +
    183  Assert::AreEqual(39ll, nupp["--pud"].GetInt64(), L"Int64");
    +
    184  Assert::AreEqual(39, nupp["--pud"].GetInt32(), L"Int32");
    +
    185  Assert::IsTrue(39.5l == nupp["--pud"].GetFloat64(), L"Float64");
    +
    186  Assert::AreEqual(39.5, nupp["--pud"].GetFloat32(), L"Float32");
    +
    187  Assert::AreEqual(std::string("39.5"), nupp["--pud"].GetString(), L"String");
    +
    188 
    +
    189  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    190  [ptnupp]
    +
    191  {
    +
    192  (*ptnupp)["--pud"].GetList();
    +
    193  }
    +
    194  , L"List");
    +
    195 
    +
    196 
    +
    197  return;
    +
    198  }
    +
    199 
    +
    200  // Tests that list conversion methods work
    +
    201  TEST_METHOD(Convert_List)
    +
    202  {
    +
    203  // Setup
    +
    204  ArgList args({
    +
    205  "/my/fake/path/wahoo.out",
    +
    206  "--pud",
    +
    207  "apple",
    +
    208  "1",
    +
    209  "2",
    +
    210  "3"
    +
    211  });
    +
    212 
    +
    213  // Exercise
    +
    214  Hazelnupp nupp(C_Ify(args));
    +
    215  nupp.SetCrashOnFail(false);
    +
    216 
    +
    217  // Verify
    +
    218  const Hazelnupp* ptnupp = &nupp;
    +
    219 
    +
    220  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    221  [ptnupp]
    +
    222  {
    +
    223  (*ptnupp)["--pud"].GetInt64();
    +
    224  }
    +
    225  , L"Int64");
    +
    226 
    +
    227  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    228  [ptnupp]
    +
    229  {
    +
    230  (*ptnupp)["--pud"].GetInt32();
    +
    231  }
    +
    232  , L"Int32");
    +
    233 
    +
    234  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    235  [ptnupp]
    +
    236  {
    +
    237  (*ptnupp)["--pud"].GetFloat64();
    +
    238  }
    +
    239  , L"Float64");
    +
    240 
    +
    241  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    242  [ptnupp]
    +
    243  {
    +
    244  (*ptnupp)["--pud"].GetFloat32();
    +
    245  }
    +
    246  , L"Float32");
    +
    247 
    +
    248  Assert::ExpectException<HazelnuppValueNotConvertibleException>(
    +
    249  [ptnupp]
    +
    250  {
    +
    251  (*ptnupp)["--pud"].GetString();
    +
    252  }
    +
    253  , L"String");
    +
    254 
    +
    255  return;
    +
    256  }
    +
    257  };
    +
    +
    +
    +
    + +
    void RegisterConstraints(const std::vector< ParamConstraint > &constraints)
    Will register parameter constraints.
    Definition: Hazelnupp.cpp:352
    + + +
    static ParamConstraint TypeSafety(const std::string &key, DATA_TYPE wantedType, bool constrainType=true)
    Constructs a type-safety constraint.
    + +
    static ParamConstraint Require(const std::string &key, const std::vector< std::string > &defaultValue={}, bool required=true)
    Constructs a require constraint.
    +
    #define C_Ify(vector)
    Definition: helper.h:4
    +
    void SetCrashOnFail(bool crashOnFail)
    Sets whether to crash the application, and print to stderr, when an exception is raised whilst parsin...
    Definition: Hazelnupp.cpp:379
    +
    std::vector< const char * > ArgList
    Definition: helper.h:6
    + +
    The main class to interface with.
    Definition: Hazelnupp.h:9
    +
    void Parse(const int argc, const char *const *argv)
    Will parse command line arguments.
    Definition: Hazelnupp.cpp:33
    + + + + diff --git a/docs/namespacemembers.html b/docs/namespacemembers.html new file mode 100644 index 0000000..98ec2ca --- /dev/null +++ b/docs/namespacemembers.html @@ -0,0 +1,86 @@ + + + + + + + +Leonetienne/Hazelnupp: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Leonetienne/Hazelnupp +
    +
    Simple, easy to use, command line parameter interface
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    +
    + + + + diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html new file mode 100644 index 0000000..6245384 --- /dev/null +++ b/docs/namespacemembers_func.html @@ -0,0 +1,86 @@ + + + + + + + +Leonetienne/Hazelnupp: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Leonetienne/Hazelnupp +
    +
    Simple, easy to use, command line parameter interface
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/docs/namespaces.html b/docs/namespaces.html new file mode 100644 index 0000000..29bd5f7 --- /dev/null +++ b/docs/namespaces.html @@ -0,0 +1,90 @@ + + + + + + + +Leonetienne/Hazelnupp: Namespace List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Leonetienne/Hazelnupp +
    +
    Simple, easy to use, command line parameter interface
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Namespace List
    +
    +
    +
    Here is a list of all namespaces with brief descriptions:
    + + +
     NTestHazelnupp
    +
    +
    + + + + diff --git a/docs/nav_f.png b/docs/nav_f.png new file mode 100644 index 0000000..700ee6e Binary files /dev/null and b/docs/nav_f.png differ diff --git a/docs/nav_g.png b/docs/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/docs/nav_g.png differ diff --git a/docs/nav_h.png b/docs/nav_h.png new file mode 100644 index 0000000..565e61d Binary files /dev/null and b/docs/nav_h.png differ diff --git a/docs/nupp_small.png b/docs/nupp_small.png new file mode 100644 index 0000000..226148a Binary files /dev/null and b/docs/nupp_small.png differ diff --git a/docs/open.png b/docs/open.png new file mode 100644 index 0000000..2011ce1 Binary files /dev/null and b/docs/open.png differ diff --git a/docs/pages.html b/docs/pages.html new file mode 100644 index 0000000..ab71acb --- /dev/null +++ b/docs/pages.html @@ -0,0 +1,90 @@ + + + + + + + +Leonetienne/Hazelnupp: Related Pages + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Leonetienne/Hazelnupp +
    +
    Simple, easy to use, command line parameter interface
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     Hazelnupp
    +
    +
    + + + + diff --git a/docs/readme_8md.html b/docs/readme_8md.html new file mode 100644 index 0000000..79490f2 --- /dev/null +++ b/docs/readme_8md.html @@ -0,0 +1,85 @@ + + + + + + + +Leonetienne/Hazelnupp: readme.md File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Leonetienne/Hazelnupp +
    +
    Simple, easy to use, command line parameter interface
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    readme.md File Reference
    +
    +
    +
    + + + + diff --git a/docs/search/all_0.html b/docs/search/all_0.html new file mode 100644 index 0000000..26dd244 --- /dev/null +++ b/docs/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_0.js b/docs/search/all_0.js new file mode 100644 index 0000000..23c78f5 --- /dev/null +++ b/docs/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['addvalue_0',['AddValue',['../classListValue.html#af8787d266aa353d3f96e2c76cce76c41',1,'ListValue']]] +]; diff --git a/docs/search/all_1.html b/docs/search/all_1.html new file mode 100644 index 0000000..8eb215b --- /dev/null +++ b/docs/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_1.js b/docs/search/all_1.js new file mode 100644 index 0000000..e0aea9d --- /dev/null +++ b/docs/search/all_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['clearabbreviations_1',['ClearAbbreviations',['../classHazelnupp.html#a5175869b025468324cefad487081e91d',1,'Hazelnupp']]], + ['clearconstraints_2',['ClearConstraints',['../classHazelnupp.html#a3970b74583def49c6632fe08a4499809',1,'Hazelnupp']]], + ['constraintype_3',['constrainType',['../structParamConstraint.html#ab35444d2957439bc52c2056a829145a2',1,'ParamConstraint']]], + ['contains_4',['Contains',['../classStringTools.html#aec1abd8b22146c7a9ebeb6a94d6af5ee',1,'StringTools']]] +]; diff --git a/docs/search/all_10.html b/docs/search/all_10.html new file mode 100644 index 0000000..6fd3a4a --- /dev/null +++ b/docs/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_10.js b/docs/search/all_10.js new file mode 100644 index 0000000..9e0d0c0 --- /dev/null +++ b/docs/search/all_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['wantedtype_92',['wantedType',['../structParamConstraint.html#ae8875e054a074241f0c0bf3328a0915a',1,'ParamConstraint']]], + ['what_93',['What',['../classHazelnuppException.html#ac087d5190a9b3f6964120cc35321c3a6',1,'HazelnuppException']]] +]; diff --git a/docs/search/all_11.html b/docs/search/all_11.html new file mode 100644 index 0000000..f78343b --- /dev/null +++ b/docs/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_11.js b/docs/search/all_11.js new file mode 100644 index 0000000..b13fe20 --- /dev/null +++ b/docs/search/all_11.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['_7efloatvalue_94',['~FloatValue',['../classFloatValue.html#a5c6c7a2c805ac0207d325edd28a5db1c',1,'FloatValue']]], + ['_7ehazelnupp_95',['~Hazelnupp',['../classHazelnupp.html#a25f8810d24d647b6a57e2dd00ead42be',1,'Hazelnupp']]], + ['_7eintvalue_96',['~IntValue',['../classIntValue.html#a45514417be35da78376822a0dd50f488',1,'IntValue']]], + ['_7elistvalue_97',['~ListValue',['../classListValue.html#a91f1450f299d46b3301774a6b4eb6c18',1,'ListValue']]], + ['_7eparameter_98',['~Parameter',['../classParameter.html#a6e2ade42a712f1d3675653329266e42d',1,'Parameter']]], + ['_7estringvalue_99',['~StringValue',['../classStringValue.html#a829a8f064ec6b31b57d1dbebc8cd05d8',1,'StringValue']]], + ['_7evalue_100',['~Value',['../classValue.html#aceb26b90be781020c0c71ae5d16ca06f',1,'Value']]], + ['_7evoidvalue_101',['~VoidValue',['../classVoidValue.html#a8229e255a6fc31da4a4ec7aba97d4111',1,'VoidValue']]] +]; diff --git a/docs/search/all_12.html b/docs/search/all_12.html new file mode 100644 index 0000000..dd9ff1d --- /dev/null +++ b/docs/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_12.js b/docs/search/all_12.js new file mode 100644 index 0000000..a02268b --- /dev/null +++ b/docs/search/all_12.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['_7efloatvalue_103',['~FloatValue',['../classFloatValue.html#a5c6c7a2c805ac0207d325edd28a5db1c',1,'FloatValue']]], + ['_7ehazelnupp_104',['~Hazelnupp',['../classHazelnupp.html#a25f8810d24d647b6a57e2dd00ead42be',1,'Hazelnupp']]], + ['_7eintvalue_105',['~IntValue',['../classIntValue.html#a45514417be35da78376822a0dd50f488',1,'IntValue']]], + ['_7elistvalue_106',['~ListValue',['../classListValue.html#a91f1450f299d46b3301774a6b4eb6c18',1,'ListValue']]], + ['_7eparameter_107',['~Parameter',['../classParameter.html#a6e2ade42a712f1d3675653329266e42d',1,'Parameter']]], + ['_7estringvalue_108',['~StringValue',['../classStringValue.html#a829a8f064ec6b31b57d1dbebc8cd05d8',1,'StringValue']]], + ['_7evalue_109',['~Value',['../classValue.html#aceb26b90be781020c0c71ae5d16ca06f',1,'Value']]], + ['_7evoidvalue_110',['~VoidValue',['../classVoidValue.html#a8229e255a6fc31da4a4ec7aba97d4111',1,'VoidValue']]] +]; diff --git a/docs/search/all_2.html b/docs/search/all_2.html new file mode 100644 index 0000000..b26d916 --- /dev/null +++ b/docs/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_2.js b/docs/search/all_2.js new file mode 100644 index 0000000..f9650a7 --- /dev/null +++ b/docs/search/all_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['data_5ftype_5',['DATA_TYPE',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27b',1,'DataType.h']]], + ['datatype_2eh_6',['DataType.h',['../DataType_8h.html',1,'']]], + ['deepcopy_7',['Deepcopy',['../classFloatValue.html#ab071916339a0d5a266d821ebbc8f12b0',1,'FloatValue::Deepcopy()'],['../classIntValue.html#aa599004242b27f8f3e246b88742b034e',1,'IntValue::Deepcopy()'],['../classListValue.html#a51c89ff315026b03d908345c6f58169d',1,'ListValue::Deepcopy()'],['../classStringValue.html#a1952487a786fb53cb0b9aefdb3367268',1,'StringValue::Deepcopy()'],['../classValue.html#a54439631b2c5b933c03baf65836838fc',1,'Value::Deepcopy()'],['../classVoidValue.html#ac36e85add840057659ec24484548165f',1,'VoidValue::Deepcopy()']]], + ['defaultvalue_8',['defaultValue',['../structParamConstraint.html#af2832fa007abaabc05784d5f978aeeff',1,'ParamConstraint']]] +]; diff --git a/docs/search/all_3.html b/docs/search/all_3.html new file mode 100644 index 0000000..b61b96f --- /dev/null +++ b/docs/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_3.js b/docs/search/all_3.js new file mode 100644 index 0000000..0cd0514 --- /dev/null +++ b/docs/search/all_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['float_9',['FLOAT',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27bae738c26bf4ce1037fa81b039a915cbf6',1,'DataType.h']]], + ['floatvalue_10',['FloatValue',['../classFloatValue.html',1,'FloatValue'],['../classFloatValue.html#a6bb35564e3331a3feb57b08caad0df44',1,'FloatValue::FloatValue()']]], + ['floatvalue_2ecpp_11',['FloatValue.cpp',['../FloatValue_8cpp.html',1,'']]], + ['floatvalue_2eh_12',['FloatValue.h',['../FloatValue_8h.html',1,'']]] +]; diff --git a/docs/search/all_4.html b/docs/search/all_4.html new file mode 100644 index 0000000..06de155 --- /dev/null +++ b/docs/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_4.js b/docs/search/all_4.js new file mode 100644 index 0000000..0ef4092 --- /dev/null +++ b/docs/search/all_4.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['getabbreviation_13',['GetAbbreviation',['../classHazelnupp.html#a579e78129f19cb9f17a6075366ababe5',1,'Hazelnupp']]], + ['getasosstring_14',['GetAsOsString',['../classFloatValue.html#a6c9a4b70a7618252f56d9062c483531c',1,'FloatValue::GetAsOsString()'],['../classIntValue.html#a7d7dbda9a051084600d3eabdac96ee45',1,'IntValue::GetAsOsString()'],['../classListValue.html#a5b1f8af329e48c5469fee16634b7889c',1,'ListValue::GetAsOsString()'],['../classStringValue.html#a71869ee46b88a3cbb9571f481f0c216d',1,'StringValue::GetAsOsString()'],['../classValue.html#a37bf4df9917f2d60ebfd0cee0bde3497',1,'Value::GetAsOsString()'],['../classVoidValue.html#a44b1917d9ba41ee91e2131432e01ec90',1,'VoidValue::GetAsOsString()']]], + ['getcrashonfail_15',['GetCrashOnFail',['../classHazelnupp.html#a1b810cc7db2cf64aecaa70c686b14bb7',1,'Hazelnupp']]], + ['getdatatype_16',['GetDataType',['../classValue.html#adbb80bf6d455a316e6e5103353429993',1,'Value']]], + ['getexecutablename_17',['GetExecutableName',['../classHazelnupp.html#af6bb41fb079131f8b91fe981f63f7469',1,'Hazelnupp']]], + ['getfloat32_18',['GetFloat32',['../classFloatValue.html#a1653ab3f4fa1700cf1b618ac6552ea81',1,'FloatValue::GetFloat32()'],['../classIntValue.html#ad0734e4cf67bac0bcc58251a4b3e56c4',1,'IntValue::GetFloat32()'],['../classListValue.html#a637fec02ed7f7325554e494fc7cd4e86',1,'ListValue::GetFloat32()'],['../classStringValue.html#a31fc4d2517a7454c1e9f329df2f14be7',1,'StringValue::GetFloat32()'],['../classValue.html#ac936fa09ba401a748ef67292ad823004',1,'Value::GetFloat32()'],['../classVoidValue.html#a6d39d2983e54e1a407c66e303273aa48',1,'VoidValue::GetFloat32()']]], + ['getfloat64_19',['GetFloat64',['../classFloatValue.html#add33b370ef691ccb2f0957d0fe4ef6f9',1,'FloatValue::GetFloat64()'],['../classIntValue.html#a5ceb2030e8a2a665953fdd4f1715e6a5',1,'IntValue::GetFloat64()'],['../classListValue.html#a571178db1c9d23f6c685ea8898dbb60e',1,'ListValue::GetFloat64()'],['../classStringValue.html#a74bedb828c901a4895062f62303b9653',1,'StringValue::GetFloat64()'],['../classValue.html#ac3d3a5b3ba7bf5aee0f41d19b242b7e8',1,'Value::GetFloat64()'],['../classVoidValue.html#a18b6f0d697c5f9286372a05927e4759c',1,'VoidValue::GetFloat64()']]], + ['getint32_20',['GetInt32',['../classFloatValue.html#a565741e80cd99a4d2af861ddc3c2dc99',1,'FloatValue::GetInt32()'],['../classIntValue.html#a163f21536fa49491aa0ae03c8091344a',1,'IntValue::GetInt32()'],['../classListValue.html#a565c2b86fcfb3a13de29e59d95a358e7',1,'ListValue::GetInt32()'],['../classStringValue.html#ac8b53a7792ff1ed048722e2e404f3e6b',1,'StringValue::GetInt32()'],['../classValue.html#afcbcf8a064895b6b9d2964aecee01f22',1,'Value::GetInt32()'],['../classVoidValue.html#a5b7f50c390ef8f3636ba211a72a78065',1,'VoidValue::GetInt32()']]], + ['getint64_21',['GetInt64',['../classFloatValue.html#a762520d504d4564c48cf3bbefbb0f183',1,'FloatValue::GetInt64()'],['../classIntValue.html#ae0643023dfd56eafe2e3da5a4ba13080',1,'IntValue::GetInt64()'],['../classListValue.html#a9a7a1161ddeb3e56eaafee5f10f75995',1,'ListValue::GetInt64()'],['../classStringValue.html#aabdc7d681945403d24df6a8fe27948af',1,'StringValue::GetInt64()'],['../classValue.html#a77229fe49da12240fbfbc6657101cb27',1,'Value::GetInt64()'],['../classVoidValue.html#a3806945596866f3630dc5426a6b55e58',1,'VoidValue::GetInt64()']]], + ['getlist_22',['GetList',['../classFloatValue.html#a60b2698f28f1aacac0b67b6453c89fd1',1,'FloatValue::GetList()'],['../classIntValue.html#acc74ba6070a516a4bcad10bb113d6fa2',1,'IntValue::GetList()'],['../classListValue.html#ad578d9088c0375cd9b9c6658e5d9ba1f',1,'ListValue::GetList()'],['../classStringValue.html#a2b2810350b5eb7e58062ad095320aa69',1,'StringValue::GetList()'],['../classValue.html#a930ca504a3e52e73f736a7e72f44e5ce',1,'Value::GetList()'],['../classVoidValue.html#aba53ae37d415959b583f33f3e381be16',1,'VoidValue::GetList()']]], + ['getstring_23',['GetString',['../classFloatValue.html#afd5d078683f410cb9d450c61f12f250d',1,'FloatValue::GetString()'],['../classIntValue.html#a3631e3b16f010889e942c0c0f72d403c',1,'IntValue::GetString()'],['../classListValue.html#aeaf80c07236045a77d72349ebcfc3b89',1,'ListValue::GetString()'],['../classStringValue.html#a7ed55493cfd25274f8571c1ea45f93e5',1,'StringValue::GetString()'],['../classValue.html#a1dd7df6be1d7298e5098a48622d0b65f',1,'Value::GetString()'],['../classVoidValue.html#a5af0c47a873b84226df47a90e63b2acd',1,'VoidValue::GetString()']]], + ['getvalue_24',['GetValue',['../classFloatValue.html#a2ad79d8bfe75e45120d1fce132a89b8f',1,'FloatValue::GetValue()'],['../classIntValue.html#a89967cafbdeb21362336067b772808c7',1,'IntValue::GetValue()'],['../classListValue.html#a7907ae7433e4011157f1b31dd5339702',1,'ListValue::GetValue()'],['../classParameter.html#a4ab8ba022bde4a0175e5ceb8e3a598af',1,'Parameter::GetValue()'],['../classStringValue.html#a521a573887a3f31718f74e71ff01e86e',1,'StringValue::GetValue()']]] +]; diff --git a/docs/search/all_5.html b/docs/search/all_5.html new file mode 100644 index 0000000..2544c4e --- /dev/null +++ b/docs/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_5.js b/docs/search/all_5.js new file mode 100644 index 0000000..2c2a0d7 --- /dev/null +++ b/docs/search/all_5.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['hasabbreviation_25',['HasAbbreviation',['../classHazelnupp.html#a46df7d396fb56e30351c9a7308792200',1,'Hazelnupp']]], + ['hasparam_26',['HasParam',['../classHazelnupp.html#a8b79a79d40420ae748c108c691111040',1,'Hazelnupp']]], + ['hazelnupp_27',['Hazelnupp',['../classHazelnupp.html',1,'Hazelnupp'],['../classHazelnupp.html#a20ac0ebcfd4df7f320a7bbcaeed6e54d',1,'Hazelnupp::Hazelnupp()'],['../classHazelnupp.html#a6d14c60f03b571f5f794c3549e75e435',1,'Hazelnupp::Hazelnupp(const int argc, const char *const *argv)']]], + ['hazelnupp_2ecpp_28',['Hazelnupp.cpp',['../Hazelnupp_8cpp.html',1,'']]], + ['hazelnupp_2eh_29',['Hazelnupp.h',['../Hazelnupp_8h.html',1,'']]], + ['hazelnupp_2evcxproj_2efilelistabsolute_2etxt_30',['Hazelnupp.vcxproj.FileListAbsolute.txt',['../Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)'],['../Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)']]], + ['hazelnuppconstraintexception_31',['HazelnuppConstraintException',['../classHazelnuppConstraintException.html',1,'HazelnuppConstraintException'],['../classHazelnuppConstraintException.html#ad434d9b9d78d36cc4008bad70270f844',1,'HazelnuppConstraintException::HazelnuppConstraintException()'],['../classHazelnuppConstraintException.html#a1bf58e4aa510f3e5cdebdfcbff2a1e53',1,'HazelnuppConstraintException::HazelnuppConstraintException(const std::string &msg)']]], + ['hazelnuppconstraintmissingvalue_32',['HazelnuppConstraintMissingValue',['../classHazelnuppConstraintMissingValue.html',1,'HazelnuppConstraintMissingValue'],['../classHazelnuppConstraintMissingValue.html#a022da2aca494f6853a7c013e94f5796f',1,'HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue()'],['../classHazelnuppConstraintMissingValue.html#a8d3ea192a75f993abe2845444cdb1bca',1,'HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue(const std::string &msg)']]], + ['hazelnuppconstrainttypemissmatch_33',['HazelnuppConstraintTypeMissmatch',['../classHazelnuppConstraintTypeMissmatch.html',1,'HazelnuppConstraintTypeMissmatch'],['../classHazelnuppConstraintTypeMissmatch.html#aa81de4d809dd7b00516716574e959c09',1,'HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch()'],['../classHazelnuppConstraintTypeMissmatch.html#ab8d0f32a3423239e06d8c44631098306',1,'HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch(const std::string &msg)']]], + ['hazelnuppexception_34',['HazelnuppException',['../classHazelnuppException.html',1,'HazelnuppException'],['../classHazelnuppException.html#a90d10b00ec056b721c102a70b629a779',1,'HazelnuppException::HazelnuppException()'],['../classHazelnuppException.html#a864a84c0498870ae0a76fb8c3542fa74',1,'HazelnuppException::HazelnuppException(const std::string &msg)']]], + ['hazelnuppexception_2eh_35',['HazelnuppException.h',['../HazelnuppException_8h.html',1,'']]], + ['hazelnuppinvalidkeyexception_36',['HazelnuppInvalidKeyException',['../classHazelnuppInvalidKeyException.html',1,'HazelnuppInvalidKeyException'],['../classHazelnuppInvalidKeyException.html#ac0c3a84356647817b5076f92e55874e7',1,'HazelnuppInvalidKeyException::HazelnuppInvalidKeyException()'],['../classHazelnuppInvalidKeyException.html#a5be8550858e8ba5754958055803120bc',1,'HazelnuppInvalidKeyException::HazelnuppInvalidKeyException(const std::string &msg)']]], + ['hazelnuppvaluenotconvertibleexception_37',['HazelnuppValueNotConvertibleException',['../classHazelnuppValueNotConvertibleException.html',1,'HazelnuppValueNotConvertibleException'],['../classHazelnuppValueNotConvertibleException.html#a459233c9ed4ca577f596761abb2f46e7',1,'HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException()'],['../classHazelnuppValueNotConvertibleException.html#a77dfcc974a767b77aefdaef86e9ad60c',1,'HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException(const std::string &msg)']]], + ['hazelnupp_38',['Hazelnupp',['../index.html',1,'']]] +]; diff --git a/docs/search/all_6.html b/docs/search/all_6.html new file mode 100644 index 0000000..43f14ea --- /dev/null +++ b/docs/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_6.js b/docs/search/all_6.js new file mode 100644 index 0000000..708ddab --- /dev/null +++ b/docs/search/all_6.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['index_2emd_39',['index.md',['../index_8md.html',1,'']]], + ['int_40',['INT',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27ba53f93baa3057821107c750323892fa92',1,'DataType.h']]], + ['intvalue_41',['IntValue',['../classIntValue.html',1,'IntValue'],['../classIntValue.html#ac1174f807ce2c085f5a24baed4e3c1ba',1,'IntValue::IntValue()']]], + ['intvalue_2ecpp_42',['IntValue.cpp',['../IntValue_8cpp.html',1,'']]], + ['intvalue_2eh_43',['IntValue.h',['../IntValue_8h.html',1,'']]], + ['isnumeric_44',['IsNumeric',['../classStringTools.html#a6cd093feaca2d978c23774cf87d86e68',1,'StringTools']]] +]; diff --git a/docs/search/all_7.html b/docs/search/all_7.html new file mode 100644 index 0000000..af52f82 --- /dev/null +++ b/docs/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_7.js b/docs/search/all_7.js new file mode 100644 index 0000000..4a970ec --- /dev/null +++ b/docs/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['key_45',['Key',['../classParameter.html#a7acd68ce06eec06ab286b1a062f9c8d6',1,'Parameter::Key()'],['../structParamConstraint.html#aa3bd052bbaebdc795f0922731c666648',1,'ParamConstraint::key()']]] +]; diff --git a/docs/search/all_8.html b/docs/search/all_8.html new file mode 100644 index 0000000..cf2b5df --- /dev/null +++ b/docs/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_8.js b/docs/search/all_8.js new file mode 100644 index 0000000..50897a0 --- /dev/null +++ b/docs/search/all_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['list_46',['LIST',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27ba298cb25408234de02baf2085803a464a',1,'DataType.h']]], + ['listvalue_47',['ListValue',['../classListValue.html',1,'ListValue'],['../classListValue.html#a6082aaa506b31496720a168da8ab2708',1,'ListValue::ListValue()']]], + ['listvalue_2ecpp_48',['ListValue.cpp',['../ListValue_8cpp.html',1,'']]], + ['listvalue_2eh_49',['ListValue.h',['../ListValue_8h.html',1,'']]] +]; diff --git a/docs/search/all_9.html b/docs/search/all_9.html new file mode 100644 index 0000000..690785a --- /dev/null +++ b/docs/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_9.js b/docs/search/all_9.js new file mode 100644 index 0000000..0ba5903 --- /dev/null +++ b/docs/search/all_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['main_50',['main',['../main_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627',1,'main.cpp']]], + ['main_2ecpp_51',['main.cpp',['../main_8cpp.html',1,'']]], + ['message_52',['message',['../classHazelnuppException.html#a4d80f59d2732975461ee480642c4addf',1,'HazelnuppException']]] +]; diff --git a/docs/search/all_a.html b/docs/search/all_a.html new file mode 100644 index 0000000..f2f3d3a --- /dev/null +++ b/docs/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_a.js b/docs/search/all_a.js new file mode 100644 index 0000000..4592a83 --- /dev/null +++ b/docs/search/all_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['operator_20double_53',['operator double',['../classFloatValue.html#ae02de376bbb2b76e0f9d16b1fc4de06d',1,'FloatValue']]], + ['operator_20int_54',['operator int',['../classIntValue.html#ab30a38c8f58cefd7cbf365c4aeae79bd',1,'IntValue']]], + ['operator_20long_20double_55',['operator long double',['../classFloatValue.html#ad0d4c589190fbab7e6c4d8fcc130ac1b',1,'FloatValue']]], + ['operator_20long_20long_20int_56',['operator long long int',['../classIntValue.html#a45b283dae9904ad0643035d3ee5883eb',1,'IntValue']]], + ['operator_3c_3c_57',['operator<<',['../classParameter.html#a11b3529badcbf99b46262772472495c7',1,'Parameter::operator<<()'],['../classValue.html#ad29db86c4a2dec5bc8d0006031b07211',1,'Value::operator<<()']]], + ['operator_5b_5d_58',['operator[]',['../classHazelnupp.html#a419ccdc6bad00b0fc3e17ed9b41f5dc5',1,'Hazelnupp']]], + ['string_59',['string',['../classStringValue.html#a23449775f14f828d29b115de040a696b',1,'StringValue']]], + ['vector_3c_20value_20_2a_20_3e_60',['vector< Value * >',['../classListValue.html#a5d92ff2b9a1fa92fbc303ac4d07765d0',1,'ListValue']]] +]; diff --git a/docs/search/all_b.html b/docs/search/all_b.html new file mode 100644 index 0000000..14f3403 --- /dev/null +++ b/docs/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_b.js b/docs/search/all_b.js new file mode 100644 index 0000000..a7092fa --- /dev/null +++ b/docs/search/all_b.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['paramconstraint_61',['ParamConstraint',['../structParamConstraint.html',1,'ParamConstraint'],['../structParamConstraint.html#ae0ce64f2f0928d602b6f6117ff34d155',1,'ParamConstraint::ParamConstraint()=default'],['../structParamConstraint.html#a93783114c6f374b77479a283c4aadf05',1,'ParamConstraint::ParamConstraint(const std::string &key, bool constrainType, DATA_TYPE wantedType, const std::vector< std::string > &defaultValue, bool required)']]], + ['paramconstraint_2eh_62',['ParamConstraint.h',['../ParamConstraint_8h.html',1,'']]], + ['parameter_63',['Parameter',['../classParameter.html',1,'Parameter'],['../classParameter.html#a0c9faefc26cc9d8c886ef71e39e2f90c',1,'Parameter::Parameter()']]], + ['parameter_2ecpp_64',['Parameter.cpp',['../Parameter_8cpp.html',1,'']]], + ['parameter_2eh_65',['Parameter.h',['../Parameter_8h.html',1,'']]], + ['parse_66',['Parse',['../classHazelnupp.html#a1ccb88faca1a8deb77161888479c300b',1,'Hazelnupp']]], + ['parsenumber_67',['ParseNumber',['../classStringTools.html#ab661223da5bbbb75039e168409466c82',1,'StringTools']]] +]; diff --git a/docs/search/all_c.html b/docs/search/all_c.html new file mode 100644 index 0000000..da60ab8 --- /dev/null +++ b/docs/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_c.js b/docs/search/all_c.js new file mode 100644 index 0000000..f950545 --- /dev/null +++ b/docs/search/all_c.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['registerabbreviation_68',['RegisterAbbreviation',['../classHazelnupp.html#abf1e0ebf0207ca2327fcde81f7372124',1,'Hazelnupp']]], + ['registerconstraints_69',['RegisterConstraints',['../classHazelnupp.html#a8a3331836b9ea1f920e77f6d332019d5',1,'Hazelnupp']]], + ['replace_70',['Replace',['../classStringTools.html#a0ca14c1d67833a61955a693f3e40d8b5',1,'StringTools::Replace(const std::string &str, const char find, const std::string &subst)'],['../classStringTools.html#a1658832ddf1611f83c5848e391d32806',1,'StringTools::Replace(const std::string &str, const std::string &find, const std::string &subst)']]], + ['require_71',['Require',['../structParamConstraint.html#a40e47d3ad68cadbe785551c4aaad828c',1,'ParamConstraint']]], + ['required_72',['required',['../structParamConstraint.html#a5c451d5ade6c548af7de0a978964a09d',1,'ParamConstraint']]] +]; diff --git a/docs/search/all_d.html b/docs/search/all_d.html new file mode 100644 index 0000000..bc376fe --- /dev/null +++ b/docs/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_d.js b/docs/search/all_d.js new file mode 100644 index 0000000..c234d22 --- /dev/null +++ b/docs/search/all_d.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['setcrashonfail_73',['SetCrashOnFail',['../classHazelnupp.html#a17845623ca686caa51f3c8254e85551e',1,'Hazelnupp']]], + ['splitstring_74',['SplitString',['../classStringTools.html#a7cd6606ef06170fab363024e457f1f16',1,'StringTools::SplitString(const std::string &str, const char delimiter)'],['../classStringTools.html#afe626a56fa486afcb0e4c01d3c1ccb35',1,'StringTools::SplitString(const std::string &str, const std::string &delimiter)']]], + ['string_75',['STRING',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27ba63b588d5559f64f89a416e656880b949',1,'DataType.h']]], + ['stringtools_76',['StringTools',['../classStringTools.html',1,'']]], + ['stringtools_2ecpp_77',['StringTools.cpp',['../StringTools_8cpp.html',1,'']]], + ['stringtools_2eh_78',['StringTools.h',['../StringTools_8h.html',1,'']]], + ['stringvalue_79',['StringValue',['../classStringValue.html',1,'StringValue'],['../classStringValue.html#a24dad2deec92b51bf60a11400cc8c204',1,'StringValue::StringValue()']]], + ['stringvalue_2ecpp_80',['StringValue.cpp',['../StringValue_8cpp.html',1,'']]], + ['stringvalue_2eh_81',['StringValue.h',['../StringValue_8h.html',1,'']]] +]; diff --git a/docs/search/all_e.html b/docs/search/all_e.html new file mode 100644 index 0000000..2e3c74d --- /dev/null +++ b/docs/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_e.js b/docs/search/all_e.js new file mode 100644 index 0000000..d2538b5 --- /dev/null +++ b/docs/search/all_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['tolower_82',['ToLower',['../classStringTools.html#a67edf755685f59b51f7416d9e4f6e2bd',1,'StringTools']]], + ['type_83',['type',['../classValue.html#a1d097dc84691b48d12435c6bf97c85b4',1,'Value']]], + ['typesafety_84',['TypeSafety',['../structParamConstraint.html#a3ecbccdce5be2529712e0866725c7cd5',1,'ParamConstraint']]] +]; diff --git a/docs/search/all_f.html b/docs/search/all_f.html new file mode 100644 index 0000000..246f8ab --- /dev/null +++ b/docs/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/all_f.js b/docs/search/all_f.js new file mode 100644 index 0000000..e8b4af3 --- /dev/null +++ b/docs/search/all_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['value_85',['Value',['../classValue.html',1,'Value'],['../classValue.html#a8455d65bb2d939e850d6772dfbf8bfec',1,'Value::Value()']]], + ['value_2ecpp_86',['Value.cpp',['../Value_8cpp.html',1,'']]], + ['value_2eh_87',['Value.h',['../Value_8h.html',1,'']]], + ['void_88',['VOID',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27ba6d0c9fc747131795e6e5d0c5119f12cb',1,'DataType.h']]], + ['voidvalue_89',['VoidValue',['../classVoidValue.html',1,'VoidValue'],['../classVoidValue.html#a75abf334b7f55cd149d2bb1962f2d8f1',1,'VoidValue::VoidValue()']]], + ['voidvalue_2ecpp_90',['VoidValue.cpp',['../VoidValue_8cpp.html',1,'']]], + ['voidvalue_2eh_91',['VoidValue.h',['../VoidValue_8h.html',1,'']]] +]; diff --git a/docs/search/classes_0.html b/docs/search/classes_0.html new file mode 100644 index 0000000..f7e4c14 --- /dev/null +++ b/docs/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/classes_0.js b/docs/search/classes_0.js new file mode 100644 index 0000000..73763c0 --- /dev/null +++ b/docs/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['floatvalue_102',['FloatValue',['../classFloatValue.html',1,'']]] +]; diff --git a/docs/search/classes_1.html b/docs/search/classes_1.html new file mode 100644 index 0000000..c7ff4b3 --- /dev/null +++ b/docs/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/classes_1.js b/docs/search/classes_1.js new file mode 100644 index 0000000..cae065c --- /dev/null +++ b/docs/search/classes_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['hazelnupp_103',['Hazelnupp',['../classHazelnupp.html',1,'']]], + ['hazelnuppconstraintexception_104',['HazelnuppConstraintException',['../classHazelnuppConstraintException.html',1,'']]], + ['hazelnuppconstraintmissingvalue_105',['HazelnuppConstraintMissingValue',['../classHazelnuppConstraintMissingValue.html',1,'']]], + ['hazelnuppconstrainttypemissmatch_106',['HazelnuppConstraintTypeMissmatch',['../classHazelnuppConstraintTypeMissmatch.html',1,'']]], + ['hazelnuppexception_107',['HazelnuppException',['../classHazelnuppException.html',1,'']]], + ['hazelnuppinvalidkeyexception_108',['HazelnuppInvalidKeyException',['../classHazelnuppInvalidKeyException.html',1,'']]], + ['hazelnuppvaluenotconvertibleexception_109',['HazelnuppValueNotConvertibleException',['../classHazelnuppValueNotConvertibleException.html',1,'']]] +]; diff --git a/docs/search/classes_2.html b/docs/search/classes_2.html new file mode 100644 index 0000000..0d1e8a0 --- /dev/null +++ b/docs/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/classes_2.js b/docs/search/classes_2.js new file mode 100644 index 0000000..d732bd0 --- /dev/null +++ b/docs/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['intvalue_110',['IntValue',['../classIntValue.html',1,'']]] +]; diff --git a/docs/search/classes_3.html b/docs/search/classes_3.html new file mode 100644 index 0000000..2102545 --- /dev/null +++ b/docs/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/classes_3.js b/docs/search/classes_3.js new file mode 100644 index 0000000..e53abdf --- /dev/null +++ b/docs/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['listvalue_111',['ListValue',['../classListValue.html',1,'']]] +]; diff --git a/docs/search/classes_4.html b/docs/search/classes_4.html new file mode 100644 index 0000000..095ab59 --- /dev/null +++ b/docs/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/classes_4.js b/docs/search/classes_4.js new file mode 100644 index 0000000..b10e19a --- /dev/null +++ b/docs/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['paramconstraint_112',['ParamConstraint',['../structParamConstraint.html',1,'']]], + ['parameter_113',['Parameter',['../classParameter.html',1,'']]] +]; diff --git a/docs/search/classes_5.html b/docs/search/classes_5.html new file mode 100644 index 0000000..fc9cdc9 --- /dev/null +++ b/docs/search/classes_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/classes_5.js b/docs/search/classes_5.js new file mode 100644 index 0000000..46b60a1 --- /dev/null +++ b/docs/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['stringtools_114',['StringTools',['../classStringTools.html',1,'']]], + ['stringvalue_115',['StringValue',['../classStringValue.html',1,'']]] +]; diff --git a/docs/search/classes_6.html b/docs/search/classes_6.html new file mode 100644 index 0000000..1ecfddd --- /dev/null +++ b/docs/search/classes_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/classes_6.js b/docs/search/classes_6.js new file mode 100644 index 0000000..870571d --- /dev/null +++ b/docs/search/classes_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['value_116',['Value',['../classValue.html',1,'']]], + ['voidvalue_117',['VoidValue',['../classVoidValue.html',1,'']]] +]; diff --git a/docs/search/close.png b/docs/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/docs/search/close.png differ diff --git a/docs/search/defines_0.html b/docs/search/defines_0.html new file mode 100644 index 0000000..2deb369 --- /dev/null +++ b/docs/search/defines_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/defines_0.js b/docs/search/defines_0.js new file mode 100644 index 0000000..6041d19 --- /dev/null +++ b/docs/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['c_5fify_237',['C_Ify',['../helper_8h.html#afb631a54ed93a93015e671fcbec7ac81',1,'helper.h']]] +]; diff --git a/docs/search/enums_0.html b/docs/search/enums_0.html new file mode 100644 index 0000000..9669700 --- /dev/null +++ b/docs/search/enums_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/enums_0.js b/docs/search/enums_0.js new file mode 100644 index 0000000..8efabc7 --- /dev/null +++ b/docs/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['data_5ftype_212',['DATA_TYPE',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27b',1,'DataType.h']]] +]; diff --git a/docs/search/enumvalues_0.html b/docs/search/enumvalues_0.html new file mode 100644 index 0000000..9286248 --- /dev/null +++ b/docs/search/enumvalues_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/enumvalues_0.js b/docs/search/enumvalues_0.js new file mode 100644 index 0000000..8673bc3 --- /dev/null +++ b/docs/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['float_213',['FLOAT',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27bae738c26bf4ce1037fa81b039a915cbf6',1,'DataType.h']]] +]; diff --git a/docs/search/enumvalues_1.html b/docs/search/enumvalues_1.html new file mode 100644 index 0000000..e22a79f --- /dev/null +++ b/docs/search/enumvalues_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/enumvalues_1.js b/docs/search/enumvalues_1.js new file mode 100644 index 0000000..82b116f --- /dev/null +++ b/docs/search/enumvalues_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['int_214',['INT',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27ba53f93baa3057821107c750323892fa92',1,'DataType.h']]] +]; diff --git a/docs/search/enumvalues_2.html b/docs/search/enumvalues_2.html new file mode 100644 index 0000000..01a77bf --- /dev/null +++ b/docs/search/enumvalues_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/enumvalues_2.js b/docs/search/enumvalues_2.js new file mode 100644 index 0000000..b9d59d2 --- /dev/null +++ b/docs/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['list_215',['LIST',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27ba298cb25408234de02baf2085803a464a',1,'DataType.h']]] +]; diff --git a/docs/search/enumvalues_3.html b/docs/search/enumvalues_3.html new file mode 100644 index 0000000..4e761d6 --- /dev/null +++ b/docs/search/enumvalues_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/enumvalues_3.js b/docs/search/enumvalues_3.js new file mode 100644 index 0000000..8554169 --- /dev/null +++ b/docs/search/enumvalues_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['string_216',['STRING',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27ba63b588d5559f64f89a416e656880b949',1,'DataType.h']]] +]; diff --git a/docs/search/enumvalues_4.html b/docs/search/enumvalues_4.html new file mode 100644 index 0000000..e2977a0 --- /dev/null +++ b/docs/search/enumvalues_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/enumvalues_4.js b/docs/search/enumvalues_4.js new file mode 100644 index 0000000..15cb7e3 --- /dev/null +++ b/docs/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['void_217',['VOID',['../DataType_8h.html#aa082c000e4eff6ed512714ea0a33d27ba6d0c9fc747131795e6e5d0c5119f12cb',1,'DataType.h']]] +]; diff --git a/docs/search/files_0.html b/docs/search/files_0.html new file mode 100644 index 0000000..737608e --- /dev/null +++ b/docs/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_0.js b/docs/search/files_0.js new file mode 100644 index 0000000..d9e6534 --- /dev/null +++ b/docs/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['datatype_2eh_118',['DataType.h',['../DataType_8h.html',1,'']]] +]; diff --git a/docs/search/files_1.html b/docs/search/files_1.html new file mode 100644 index 0000000..f27a62d --- /dev/null +++ b/docs/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_1.js b/docs/search/files_1.js new file mode 100644 index 0000000..83e1858 --- /dev/null +++ b/docs/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['floatvalue_2ecpp_119',['FloatValue.cpp',['../FloatValue_8cpp.html',1,'']]], + ['floatvalue_2eh_120',['FloatValue.h',['../FloatValue_8h.html',1,'']]] +]; diff --git a/docs/search/files_2.html b/docs/search/files_2.html new file mode 100644 index 0000000..a45066e --- /dev/null +++ b/docs/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_2.js b/docs/search/files_2.js new file mode 100644 index 0000000..f0b5a16 --- /dev/null +++ b/docs/search/files_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['hazelnupp_2ecpp_121',['Hazelnupp.cpp',['../Hazelnupp_8cpp.html',1,'']]], + ['hazelnupp_2eh_122',['Hazelnupp.h',['../Hazelnupp_8h.html',1,'']]], + ['hazelnupp_2evcxproj_2efilelistabsolute_2etxt_123',['Hazelnupp.vcxproj.FileListAbsolute.txt',['../Debug_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)'],['../Release_2Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)']]], + ['hazelnuppexception_2eh_124',['HazelnuppException.h',['../HazelnuppException_8h.html',1,'']]] +]; diff --git a/docs/search/files_3.html b/docs/search/files_3.html new file mode 100644 index 0000000..1076bc5 --- /dev/null +++ b/docs/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_3.js b/docs/search/files_3.js new file mode 100644 index 0000000..772961e --- /dev/null +++ b/docs/search/files_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['index_2emd_125',['index.md',['../index_8md.html',1,'']]], + ['intvalue_2ecpp_126',['IntValue.cpp',['../IntValue_8cpp.html',1,'']]], + ['intvalue_2eh_127',['IntValue.h',['../IntValue_8h.html',1,'']]] +]; diff --git a/docs/search/files_4.html b/docs/search/files_4.html new file mode 100644 index 0000000..e5cd7f4 --- /dev/null +++ b/docs/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_4.js b/docs/search/files_4.js new file mode 100644 index 0000000..e4b5a51 --- /dev/null +++ b/docs/search/files_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['listvalue_2ecpp_128',['ListValue.cpp',['../ListValue_8cpp.html',1,'']]], + ['listvalue_2eh_129',['ListValue.h',['../ListValue_8h.html',1,'']]] +]; diff --git a/docs/search/files_5.html b/docs/search/files_5.html new file mode 100644 index 0000000..2cc480f --- /dev/null +++ b/docs/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_5.js b/docs/search/files_5.js new file mode 100644 index 0000000..b7d2305 --- /dev/null +++ b/docs/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_2ecpp_130',['main.cpp',['../main_8cpp.html',1,'']]] +]; diff --git a/docs/search/files_6.html b/docs/search/files_6.html new file mode 100644 index 0000000..6510245 --- /dev/null +++ b/docs/search/files_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_6.js b/docs/search/files_6.js new file mode 100644 index 0000000..41abf6a --- /dev/null +++ b/docs/search/files_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paramconstraint_2eh_131',['ParamConstraint.h',['../ParamConstraint_8h.html',1,'']]], + ['parameter_2ecpp_132',['Parameter.cpp',['../Parameter_8cpp.html',1,'']]], + ['parameter_2eh_133',['Parameter.h',['../Parameter_8h.html',1,'']]] +]; diff --git a/docs/search/files_7.html b/docs/search/files_7.html new file mode 100644 index 0000000..819f7b8 --- /dev/null +++ b/docs/search/files_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_7.js b/docs/search/files_7.js new file mode 100644 index 0000000..e5d95fb --- /dev/null +++ b/docs/search/files_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['stringtools_2ecpp_134',['StringTools.cpp',['../StringTools_8cpp.html',1,'']]], + ['stringtools_2eh_135',['StringTools.h',['../StringTools_8h.html',1,'']]], + ['stringvalue_2ecpp_136',['StringValue.cpp',['../StringValue_8cpp.html',1,'']]], + ['stringvalue_2eh_137',['StringValue.h',['../StringValue_8h.html',1,'']]] +]; diff --git a/docs/search/files_8.html b/docs/search/files_8.html new file mode 100644 index 0000000..fa1a27f --- /dev/null +++ b/docs/search/files_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_8.js b/docs/search/files_8.js new file mode 100644 index 0000000..b8e27a9 --- /dev/null +++ b/docs/search/files_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['value_2ecpp_138',['Value.cpp',['../Value_8cpp.html',1,'']]], + ['value_2eh_139',['Value.h',['../Value_8h.html',1,'']]], + ['voidvalue_2ecpp_140',['VoidValue.cpp',['../VoidValue_8cpp.html',1,'']]], + ['voidvalue_2eh_141',['VoidValue.h',['../VoidValue_8h.html',1,'']]] +]; diff --git a/docs/search/files_9.html b/docs/search/files_9.html new file mode 100644 index 0000000..3af3e47 --- /dev/null +++ b/docs/search/files_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_9.js b/docs/search/files_9.js new file mode 100644 index 0000000..fd06a3e --- /dev/null +++ b/docs/search/files_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paramconstraint_2eh_145',['ParamConstraint.h',['../ParamConstraint_8h.html',1,'']]], + ['parameter_2ecpp_146',['Parameter.cpp',['../Parameter_8cpp.html',1,'']]], + ['parameter_2eh_147',['Parameter.h',['../Parameter_8h.html',1,'']]] +]; diff --git a/docs/search/files_a.html b/docs/search/files_a.html new file mode 100644 index 0000000..17f65ad --- /dev/null +++ b/docs/search/files_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_a.js b/docs/search/files_a.js new file mode 100644 index 0000000..51ad956 --- /dev/null +++ b/docs/search/files_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme_2emd_148',['readme.md',['../readme_8md.html',1,'']]] +]; diff --git a/docs/search/files_b.html b/docs/search/files_b.html new file mode 100644 index 0000000..aaa7731 --- /dev/null +++ b/docs/search/files_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_b.js b/docs/search/files_b.js new file mode 100644 index 0000000..31af2b3 --- /dev/null +++ b/docs/search/files_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['stringtools_2ecpp_149',['StringTools.cpp',['../StringTools_8cpp.html',1,'']]], + ['stringtools_2eh_150',['StringTools.h',['../StringTools_8h.html',1,'']]], + ['stringvalue_2ecpp_151',['StringValue.cpp',['../StringValue_8cpp.html',1,'']]], + ['stringvalue_2eh_152',['StringValue.h',['../StringValue_8h.html',1,'']]] +]; diff --git a/docs/search/files_c.html b/docs/search/files_c.html new file mode 100644 index 0000000..79e7963 --- /dev/null +++ b/docs/search/files_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_c.js b/docs/search/files_c.js new file mode 100644 index 0000000..ecd6060 --- /dev/null +++ b/docs/search/files_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['test_5fhazelnupp_2evcxproj_2efilelistabsolute_2etxt_153',['Test_Hazelnupp.vcxproj.FileListAbsolute.txt',['../Debug_2Test__Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)'],['../Release_2Test__Hazelnupp_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)']]] +]; diff --git a/docs/search/files_d.html b/docs/search/files_d.html new file mode 100644 index 0000000..94b2ff2 --- /dev/null +++ b/docs/search/files_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/files_d.js b/docs/search/files_d.js new file mode 100644 index 0000000..d261589 --- /dev/null +++ b/docs/search/files_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['value_2ecpp_154',['Value.cpp',['../Value_8cpp.html',1,'']]], + ['value_2eh_155',['Value.h',['../Value_8h.html',1,'']]], + ['voidvalue_2ecpp_156',['VoidValue.cpp',['../VoidValue_8cpp.html',1,'']]], + ['voidvalue_2eh_157',['VoidValue.h',['../VoidValue_8h.html',1,'']]] +]; diff --git a/docs/search/functions_0.html b/docs/search/functions_0.html new file mode 100644 index 0000000..e17c711 --- /dev/null +++ b/docs/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js new file mode 100644 index 0000000..58b93a6 --- /dev/null +++ b/docs/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['addvalue_142',['AddValue',['../classListValue.html#af8787d266aa353d3f96e2c76cce76c41',1,'ListValue']]] +]; diff --git a/docs/search/functions_1.html b/docs/search/functions_1.html new file mode 100644 index 0000000..0ddac0a --- /dev/null +++ b/docs/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js new file mode 100644 index 0000000..939fd60 --- /dev/null +++ b/docs/search/functions_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['clearabbreviations_143',['ClearAbbreviations',['../classHazelnupp.html#a5175869b025468324cefad487081e91d',1,'Hazelnupp']]], + ['clearconstraints_144',['ClearConstraints',['../classHazelnupp.html#a3970b74583def49c6632fe08a4499809',1,'Hazelnupp']]], + ['contains_145',['Contains',['../classStringTools.html#aec1abd8b22146c7a9ebeb6a94d6af5ee',1,'StringTools']]] +]; diff --git a/docs/search/functions_10.html b/docs/search/functions_10.html new file mode 100644 index 0000000..09422e1 --- /dev/null +++ b/docs/search/functions_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_10.js b/docs/search/functions_10.js new file mode 100644 index 0000000..b2ad77e --- /dev/null +++ b/docs/search/functions_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['what_196',['What',['../classHazelnuppException.html#ac087d5190a9b3f6964120cc35321c3a6',1,'HazelnuppException']]] +]; diff --git a/docs/search/functions_11.html b/docs/search/functions_11.html new file mode 100644 index 0000000..1cde7b4 --- /dev/null +++ b/docs/search/functions_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_11.js b/docs/search/functions_11.js new file mode 100644 index 0000000..3625c00 --- /dev/null +++ b/docs/search/functions_11.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['_7efloatvalue_197',['~FloatValue',['../classFloatValue.html#a5c6c7a2c805ac0207d325edd28a5db1c',1,'FloatValue']]], + ['_7ehazelnupp_198',['~Hazelnupp',['../classHazelnupp.html#a25f8810d24d647b6a57e2dd00ead42be',1,'Hazelnupp']]], + ['_7eintvalue_199',['~IntValue',['../classIntValue.html#a45514417be35da78376822a0dd50f488',1,'IntValue']]], + ['_7elistvalue_200',['~ListValue',['../classListValue.html#a91f1450f299d46b3301774a6b4eb6c18',1,'ListValue']]], + ['_7eparameter_201',['~Parameter',['../classParameter.html#a6e2ade42a712f1d3675653329266e42d',1,'Parameter']]], + ['_7estringvalue_202',['~StringValue',['../classStringValue.html#a829a8f064ec6b31b57d1dbebc8cd05d8',1,'StringValue']]], + ['_7evalue_203',['~Value',['../classValue.html#aceb26b90be781020c0c71ae5d16ca06f',1,'Value']]], + ['_7evoidvalue_204',['~VoidValue',['../classVoidValue.html#a8229e255a6fc31da4a4ec7aba97d4111',1,'VoidValue']]] +]; diff --git a/docs/search/functions_2.html b/docs/search/functions_2.html new file mode 100644 index 0000000..2737c5a --- /dev/null +++ b/docs/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js new file mode 100644 index 0000000..ab3ef52 --- /dev/null +++ b/docs/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deepcopy_146',['Deepcopy',['../classFloatValue.html#ab071916339a0d5a266d821ebbc8f12b0',1,'FloatValue::Deepcopy()'],['../classIntValue.html#aa599004242b27f8f3e246b88742b034e',1,'IntValue::Deepcopy()'],['../classListValue.html#a51c89ff315026b03d908345c6f58169d',1,'ListValue::Deepcopy()'],['../classStringValue.html#a1952487a786fb53cb0b9aefdb3367268',1,'StringValue::Deepcopy()'],['../classValue.html#a54439631b2c5b933c03baf65836838fc',1,'Value::Deepcopy()'],['../classVoidValue.html#ac36e85add840057659ec24484548165f',1,'VoidValue::Deepcopy()']]] +]; diff --git a/docs/search/functions_3.html b/docs/search/functions_3.html new file mode 100644 index 0000000..6da86e7 --- /dev/null +++ b/docs/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_3.js b/docs/search/functions_3.js new file mode 100644 index 0000000..ed157d0 --- /dev/null +++ b/docs/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['floatvalue_147',['FloatValue',['../classFloatValue.html#a6bb35564e3331a3feb57b08caad0df44',1,'FloatValue']]] +]; diff --git a/docs/search/functions_4.html b/docs/search/functions_4.html new file mode 100644 index 0000000..911304e --- /dev/null +++ b/docs/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_4.js b/docs/search/functions_4.js new file mode 100644 index 0000000..ee911d3 --- /dev/null +++ b/docs/search/functions_4.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['getabbreviation_148',['GetAbbreviation',['../classHazelnupp.html#a579e78129f19cb9f17a6075366ababe5',1,'Hazelnupp']]], + ['getasosstring_149',['GetAsOsString',['../classFloatValue.html#a6c9a4b70a7618252f56d9062c483531c',1,'FloatValue::GetAsOsString()'],['../classIntValue.html#a7d7dbda9a051084600d3eabdac96ee45',1,'IntValue::GetAsOsString()'],['../classListValue.html#a5b1f8af329e48c5469fee16634b7889c',1,'ListValue::GetAsOsString()'],['../classStringValue.html#a71869ee46b88a3cbb9571f481f0c216d',1,'StringValue::GetAsOsString()'],['../classValue.html#a37bf4df9917f2d60ebfd0cee0bde3497',1,'Value::GetAsOsString()'],['../classVoidValue.html#a44b1917d9ba41ee91e2131432e01ec90',1,'VoidValue::GetAsOsString()']]], + ['getcrashonfail_150',['GetCrashOnFail',['../classHazelnupp.html#a1b810cc7db2cf64aecaa70c686b14bb7',1,'Hazelnupp']]], + ['getdatatype_151',['GetDataType',['../classValue.html#adbb80bf6d455a316e6e5103353429993',1,'Value']]], + ['getexecutablename_152',['GetExecutableName',['../classHazelnupp.html#af6bb41fb079131f8b91fe981f63f7469',1,'Hazelnupp']]], + ['getfloat32_153',['GetFloat32',['../classFloatValue.html#a1653ab3f4fa1700cf1b618ac6552ea81',1,'FloatValue::GetFloat32()'],['../classIntValue.html#ad0734e4cf67bac0bcc58251a4b3e56c4',1,'IntValue::GetFloat32()'],['../classListValue.html#a637fec02ed7f7325554e494fc7cd4e86',1,'ListValue::GetFloat32()'],['../classStringValue.html#a31fc4d2517a7454c1e9f329df2f14be7',1,'StringValue::GetFloat32()'],['../classValue.html#ac936fa09ba401a748ef67292ad823004',1,'Value::GetFloat32()'],['../classVoidValue.html#a6d39d2983e54e1a407c66e303273aa48',1,'VoidValue::GetFloat32()']]], + ['getfloat64_154',['GetFloat64',['../classFloatValue.html#add33b370ef691ccb2f0957d0fe4ef6f9',1,'FloatValue::GetFloat64()'],['../classIntValue.html#a5ceb2030e8a2a665953fdd4f1715e6a5',1,'IntValue::GetFloat64()'],['../classListValue.html#a571178db1c9d23f6c685ea8898dbb60e',1,'ListValue::GetFloat64()'],['../classStringValue.html#a74bedb828c901a4895062f62303b9653',1,'StringValue::GetFloat64()'],['../classValue.html#ac3d3a5b3ba7bf5aee0f41d19b242b7e8',1,'Value::GetFloat64()'],['../classVoidValue.html#a18b6f0d697c5f9286372a05927e4759c',1,'VoidValue::GetFloat64()']]], + ['getint32_155',['GetInt32',['../classFloatValue.html#a565741e80cd99a4d2af861ddc3c2dc99',1,'FloatValue::GetInt32()'],['../classIntValue.html#a163f21536fa49491aa0ae03c8091344a',1,'IntValue::GetInt32()'],['../classListValue.html#a565c2b86fcfb3a13de29e59d95a358e7',1,'ListValue::GetInt32()'],['../classStringValue.html#ac8b53a7792ff1ed048722e2e404f3e6b',1,'StringValue::GetInt32()'],['../classValue.html#afcbcf8a064895b6b9d2964aecee01f22',1,'Value::GetInt32()'],['../classVoidValue.html#a5b7f50c390ef8f3636ba211a72a78065',1,'VoidValue::GetInt32()']]], + ['getint64_156',['GetInt64',['../classFloatValue.html#a762520d504d4564c48cf3bbefbb0f183',1,'FloatValue::GetInt64()'],['../classIntValue.html#ae0643023dfd56eafe2e3da5a4ba13080',1,'IntValue::GetInt64()'],['../classListValue.html#a9a7a1161ddeb3e56eaafee5f10f75995',1,'ListValue::GetInt64()'],['../classStringValue.html#aabdc7d681945403d24df6a8fe27948af',1,'StringValue::GetInt64()'],['../classValue.html#a77229fe49da12240fbfbc6657101cb27',1,'Value::GetInt64()'],['../classVoidValue.html#a3806945596866f3630dc5426a6b55e58',1,'VoidValue::GetInt64()']]], + ['getlist_157',['GetList',['../classFloatValue.html#a60b2698f28f1aacac0b67b6453c89fd1',1,'FloatValue::GetList()'],['../classIntValue.html#acc74ba6070a516a4bcad10bb113d6fa2',1,'IntValue::GetList()'],['../classListValue.html#ad578d9088c0375cd9b9c6658e5d9ba1f',1,'ListValue::GetList()'],['../classStringValue.html#a2b2810350b5eb7e58062ad095320aa69',1,'StringValue::GetList()'],['../classValue.html#a930ca504a3e52e73f736a7e72f44e5ce',1,'Value::GetList()'],['../classVoidValue.html#aba53ae37d415959b583f33f3e381be16',1,'VoidValue::GetList()']]], + ['getstring_158',['GetString',['../classFloatValue.html#afd5d078683f410cb9d450c61f12f250d',1,'FloatValue::GetString()'],['../classIntValue.html#a3631e3b16f010889e942c0c0f72d403c',1,'IntValue::GetString()'],['../classListValue.html#aeaf80c07236045a77d72349ebcfc3b89',1,'ListValue::GetString()'],['../classStringValue.html#a7ed55493cfd25274f8571c1ea45f93e5',1,'StringValue::GetString()'],['../classValue.html#a1dd7df6be1d7298e5098a48622d0b65f',1,'Value::GetString()'],['../classVoidValue.html#a5af0c47a873b84226df47a90e63b2acd',1,'VoidValue::GetString()']]], + ['getvalue_159',['GetValue',['../classFloatValue.html#a2ad79d8bfe75e45120d1fce132a89b8f',1,'FloatValue::GetValue()'],['../classIntValue.html#a89967cafbdeb21362336067b772808c7',1,'IntValue::GetValue()'],['../classListValue.html#a7907ae7433e4011157f1b31dd5339702',1,'ListValue::GetValue()'],['../classParameter.html#a4ab8ba022bde4a0175e5ceb8e3a598af',1,'Parameter::GetValue()'],['../classStringValue.html#a521a573887a3f31718f74e71ff01e86e',1,'StringValue::GetValue()']]] +]; diff --git a/docs/search/functions_5.html b/docs/search/functions_5.html new file mode 100644 index 0000000..61b920d --- /dev/null +++ b/docs/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_5.js b/docs/search/functions_5.js new file mode 100644 index 0000000..251355b --- /dev/null +++ b/docs/search/functions_5.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['hasabbreviation_160',['HasAbbreviation',['../classHazelnupp.html#a46df7d396fb56e30351c9a7308792200',1,'Hazelnupp']]], + ['hasparam_161',['HasParam',['../classHazelnupp.html#a8b79a79d40420ae748c108c691111040',1,'Hazelnupp']]], + ['hazelnupp_162',['Hazelnupp',['../classHazelnupp.html#a20ac0ebcfd4df7f320a7bbcaeed6e54d',1,'Hazelnupp::Hazelnupp()'],['../classHazelnupp.html#a6d14c60f03b571f5f794c3549e75e435',1,'Hazelnupp::Hazelnupp(const int argc, const char *const *argv)']]], + ['hazelnuppconstraintexception_163',['HazelnuppConstraintException',['../classHazelnuppConstraintException.html#ad434d9b9d78d36cc4008bad70270f844',1,'HazelnuppConstraintException::HazelnuppConstraintException()'],['../classHazelnuppConstraintException.html#a1bf58e4aa510f3e5cdebdfcbff2a1e53',1,'HazelnuppConstraintException::HazelnuppConstraintException(const std::string &msg)']]], + ['hazelnuppconstraintmissingvalue_164',['HazelnuppConstraintMissingValue',['../classHazelnuppConstraintMissingValue.html#a022da2aca494f6853a7c013e94f5796f',1,'HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue()'],['../classHazelnuppConstraintMissingValue.html#a8d3ea192a75f993abe2845444cdb1bca',1,'HazelnuppConstraintMissingValue::HazelnuppConstraintMissingValue(const std::string &msg)']]], + ['hazelnuppconstrainttypemissmatch_165',['HazelnuppConstraintTypeMissmatch',['../classHazelnuppConstraintTypeMissmatch.html#aa81de4d809dd7b00516716574e959c09',1,'HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch()'],['../classHazelnuppConstraintTypeMissmatch.html#ab8d0f32a3423239e06d8c44631098306',1,'HazelnuppConstraintTypeMissmatch::HazelnuppConstraintTypeMissmatch(const std::string &msg)']]], + ['hazelnuppexception_166',['HazelnuppException',['../classHazelnuppException.html#a90d10b00ec056b721c102a70b629a779',1,'HazelnuppException::HazelnuppException()'],['../classHazelnuppException.html#a864a84c0498870ae0a76fb8c3542fa74',1,'HazelnuppException::HazelnuppException(const std::string &msg)']]], + ['hazelnuppinvalidkeyexception_167',['HazelnuppInvalidKeyException',['../classHazelnuppInvalidKeyException.html#ac0c3a84356647817b5076f92e55874e7',1,'HazelnuppInvalidKeyException::HazelnuppInvalidKeyException()'],['../classHazelnuppInvalidKeyException.html#a5be8550858e8ba5754958055803120bc',1,'HazelnuppInvalidKeyException::HazelnuppInvalidKeyException(const std::string &msg)']]], + ['hazelnuppvaluenotconvertibleexception_168',['HazelnuppValueNotConvertibleException',['../classHazelnuppValueNotConvertibleException.html#a459233c9ed4ca577f596761abb2f46e7',1,'HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException()'],['../classHazelnuppValueNotConvertibleException.html#a77dfcc974a767b77aefdaef86e9ad60c',1,'HazelnuppValueNotConvertibleException::HazelnuppValueNotConvertibleException(const std::string &msg)']]] +]; diff --git a/docs/search/functions_6.html b/docs/search/functions_6.html new file mode 100644 index 0000000..dc70a4a --- /dev/null +++ b/docs/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_6.js b/docs/search/functions_6.js new file mode 100644 index 0000000..af8f33a --- /dev/null +++ b/docs/search/functions_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['intvalue_169',['IntValue',['../classIntValue.html#ac1174f807ce2c085f5a24baed4e3c1ba',1,'IntValue']]], + ['isnumeric_170',['IsNumeric',['../classStringTools.html#a6cd093feaca2d978c23774cf87d86e68',1,'StringTools']]] +]; diff --git a/docs/search/functions_7.html b/docs/search/functions_7.html new file mode 100644 index 0000000..7de3106 --- /dev/null +++ b/docs/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_7.js b/docs/search/functions_7.js new file mode 100644 index 0000000..f4dc9af --- /dev/null +++ b/docs/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['key_171',['Key',['../classParameter.html#a7acd68ce06eec06ab286b1a062f9c8d6',1,'Parameter']]] +]; diff --git a/docs/search/functions_8.html b/docs/search/functions_8.html new file mode 100644 index 0000000..7422be2 --- /dev/null +++ b/docs/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_8.js b/docs/search/functions_8.js new file mode 100644 index 0000000..5e5dcc8 --- /dev/null +++ b/docs/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['listvalue_172',['ListValue',['../classListValue.html#a6082aaa506b31496720a168da8ab2708',1,'ListValue']]] +]; diff --git a/docs/search/functions_9.html b/docs/search/functions_9.html new file mode 100644 index 0000000..befd4fa --- /dev/null +++ b/docs/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_9.js b/docs/search/functions_9.js new file mode 100644 index 0000000..4a7c66c --- /dev/null +++ b/docs/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_173',['main',['../main_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627',1,'main.cpp']]] +]; diff --git a/docs/search/functions_a.html b/docs/search/functions_a.html new file mode 100644 index 0000000..a81e963 --- /dev/null +++ b/docs/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_a.js b/docs/search/functions_a.js new file mode 100644 index 0000000..daf5de5 --- /dev/null +++ b/docs/search/functions_a.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['operator_20double_174',['operator double',['../classFloatValue.html#ae02de376bbb2b76e0f9d16b1fc4de06d',1,'FloatValue']]], + ['operator_20int_175',['operator int',['../classIntValue.html#ab30a38c8f58cefd7cbf365c4aeae79bd',1,'IntValue']]], + ['operator_20long_20double_176',['operator long double',['../classFloatValue.html#ad0d4c589190fbab7e6c4d8fcc130ac1b',1,'FloatValue']]], + ['operator_20long_20long_20int_177',['operator long long int',['../classIntValue.html#a45b283dae9904ad0643035d3ee5883eb',1,'IntValue']]], + ['operator_5b_5d_178',['operator[]',['../classHazelnupp.html#a419ccdc6bad00b0fc3e17ed9b41f5dc5',1,'Hazelnupp']]], + ['string_179',['string',['../classStringValue.html#a23449775f14f828d29b115de040a696b',1,'StringValue']]], + ['vector_3c_20value_20_2a_20_3e_180',['vector< Value * >',['../classListValue.html#a5d92ff2b9a1fa92fbc303ac4d07765d0',1,'ListValue']]] +]; diff --git a/docs/search/functions_b.html b/docs/search/functions_b.html new file mode 100644 index 0000000..345265d --- /dev/null +++ b/docs/search/functions_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_b.js b/docs/search/functions_b.js new file mode 100644 index 0000000..f566dba --- /dev/null +++ b/docs/search/functions_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paramconstraint_181',['ParamConstraint',['../structParamConstraint.html#ae0ce64f2f0928d602b6f6117ff34d155',1,'ParamConstraint::ParamConstraint()=default'],['../structParamConstraint.html#a93783114c6f374b77479a283c4aadf05',1,'ParamConstraint::ParamConstraint(const std::string &key, bool constrainType, DATA_TYPE wantedType, const std::vector< std::string > &defaultValue, bool required)']]], + ['parameter_182',['Parameter',['../classParameter.html#a0c9faefc26cc9d8c886ef71e39e2f90c',1,'Parameter']]], + ['parse_183',['Parse',['../classHazelnupp.html#a1ccb88faca1a8deb77161888479c300b',1,'Hazelnupp']]], + ['parsenumber_184',['ParseNumber',['../classStringTools.html#ab661223da5bbbb75039e168409466c82',1,'StringTools']]] +]; diff --git a/docs/search/functions_c.html b/docs/search/functions_c.html new file mode 100644 index 0000000..858bfd6 --- /dev/null +++ b/docs/search/functions_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_c.js b/docs/search/functions_c.js new file mode 100644 index 0000000..b9c2a82 --- /dev/null +++ b/docs/search/functions_c.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['registerabbreviation_185',['RegisterAbbreviation',['../classHazelnupp.html#abf1e0ebf0207ca2327fcde81f7372124',1,'Hazelnupp']]], + ['registerconstraints_186',['RegisterConstraints',['../classHazelnupp.html#a8a3331836b9ea1f920e77f6d332019d5',1,'Hazelnupp']]], + ['replace_187',['Replace',['../classStringTools.html#a0ca14c1d67833a61955a693f3e40d8b5',1,'StringTools::Replace(const std::string &str, const char find, const std::string &subst)'],['../classStringTools.html#a1658832ddf1611f83c5848e391d32806',1,'StringTools::Replace(const std::string &str, const std::string &find, const std::string &subst)']]], + ['require_188',['Require',['../structParamConstraint.html#a40e47d3ad68cadbe785551c4aaad828c',1,'ParamConstraint']]] +]; diff --git a/docs/search/functions_d.html b/docs/search/functions_d.html new file mode 100644 index 0000000..2f09f51 --- /dev/null +++ b/docs/search/functions_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_d.js b/docs/search/functions_d.js new file mode 100644 index 0000000..4ff6924 --- /dev/null +++ b/docs/search/functions_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['setcrashonfail_189',['SetCrashOnFail',['../classHazelnupp.html#a17845623ca686caa51f3c8254e85551e',1,'Hazelnupp']]], + ['splitstring_190',['SplitString',['../classStringTools.html#a7cd6606ef06170fab363024e457f1f16',1,'StringTools::SplitString(const std::string &str, const char delimiter)'],['../classStringTools.html#afe626a56fa486afcb0e4c01d3c1ccb35',1,'StringTools::SplitString(const std::string &str, const std::string &delimiter)']]], + ['stringvalue_191',['StringValue',['../classStringValue.html#a24dad2deec92b51bf60a11400cc8c204',1,'StringValue']]] +]; diff --git a/docs/search/functions_e.html b/docs/search/functions_e.html new file mode 100644 index 0000000..ee5afa6 --- /dev/null +++ b/docs/search/functions_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_e.js b/docs/search/functions_e.js new file mode 100644 index 0000000..e32c6df --- /dev/null +++ b/docs/search/functions_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tolower_192',['ToLower',['../classStringTools.html#a67edf755685f59b51f7416d9e4f6e2bd',1,'StringTools']]], + ['typesafety_193',['TypeSafety',['../structParamConstraint.html#a3ecbccdce5be2529712e0866725c7cd5',1,'ParamConstraint']]] +]; diff --git a/docs/search/functions_f.html b/docs/search/functions_f.html new file mode 100644 index 0000000..f17c412 --- /dev/null +++ b/docs/search/functions_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/functions_f.js b/docs/search/functions_f.js new file mode 100644 index 0000000..3aa82da --- /dev/null +++ b/docs/search/functions_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['value_194',['Value',['../classValue.html#a8455d65bb2d939e850d6772dfbf8bfec',1,'Value']]], + ['voidvalue_195',['VoidValue',['../classVoidValue.html#a75abf334b7f55cd149d2bb1962f2d8f1',1,'VoidValue']]] +]; diff --git a/docs/search/mag_sel.png b/docs/search/mag_sel.png new file mode 100644 index 0000000..39c0ed5 Binary files /dev/null and b/docs/search/mag_sel.png differ diff --git a/docs/search/namespaces_0.html b/docs/search/namespaces_0.html new file mode 100644 index 0000000..76996d1 --- /dev/null +++ b/docs/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/namespaces_0.js b/docs/search/namespaces_0.js new file mode 100644 index 0000000..64e386d --- /dev/null +++ b/docs/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['testhazelnupp_127',['TestHazelnupp',['../namespaceTestHazelnupp.html',1,'']]] +]; diff --git a/docs/search/nomatches.html b/docs/search/nomatches.html new file mode 100644 index 0000000..4377320 --- /dev/null +++ b/docs/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs/search/pages_0.html b/docs/search/pages_0.html new file mode 100644 index 0000000..9a6a29a --- /dev/null +++ b/docs/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/pages_0.js b/docs/search/pages_0.js new file mode 100644 index 0000000..aab9f33 --- /dev/null +++ b/docs/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hazelnupp_219',['Hazelnupp',['../index.html',1,'']]] +]; diff --git a/docs/search/related_0.html b/docs/search/related_0.html new file mode 100644 index 0000000..bbe15fa --- /dev/null +++ b/docs/search/related_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/related_0.js b/docs/search/related_0.js new file mode 100644 index 0000000..5118e64 --- /dev/null +++ b/docs/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operator_3c_3c_218',['operator<<',['../classParameter.html#a11b3529badcbf99b46262772472495c7',1,'Parameter::operator<<()'],['../classValue.html#ad29db86c4a2dec5bc8d0006031b07211',1,'Value::operator<<()']]] +]; diff --git a/docs/search/search.css b/docs/search/search.css new file mode 100644 index 0000000..2416cc3 --- /dev/null +++ b/docs/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #D6DBC2; + background-color: #FDFDFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #A8B17C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #F9F9F6; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #AEB685; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #AEB685; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #FAFAF7; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/search/search.js b/docs/search/search.js new file mode 100644 index 0000000..a554ab9 --- /dev/null +++ b/docs/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/typedefs_0.js b/docs/search/typedefs_0.js new file mode 100644 index 0000000..77729e3 --- /dev/null +++ b/docs/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['arglist_229',['ArgList',['../helper_8h.html#ae87ff642ae2445b823a32470b938cd0e',1,'helper.h']]] +]; diff --git a/docs/search/variables_0.html b/docs/search/variables_0.html new file mode 100644 index 0000000..bf3eba5 --- /dev/null +++ b/docs/search/variables_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/variables_0.js b/docs/search/variables_0.js new file mode 100644 index 0000000..832526a --- /dev/null +++ b/docs/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['constraintype_205',['constrainType',['../structParamConstraint.html#ab35444d2957439bc52c2056a829145a2',1,'ParamConstraint']]] +]; diff --git a/docs/search/variables_1.html b/docs/search/variables_1.html new file mode 100644 index 0000000..49fe59a --- /dev/null +++ b/docs/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/variables_1.js b/docs/search/variables_1.js new file mode 100644 index 0000000..004718a --- /dev/null +++ b/docs/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['defaultvalue_206',['defaultValue',['../structParamConstraint.html#af2832fa007abaabc05784d5f978aeeff',1,'ParamConstraint']]] +]; diff --git a/docs/search/variables_2.html b/docs/search/variables_2.html new file mode 100644 index 0000000..0c8a18c --- /dev/null +++ b/docs/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/variables_2.js b/docs/search/variables_2.js new file mode 100644 index 0000000..0c425f6 --- /dev/null +++ b/docs/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['key_207',['key',['../structParamConstraint.html#aa3bd052bbaebdc795f0922731c666648',1,'ParamConstraint']]] +]; diff --git a/docs/search/variables_3.html b/docs/search/variables_3.html new file mode 100644 index 0000000..19a31fc --- /dev/null +++ b/docs/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/variables_3.js b/docs/search/variables_3.js new file mode 100644 index 0000000..b4d8b0c --- /dev/null +++ b/docs/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['message_208',['message',['../classHazelnuppException.html#a4d80f59d2732975461ee480642c4addf',1,'HazelnuppException']]] +]; diff --git a/docs/search/variables_4.html b/docs/search/variables_4.html new file mode 100644 index 0000000..bdc37be --- /dev/null +++ b/docs/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/variables_4.js b/docs/search/variables_4.js new file mode 100644 index 0000000..ffd0305 --- /dev/null +++ b/docs/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['required_209',['required',['../structParamConstraint.html#a5c451d5ade6c548af7de0a978964a09d',1,'ParamConstraint']]] +]; diff --git a/docs/search/variables_5.html b/docs/search/variables_5.html new file mode 100644 index 0000000..6aa2249 --- /dev/null +++ b/docs/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/variables_5.js b/docs/search/variables_5.js new file mode 100644 index 0000000..ad10206 --- /dev/null +++ b/docs/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['type_210',['type',['../classValue.html#a1d097dc84691b48d12435c6bf97c85b4',1,'Value']]] +]; diff --git a/docs/search/variables_6.html b/docs/search/variables_6.html new file mode 100644 index 0000000..ce4a906 --- /dev/null +++ b/docs/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/search/variables_6.js b/docs/search/variables_6.js new file mode 100644 index 0000000..58a7e55 --- /dev/null +++ b/docs/search/variables_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wantedtype_211',['wantedType',['../structParamConstraint.html#ae8875e054a074241f0c0bf3328a0915a',1,'ParamConstraint']]] +]; diff --git a/docs/splitbar.png b/docs/splitbar.png new file mode 100644 index 0000000..6e04603 Binary files /dev/null and b/docs/splitbar.png differ diff --git a/docs/structParamConstraint-members.html b/docs/structParamConstraint-members.html new file mode 100644 index 0000000..aa4a911 --- /dev/null +++ b/docs/structParamConstraint-members.html @@ -0,0 +1,97 @@ + + + + + + + +Leonetienne/Hazelnupp: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Leonetienne/Hazelnupp +
    +
    Simple, easy to use, command line parameter interface
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    ParamConstraint Member List
    +
    +
    + +

    This is the complete list of members for ParamConstraint, including all inherited members.

    + + + + + + + + + + +
    constrainTypeParamConstraint
    defaultValueParamConstraint
    keyParamConstraint
    ParamConstraint()=defaultParamConstraint
    ParamConstraint(const std::string &key, bool constrainType, DATA_TYPE wantedType, const std::vector< std::string > &defaultValue, bool required)ParamConstraintinline
    Require(const std::string &key, const std::vector< std::string > &defaultValue={}, bool required=true)ParamConstraintinlinestatic
    requiredParamConstraint
    TypeSafety(const std::string &key, DATA_TYPE wantedType, bool constrainType=true)ParamConstraintinlinestatic
    wantedTypeParamConstraint
    + + + + diff --git a/docs/structParamConstraint.html b/docs/structParamConstraint.html new file mode 100644 index 0000000..dc48b5f --- /dev/null +++ b/docs/structParamConstraint.html @@ -0,0 +1,455 @@ + + + + + + + +Leonetienne/Hazelnupp: ParamConstraint Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Leonetienne/Hazelnupp +
    +
    Simple, easy to use, command line parameter interface
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    + +
    + +

    #include <ParamConstraint.h>

    +
    +Collaboration diagram for ParamConstraint:
    +
    +
    Collaboration graph
    + + + + + + +
    [legend]
    + + + + + + + + +

    +Public Member Functions

     ParamConstraint ()=default
     Empty constructor. More...
     
     ParamConstraint (const std::string &key, bool constrainType, DATA_TYPE wantedType, const std::vector< std::string > &defaultValue, bool required)
     Whole constructor. More...
     
    + + + + + + + +

    +Static Public Member Functions

    static ParamConstraint Require (const std::string &key, const std::vector< std::string > &defaultValue={}, bool required=true)
     Constructs a require constraint. More...
     
    static ParamConstraint TypeSafety (const std::string &key, DATA_TYPE wantedType, bool constrainType=true)
     Constructs a type-safety constraint. More...
     
    + + + + + + + + + + + + + + + + +

    +Public Attributes

    std::string key
     The key of the parameter to constrain. More...
     
    bool constrainType = false
     Should this parameter be forced to be of a certain type?
    + Remember to set constrainTo to the wanted type. More...
     
    DATA_TYPE wantedType = DATA_TYPE::VOID
     Constrain the parameter to this value. Requires constrainType to be set to true. More...
     
    std::vector< std::string > defaultValue
     The default value for this parameter. More...
     
    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 6 of file ParamConstraint.h.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ParamConstraint() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    ParamConstraint::ParamConstraint ()
    +
    +default
    +
    + +

    Empty constructor.

    + +
    +
    + +

    ◆ ParamConstraint() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ParamConstraint::ParamConstraint (const std::string & key,
    bool constrainType,
    DATA_TYPE wantedType,
    const std::vector< std::string > & defaultValue,
    bool required 
    )
    +
    +inline
    +
    + +

    Whole constructor.

    + +

    Definition at line 36 of file ParamConstraint.h.

    +
    37  :
    +
    38  key { key },
    + + + + +
    43  {
    +
    44  return;
    +
    45  }
    +
    +
    +
    +

    Member Function Documentation

    + +

    ◆ Require()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static ParamConstraint ParamConstraint::Require (const std::string & key,
    const std::vector< std::string > & defaultValue = {},
    bool required = true 
    )
    +
    +inlinestatic
    +
    + +

    Constructs a require constraint.

    +


    + Think of the default value like of a list ofparameters. Like {"--width", "800"}

    + +

    Definition at line 14 of file ParamConstraint.h.

    +
    14  {}, bool required = true)
    +
    15  {
    +
    16  ParamConstraint pc;
    +
    17  pc.key = key;
    + +
    19  pc.required = required;
    +
    20 
    +
    21  return pc;
    +
    22  }
    +
    +
    +
    + +

    ◆ TypeSafety()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static ParamConstraint ParamConstraint::TypeSafety (const std::string & key,
    DATA_TYPE wantedType,
    bool constrainType = true 
    )
    +
    +inlinestatic
    +
    + +

    Constructs a type-safety constraint.

    + +

    Definition at line 25 of file ParamConstraint.h.

    +
    26  {
    +
    27  ParamConstraint pc;
    +
    28  pc.key = key;
    + + +
    31 
    +
    32  return pc;
    +
    33  }
    +
    +
    +
    +

    Member Data Documentation

    + +

    ◆ constrainType

    + +
    +
    + + + + +
    bool ParamConstraint::constrainType = false
    +
    + +

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

    + +

    Definition at line 52 of file ParamConstraint.h.

    + +
    +
    + +

    ◆ defaultValue

    + +
    +
    + + + + +
    std::vector<std::string> ParamConstraint::defaultValue
    +
    + +

    The default value for this parameter.

    +


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

    + +

    Definition at line 60 of file ParamConstraint.h.

    + +
    +
    + +

    ◆ key

    + +
    +
    + + + + +
    std::string ParamConstraint::key
    +
    + +

    The key of the parameter to constrain.

    + +

    Definition at line 48 of file ParamConstraint.h.

    + +
    +
    + +

    ◆ required

    + +
    +
    + + + + +
    bool ParamConstraint::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.

    + +

    Definition at line 64 of file ParamConstraint.h.

    + +
    +
    + +

    ◆ wantedType

    + +
    +
    + + + + +
    DATA_TYPE ParamConstraint::wantedType = DATA_TYPE::VOID
    +
    + +

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

    + +

    Definition at line 55 of file ParamConstraint.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    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::string key
    The key of the parameter to constrain.
    +
    bool constrainType
    Should this parameter be forced to be of a certain type? Remember to set constrainTo to the wanted ...
    +
    DATA_TYPE wantedType
    Constrain the parameter to this value. Requires constrainType to be set to true.
    + + + + + diff --git a/docs/structParamConstraint__coll__graph.map b/docs/structParamConstraint__coll__graph.map new file mode 100644 index 0000000..1fdea4c --- /dev/null +++ b/docs/structParamConstraint__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/structParamConstraint__coll__graph.md5 b/docs/structParamConstraint__coll__graph.md5 new file mode 100644 index 0000000..691b7a5 --- /dev/null +++ b/docs/structParamConstraint__coll__graph.md5 @@ -0,0 +1 @@ +5b0c26b5610c7f0182528e961c22a058 \ No newline at end of file diff --git a/docs/structParamConstraint__coll__graph.png b/docs/structParamConstraint__coll__graph.png new file mode 100644 index 0000000..bb5d73e Binary files /dev/null and b/docs/structParamConstraint__coll__graph.png differ diff --git a/docs/sync_off.png b/docs/sync_off.png new file mode 100644 index 0000000..6535f48 Binary files /dev/null and b/docs/sync_off.png differ diff --git a/docs/sync_on.png b/docs/sync_on.png new file mode 100644 index 0000000..0fcb5e8 Binary files /dev/null and b/docs/sync_on.png differ diff --git a/docs/tab_a.png b/docs/tab_a.png new file mode 100644 index 0000000..72a9ec8 Binary files /dev/null and b/docs/tab_a.png differ diff --git a/docs/tab_b.png b/docs/tab_b.png new file mode 100644 index 0000000..30949f7 Binary files /dev/null and b/docs/tab_b.png differ diff --git a/docs/tab_h.png b/docs/tab_h.png new file mode 100644 index 0000000..112c6d4 Binary files /dev/null and b/docs/tab_h.png differ diff --git a/docs/tab_s.png b/docs/tab_s.png new file mode 100644 index 0000000..34878fa Binary files /dev/null and b/docs/tab_s.png differ diff --git a/docs/tabs.css b/docs/tabs.css new file mode 100644 index 0000000..7d45d36 --- /dev/null +++ b/docs/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}