diff options
Diffstat (limited to 'src/core/common/Variant.cpp')
-rw-r--r-- | src/core/common/Variant.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/core/common/Variant.cpp b/src/core/common/Variant.cpp index c5c7b80..44a77d8 100644 --- a/src/core/common/Variant.cpp +++ b/src/core/common/Variant.cpp @@ -25,6 +25,7 @@ #include "Variant.hpp" #include "VariantConverter.hpp" #include "VariantWriter.hpp" +#include "Rtti.hpp" namespace ousia { @@ -69,6 +70,8 @@ const char *Variant::getTypeName(VariantType type) return "unknown"; } +/* Conversion functions */ + Variant::boolType Variant::toBool() const { ExceptionLogger logger; @@ -101,6 +104,34 @@ Variant::stringType Variant::toString(bool escape) const return res.asString(); } +/* Type management */ + +const RttiType& Variant::getRttiType() const +{ + switch (type) { + case VariantType::NULLPTR: + return RttiTypes::Nullptr; + case VariantType::BOOL: + return RttiTypes::Bool; + case VariantType::INT: + return RttiTypes::Int; + case VariantType::DOUBLE: + return RttiTypes::Double; + case VariantType::STRING: + case VariantType::MAGIC: + return RttiTypes::String; + case VariantType::ARRAY: + return RttiTypes::Array; + case VariantType::MAP: + return RttiTypes::Map; + case VariantType::FUNCTION: + return RttiTypes::Function; + case VariantType::OBJECT: + return asObject()->type(); + } + return RttiTypes::None; +} + /* Output stream operators */ std::ostream &operator<<(std::ostream &os, const Variant &v) |