Riyyi
bb29919f02
Util: Simplify the logic of the long option parsing function
2021-09-13 17:42:34 +02:00
Riyyi
2ac6d24520
Util: Add type error messages to ArgParser option arguments
2021-09-13 16:19:49 +02:00
Riyyi
648c0f8c85
Util: Rename ArgParser error types
2021-09-13 15:22:12 +02:00
Riyyi
35e2c2de48
Util: Rename printOptionError -> printError
2021-09-13 15:17:37 +02:00
Riyyi
ffcde408e1
Util: Add invalid argument type error message to ArgParser
2021-09-13 12:04:44 +02:00
Riyyi
9c918c6555
Util: Add ArgParser unhandled argument error type and messages
2021-09-13 04:04:02 +02:00
Riyyi
a5d5d2ea6d
Util: Fix nullptr derefencing
...
In order to compare strings, the STL has to dereference the data
pointer. So check if its not a nullptr first.
2021-09-13 03:59:51 +02:00
Riyyi
7759821b13
Util: Fix string_view substring selection
...
Unlike std::basic_string::data() and string literals, data() may return
a pointer to a buffer that is not null-terminated. Therefore it is
typically a mistake to pass data() to a routine that takes just a const
CharT* and expects a null-terminated string.
The bug was calling string_view .data() after calling substr() that ends
before the null terminator, as it will just return the entire
string_view.
2021-09-13 00:58:51 +02:00
Riyyi
a217475d42
Util: Avoid assigning variable by passing to the initialization list
...
When an object of a class is created, the constructors of all member
variables are called consecutively in the order the variables are
declared, even if you don't explicitly write them to the initialization
list.
2021-09-13 00:20:38 +02:00
Riyyi
b6bfcbdc33
Util: Support for optional arguments in ArgParser
2021-09-09 15:14:17 +02:00
Riyyi
ca95ef1cf1
Util: Add simple validation to ArgParser number conversions
2021-09-09 12:30:45 +02:00
Riyyi
6efa314c38
Util: Move ArgParser private function implementations to the bottom
2021-09-09 11:44:44 +02:00
Riyyi
4e30b58305
Util: Switch ArgParser option/argument creation to list initialization
2021-09-09 11:40:13 +02:00
Riyyi
0fffa86ba0
Util: Deduplicate ArgParser accept value lambdas
2021-09-09 11:23:13 +02:00
Riyyi
9cecb8602f
Util: Add more ArgParser argument types
2021-09-09 00:12:06 +02:00
Riyyi
67fd31a746
Util: Add argument parsing to ArgParser
2021-09-08 23:46:10 +02:00
Riyyi
dc4fcc10ce
Util+Test: Implement exit on first error in main ArgParser loop
2021-09-07 18:14:14 +02:00
Riyyi
f021cf0e15
Util: Fix parsing for exit on first error setting
2021-09-07 00:54:16 +02:00
Riyyi
3f1ced53f6
Util: Rename variable to plural
2021-09-07 00:20:29 +02:00
Riyyi
f92b75a463
Util+Test: Add setting to stop parsing on first non-option
2021-09-06 20:37:39 +02:00
Riyyi
a70d67f8fa
Util: Don't try to parse a '--' parameter
2021-09-06 14:43:12 +02:00
Riyyi
072d805344
Util+Test: Add more ArgParser option types
2021-09-06 12:22:30 +02:00
Riyyi
98dec3e51a
Util: Handle accepting values return state in ArgParser
2021-09-06 12:17:12 +02:00
Riyyi
1366bf14b1
Util+Test: Change size_type to size_t
...
The specialized size_type type is just an alias for size_t.
2021-09-06 01:59:08 +02:00
Riyyi
68cdd625b4
Util+Test: Add parsing of multi-value options
2021-09-06 00:08:04 +02:00
Riyyi
a5c422a2cc
Util+Test: Add support for '--' to enable non-option mode
2021-09-05 23:39:08 +02:00
Riyyi
04482fb10d
Util: Return the result of the option parsing
2021-09-05 22:56:34 +02:00
Riyyi
2b2bd7ff78
Util: Add fancyprint function
2021-09-05 20:59:45 +02:00
Riyyi
f6ce86dba7
Util: Fix typo in timer
2021-09-05 20:59:17 +02:00
Riyyi
86aeae3c8e
Util: Add timer class
2021-09-05 19:08:07 +02:00
Riyyi
eaec2c0e7a
Util: Add singleton class
2021-09-05 10:49:28 +02:00
Riyyi
8a1fb689bd
Initial commit
2021-09-04 21:12:20 +02:00