mirror of
https://github.com/CLIUtils/CLI11.git
synced 2025-04-29 12:13:52 +00:00
* Adding first draft of Sets Use IsMember now Using IsMember as backend for Set Non-const validator backend Move set tests to set Clearer inits * Drop shortcut Tighten up classes a bit for MSVC Check with GCC 4.8 too * Simpler templates, but more of them Dropping more type safety for older compilers Shortcut string set * Adding shortcut init Making g++ 4.7 docker image happy Fix Clang tidy issue with last commit Adding one more shortcut, adding a couple of tests * Dropping dual pointer versions of code * Smarter shortcut syntax * Adding slighly faster choices * Cleanup to make InMember simpler * Drop choices for now, adding some tests * ValidationError is now always the error from a validator * Support for other types of initializer lists, including enums * Factor out type utilities, single version of IsMember code * Adding a few tests for #224 * Minor cleanup for Validation Error * Adding tests, moved deprecated tests * Docs updates
27 lines
649 B
C++
27 lines
649 B
C++
#include <CLI/CLI.hpp>
|
|
#include <sstream>
|
|
|
|
enum class Level : int { High, Medium, Low };
|
|
|
|
std::istream &operator>>(std::istream &in, Level &level) {
|
|
int i;
|
|
in >> i;
|
|
level = static_cast<Level>(i);
|
|
return in;
|
|
}
|
|
|
|
std::ostream &operator<<(std::ostream &in, const Level &level) { return in << static_cast<int>(level); }
|
|
|
|
int main(int argc, char **argv) {
|
|
CLI::App app;
|
|
|
|
Level level;
|
|
app.add_option("-l,--level", level, "Level settings")
|
|
->check(CLI::IsMember({Level::High, Level::Medium, Level::Low}))
|
|
->type_name("enum/Level in {High=0, Medium=1, Low=2}");
|
|
|
|
CLI11_PARSE(app, argc, argv);
|
|
|
|
return 0;
|
|
}
|