summaryrefslogtreecommitdiff
path: root/src/core/common/VariantReader.cpp
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-30 18:18:16 +0100
committerAndreas Stöckel <andreas@somweyr.de>2015-01-30 18:18:16 +0100
commit4d347d87d741ee4efdbd4a1a6c738f47cf877236 (patch)
tree1c18da4c683267ca5ecdd20b33215498fb196b40 /src/core/common/VariantReader.cpp
parent0ed53efd407fb4e5462c3c1f606be90bb3f7241b (diff)
Added parsing of cardinalities to parseGeneric
Diffstat (limited to 'src/core/common/VariantReader.cpp')
-rw-r--r--src/core/common/VariantReader.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/core/common/VariantReader.cpp b/src/core/common/VariantReader.cpp
index 1f13cc1..7403b4a 100644
--- a/src/core/common/VariantReader.cpp
+++ b/src/core/common/VariantReader.cpp
@@ -737,6 +737,19 @@ std::pair<bool, Variant> VariantReader::parseGenericToken(
reader.resetPeek();
}
+ // Try to parse a cardinality
+ if (c == '{') {
+ CharReaderFork readerFork = reader.fork();
+ LoggerFork loggerFork = logger.fork();
+ auto res = parseCardinality(readerFork, logger);
+ if (res.first) {
+ readerFork.commit();
+ loggerFork.commit();
+ return std::make_pair(true, Variant{res.second});
+ }
+ reader.resetPeek();
+ }
+
// Try to parse an object
if (c == '[') {
return parseComplex(reader, logger, 0, ComplexMode::BOTH);