diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-30 18:18:16 +0100 |
---|---|---|
committer | Andreas Stöckel <andreas@somweyr.de> | 2015-01-30 18:18:16 +0100 |
commit | 4d347d87d741ee4efdbd4a1a6c738f47cf877236 (patch) | |
tree | 1c18da4c683267ca5ecdd20b33215498fb196b40 /src | |
parent | 0ed53efd407fb4e5462c3c1f606be90bb3f7241b (diff) |
Added parsing of cardinalities to parseGeneric
Diffstat (limited to 'src')
-rw-r--r-- | src/core/common/VariantReader.cpp | 13 |
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); |