Riyyi
875a49332c
Test: Add Shell and System test cases
3 years ago
Riyyi
cf1da45b78
Test: Update macro output formatting
3 years ago
Riyyi
cc7252f94d
Util: Change operators to the evaluated order
3 years ago
Riyyi
26ceceeba5
Util: Change System to direct-list-initialization
3 years ago
Riyyi
9926849640
Util: Add class Shell for executing more basic OS shell commands
3 years ago
Riyyi
496e3e4c88
Util: Do not modify the output result
3 years ago
Riyyi
06367a05b8
Util: Add additional System operator support
3 years ago
Riyyi
2fca315557
Util: Add support for stdin and | piping
...
In order to accomplish this, the arguments have to be stored in the
object. Because () evaluation order is not defined in the spec.
Because arguments have to be stored now, char pointers no longer work
and std::strings are stored instead. Systems object also cant be
returned as a reference anymore because you need to be able to know
which is the lhs and which is the rhs in the operator overloads.
3 years ago
Riyyi
70ccdee8c2
Util: Add class System for executing OS shell commands
3 years ago
Riyyi
3efe74582f
Util: Add ArgParser missing argument error message
3 years ago
Riyyi
bb29919f02
Util: Simplify the logic of the long option parsing function
3 years ago
Riyyi
2ac6d24520
Util: Add type error messages to ArgParser option arguments
3 years ago
Riyyi
648c0f8c85
Util: Rename ArgParser error types
3 years ago
Riyyi
35e2c2de48
Util: Rename printOptionError -> printError
3 years ago
Riyyi
ffcde408e1
Util: Add invalid argument type error message to ArgParser
3 years ago
Riyyi
9c918c6555
Util: Add ArgParser unhandled argument error type and messages
3 years ago
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.
3 years ago
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.
3 years ago
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.
3 years ago
Riyyi
8ce4643518
Test: Add optional argument test cases
3 years ago
Riyyi
b6bfcbdc33
Util: Support for optional arguments in ArgParser
3 years ago
Riyyi
ca95ef1cf1
Util: Add simple validation to ArgParser number conversions
3 years ago
Riyyi
6efa314c38
Util: Move ArgParser private function implementations to the bottom
3 years ago
Riyyi
4e30b58305
Util: Switch ArgParser option/argument creation to list initialization
3 years ago
Riyyi
0fffa86ba0
Util: Deduplicate ArgParser accept value lambdas
3 years ago
Riyyi
9cecb8602f
Util: Add more ArgParser argument types
3 years ago
Riyyi
9796bc9e86
Test: Add argument test cases
3 years ago
Riyyi
67fd31a746
Util: Add argument parsing to ArgParser
3 years ago
Riyyi
952ba588f7
Test: Check non existent arguments
3 years ago
Riyyi
dc4fcc10ce
Util+Test: Implement exit on first error in main ArgParser loop
3 years ago
Riyyi
f021cf0e15
Util: Fix parsing for exit on first error setting
3 years ago
Riyyi
3f1ced53f6
Util: Rename variable to plural
3 years ago
Riyyi
1c887bbaf7
Test: Print expect macros to stderr
...
Also now properly reporting test case failure.
3 years ago
Riyyi
f92b75a463
Util+Test: Add setting to stop parsing on first non-option
3 years ago
Riyyi
a70d67f8fa
Util: Don't try to parse a '--' parameter
3 years ago
Riyyi
072d805344
Util+Test: Add more ArgParser option types
3 years ago
Riyyi
98dec3e51a
Util: Handle accepting values return state in ArgParser
3 years ago
Riyyi
1366bf14b1
Util+Test: Change size_type to size_t
...
The specialized size_type type is just an alias for size_t.
3 years ago
Riyyi
68cdd625b4
Util+Test: Add parsing of multi-value options
3 years ago
Riyyi
a5c422a2cc
Util+Test: Add support for '--' to enable non-option mode
3 years ago
Riyyi
04482fb10d
Util: Return the result of the option parsing
3 years ago
Riyyi
e813ab0f73
Test: Add test cases for string options
3 years ago
Riyyi
d423fec3c5
Test: Add "not equal" macro
3 years ago
Riyyi
a932079f21
Test: Improve suite print formatting
3 years ago
Riyyi
2b2bd7ff78
Util: Add fancyprint function
3 years ago
Riyyi
f6ce86dba7
Util: Fix typo in timer
3 years ago
Riyyi
93b5ac609e
Test: Capitalize function type
3 years ago
Riyyi
422224bf1c
Test: Implement timer
3 years ago
Riyyi
86aeae3c8e
Util: Add timer class
3 years ago
Riyyi
17bceeb619
Test: Add ArgParser tests
3 years ago