From c654793a3a513a9c8ffcd1aa9c3962b6a72e61bd Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Mon, 20 Oct 2014 23:22:56 +0000 Subject: started to implement Function class which represents functions and methods, both on the host and the client side git-svn-id: file:///var/local/svn/basicwriter@73 daaaf23c-2e50-4459-9457-1e69db5a47bf --- src/core/script/Variant.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src/core/script/Variant.cpp') diff --git a/src/core/script/Variant.cpp b/src/core/script/Variant.cpp index a379735..b70f361 100644 --- a/src/core/script/Variant.cpp +++ b/src/core/script/Variant.cpp @@ -21,6 +21,49 @@ namespace ousia { namespace script { +/* Class VariantTypeException */ + +static const char* getVariantTypeName(VariantType type) +{ + switch (type) { + case VariantType::null: + return "null"; + case VariantType::boolean: + return "boolean"; + case VariantType::integer: + return "integer"; + case VariantType::number: + return "number"; + case VariantType::string: + return "string"; + case VariantType::array: + return "array"; + case VariantType::map: + return "map"; + case VariantType::function: + return "function"; + case VariantType::object: + return "object"; + case VariantType::buffer: + return "buffer"; + } + return "unknown"; +} + +VariantTypeException::VariantTypeException(VariantType actualType, + VariantType requestedType) : + msg(std::string("Cannot get value of variant of type \"") + + getVariantTypeName(actualType) + + std::string("\" as \"") + getVariantTypeName(requestedType)), + actualType(actualType), requestedType(requestedType) {} + +const char* VariantTypeException::what() const noexcept +{ + return msg.c_str(); +} + +/* Global scope operator */ + std::ostream& operator<< (std::ostream& os, const Variant &v) { switch (v.type) { -- cgit v1.2.3