summaryrefslogtreecommitdiff
path: root/src/core/common/VariantConverter.cpp
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-12 19:47:43 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-12 19:47:43 +0100
commitfa387f9bef0d1a70a4b40c28c5cf9d661c421f73 (patch)
treec1857d0d7fc0a8db8c1f3a841913b1f496d8e661 /src/core/common/VariantConverter.cpp
parent2b15fcab4b81fa8a854e724c48ee9c771fb126f8 (diff)
parent55f943ba1b31542157b984b5955b91261c280f46 (diff)
Merge branch 'master' of somweyr.de:ousia
Conflicts: application/src/core/model/Document.hpp
Diffstat (limited to 'src/core/common/VariantConverter.cpp')
-rw-r--r--src/core/common/VariantConverter.cpp28
1 files changed, 11 insertions, 17 deletions
diff --git a/src/core/common/VariantConverter.cpp b/src/core/common/VariantConverter.cpp
index 1f5f514..1c23c43 100644
--- a/src/core/common/VariantConverter.cpp
+++ b/src/core/common/VariantConverter.cpp
@@ -243,8 +243,11 @@ bool VariantConverter::toString(Variant &var, Logger &logger, Mode mode)
// Print object address and type
Variant::objectType obj = var.asObject();
std::stringstream ss;
- ss << "<object " << obj.get() << " (" << obj->type().name << ")"
- << ">";
+ ss << "<object " << obj.get();
+ if (obj.get() != nullptr) {
+ ss << " (" << obj->type().name << ")";
+ }
+ ss << ">";
var = ss.str().c_str();
return true;
}
@@ -290,11 +293,7 @@ bool VariantConverter::toArray(Variant &var, const RttiType &innerType,
for (Variant &v : var.asArray()) {
res = convert(v, innerType, RttiTypes::None, logger, mode) & res;
}
-
- // Return on successful conversion, otherwise output the default value
- if (res) {
- return true;
- }
+ return res;
}
// No conversion possible, assign the default value and log an error
@@ -321,11 +320,7 @@ bool VariantConverter::toMap(Variant &var, const RttiType &innerType,
res = convert(e.second, innerType, RttiTypes::None, logger, mode) &
res;
}
-
- // Return on successful conversion, otherwise output the default value
- if (res) {
- return true;
- }
+ return res;
}
// No conversion possible, assign the default value and log an error
@@ -341,9 +336,8 @@ bool VariantConverter::toFunction(Variant &var, Logger &logger)
}
// No conversion possible, assign the default value and log an error
- logger.error(msgUnexpectedType(var, VariantType::MAP));
- var.setFunction(std::shared_ptr<Function>{new Method<void>([](
- const Variant::arrayType &args, void *thisRef) { return Variant{}; })});
+ logger.error(msgUnexpectedType(var, VariantType::FUNCTION));
+ var.setFunction(std::shared_ptr<Function>{new FunctionStub()});
return false;
}
@@ -383,7 +377,7 @@ bool VariantConverter::convert(Variant &var, const RttiType &type,
// obviously asked for a managed object.
if (!var.isObject()) {
logger.error(msgUnexpectedType(var, VariantType::OBJECT));
- var.setNull();
+ var.setObject(nullptr);
return false;
}
@@ -391,7 +385,7 @@ bool VariantConverter::convert(Variant &var, const RttiType &type,
if (!var.getRttiType().isa(type)) {
logger.error(std::string("Expected object of type ") + type.name +
" but got object of type " + var.getRttiType().name);
- var.setNull();
+ var.setObject(nullptr);
return false;
}
return true;