diff --git a/src/data/dv.hpp b/src/data/dv.hpp index 94d96453..8070849f 100644 --- a/src/data/dv.hpp +++ b/src/data/dv.hpp @@ -505,6 +505,9 @@ namespace dv { inline bool isNumber() const noexcept { return type == value_type::number; } + inline bool isBoolean() const noexcept { + return type == value_type::boolean; + } }; inline bool is_numeric(const value& val) { diff --git a/src/logic/CommandsInterpreter.cpp b/src/logic/CommandsInterpreter.cpp index d2e5bb03..cc8ff900 100644 --- a/src/logic/CommandsInterpreter.cpp +++ b/src/logic/CommandsInterpreter.cpp @@ -39,6 +39,7 @@ class CommandParser : BasicParser { {"int", ArgType::integer}, {"str", ArgType::string}, {"sel", ArgType::selector}, + {"bool", ArgType::boolean}, {"enum", ArgType::enumvalue}, }; public: @@ -250,6 +251,11 @@ public: return selectorCheck(arg, value); case ArgType::integer: return typeCheck(arg, dv::value_type::integer, value, "integer"); + case ArgType::boolean: + if (!arg->optional) { + throw typeError(arg->name, "boolean", value); + } + return value.isBoolean(); case ArgType::string: if (!value.isString()) { return !arg->optional; diff --git a/src/logic/CommandsInterpreter.hpp b/src/logic/CommandsInterpreter.hpp index af3e54ac..ce9ccaba 100644 --- a/src/logic/CommandsInterpreter.hpp +++ b/src/logic/CommandsInterpreter.hpp @@ -8,7 +8,7 @@ #include "data/dv.hpp" namespace cmd { - enum class ArgType { number, integer, enumvalue, selector, string }; + enum class ArgType { number, integer, enumvalue, selector, boolean, string }; inline std::string argtype_name(ArgType type) { switch (type) { @@ -20,6 +20,8 @@ namespace cmd { return "enumeration"; case ArgType::selector: return "selector"; + case ArgType::boolean: + return "boolean"; case ArgType::string: return "string"; default: