diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-15 00:21:03 +0100 |
---|---|---|
committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-15 00:21:03 +0100 |
commit | 5b68f46580824d47ce948ac349d43f8aa8647ec9 (patch) | |
tree | 1773c6d7b8d65e790cc99b3b531318459fdad269 /src/core/common | |
parent | 89c88d33277163bda7aa3d8d8fab1529ce6b2504 (diff) |
Added possibility to construct Arguments in a mode in which no validation is performed.
Diffstat (limited to 'src/core/common')
-rw-r--r-- | src/core/common/Argument.cpp | 15 | ||||
-rw-r--r-- | src/core/common/Argument.hpp | 13 |
2 files changed, 26 insertions, 2 deletions
diff --git a/src/core/common/Argument.cpp b/src/core/common/Argument.cpp index ac1edf4..6bf2917 100644 --- a/src/core/common/Argument.cpp +++ b/src/core/common/Argument.cpp @@ -184,6 +184,9 @@ bool Argument::validate(Variant &var, Logger &logger) const /* Class Arguments */ +// Instantiations of the "None" arguments +const Arguments Arguments::None; + static std::unordered_map<std::string, size_t> buildArgumentNames( std::initializer_list<Argument> arguments) { @@ -205,12 +208,17 @@ static std::unordered_map<std::string, size_t> buildArgumentNames( } Arguments::Arguments(std::initializer_list<Argument> arguments) - : arguments(arguments), names(buildArgumentNames(arguments)) + : arguments(arguments), names(buildArgumentNames(arguments)), valid(true) { } bool Arguments::validateArray(Variant::arrayType &arr, Logger &logger) const { + // Abort if no arguments were explicitly given -- everything is valid + if (!valid) { + return true; + } + Logger nullLogger; // Fetch the number of arguments N and the initial array size n @@ -254,6 +262,11 @@ bool Arguments::validateArray(Variant::arrayType &arr, Logger &logger) const bool Arguments::validateMap(Variant::mapType &map, Logger &logger, bool ignoreUnknown) const { + // Abort if no arguments were explicitly given -- everything is valid + if (!valid) { + return true; + } + Logger nullLogger; // Fetch the number of arguments N diff --git a/src/core/common/Argument.hpp b/src/core/common/Argument.hpp index 78f7ec1..dd652de 100644 --- a/src/core/common/Argument.hpp +++ b/src/core/common/Argument.hpp @@ -402,12 +402,23 @@ private: */ std::unordered_map<std::string, size_t> names; + /** + * Set to true if arguments were explicitly given in the constructor, + * false otherwise. + */ + bool valid; + public: /** + * Static Arguments instance with no explicit arguments set. + */ + static const Arguments None; + + /** * Default constructor. Provides no arguments. */ - Arguments() {}; + Arguments() : valid(false) {}; /** * Constructor of the Arguments class from a list of Argument instances. |