diff options
author | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-01-18 15:30:18 +0100 |
---|---|---|
committer | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2015-01-18 15:30:18 +0100 |
commit | 8ab0709045667f8e1a67a9981c619980c9aebd1a (patch) | |
tree | f39812b3d216566de7c4dcdaacc7c607aa7e646c /src/core/common/VariantReader.cpp | |
parent | cd55519130c5f91d95107b3b1e1a8203caa5008a (diff) | |
parent | 372c67e0844654362fc7d440b0b4a31500a6d02a (diff) |
Merge branch 'master' of somweyr.de:ousia
Diffstat (limited to 'src/core/common/VariantReader.cpp')
-rw-r--r-- | src/core/common/VariantReader.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/core/common/VariantReader.cpp b/src/core/common/VariantReader.cpp index faad40c..600fd9b 100644 --- a/src/core/common/VariantReader.cpp +++ b/src/core/common/VariantReader.cpp @@ -583,6 +583,7 @@ std::pair<bool, Variant> VariantReader::parseGenericToken( return std::make_pair(true, n.doubleValue()); } } + reader.resetPeek(); } // Try to parse an object @@ -618,8 +619,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)); } } |