summaryrefslogtreecommitdiff
path: root/src/core/common/VariantReader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/common/VariantReader.cpp')
-rw-r--r--src/core/common/VariantReader.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/core/common/VariantReader.cpp b/src/core/common/VariantReader.cpp
index faad40c..bded618 100644
--- a/src/core/common/VariantReader.cpp
+++ b/src/core/common/VariantReader.cpp
@@ -618,8 +618,22 @@ std::pair<bool, Variant> VariantReader::parseGenericToken(
v.setMagic(res.second.c_str());
return std::make_pair(res.first, v);
} else {
- return std::make_pair(res.first, Variant{res.second.c_str()});
+ return std::make_pair(res.first, Variant::fromString(res.second));
}
}
+
+std::pair<bool, Variant> VariantReader::parseGenericString(
+ const std::string &str, Logger &logger)
+{
+ CharReader reader{str};
+ LoggerFork loggerFork = logger.fork();
+ std::pair<bool, Variant> res =
+ parseGenericToken(reader, loggerFork, std::unordered_set<char>{}, true);
+ if (reader.atEnd()) {
+ loggerFork.commit();
+ return res;
+ }
+ return std::make_pair(true, Variant::fromString(str));
+}
}