From 1e6033ca33c74a305457d5df87a738ee1b43fe79 Mon Sep 17 00:00:00 2001 From: Nick Kledzik Date: Thu, 14 Nov 2013 00:59:59 +0000 Subject: Add simple support for tags in YAML I/O llvm-svn: 194644 --- llvm/lib/Support/YAMLTraits.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'llvm/lib/Support') diff --git a/llvm/lib/Support/YAMLTraits.cpp b/llvm/lib/Support/YAMLTraits.cpp index 19eaed1ac7a..415424ebed2 100644 --- a/llvm/lib/Support/YAMLTraits.cpp +++ b/llvm/lib/Support/YAMLTraits.cpp @@ -81,6 +81,16 @@ bool Input::setCurrentDocument() { void Input::nextDocument() { ++DocIterator; } + +bool Input::mapTag(StringRef Tag, bool Default) { + StringRef foundTag = CurrentNode->_node->getVerbatimTag(); + if (foundTag.empty()) { + // If no tag found and 'Tag' is the default, say it was found. + return Default; + } + // Return true iff found tag matches supplied tag. + return Tag.equals(foundTag); +} void Input::beginMapping() { if (EC) @@ -381,6 +391,14 @@ void Output::beginMapping() { NeedsNewLine = true; } +bool Output::mapTag(StringRef Tag, bool Use) { + if (Use) { + this->output(" "); + this->output(Tag); + } + return Use; +} + void Output::endMapping() { StateStack.pop_back(); } -- cgit v1.2.3