diff options
author | Michael J. Spencer <bigcheesegs@gmail.com> | 2013-10-18 22:38:04 +0000 |
---|---|---|
committer | Michael J. Spencer <bigcheesegs@gmail.com> | 2013-10-18 22:38:04 +0000 |
commit | c064a9abff4413fa5fc2fb96fdb78a436e01d18a (patch) | |
tree | 4b9912e8b26869dd9651fb8ceeecde9e8584da0e /llvm/utils/yaml-bench/YAMLBench.cpp | |
parent | 4ba4a5b02ed95c478d4a584775081fa2690d5ee0 (diff) | |
download | bcm5719-llvm-c064a9abff4413fa5fc2fb96fdb78a436e01d18a.tar.gz bcm5719-llvm-c064a9abff4413fa5fc2fb96fdb78a436e01d18a.zip |
[Support][YAML] Add support for accessing tags and tag handle substitution.
llvm-svn: 193004
Diffstat (limited to 'llvm/utils/yaml-bench/YAMLBench.cpp')
-rw-r--r-- | llvm/utils/yaml-bench/YAMLBench.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/llvm/utils/yaml-bench/YAMLBench.cpp b/llvm/utils/yaml-bench/YAMLBench.cpp index eef4a725a1a..f20a4ccc819 100644 --- a/llvm/utils/yaml-bench/YAMLBench.cpp +++ b/llvm/utils/yaml-bench/YAMLBench.cpp @@ -63,6 +63,20 @@ static raw_ostream &operator <<(raw_ostream &os, const indent &in) { return os; } +/// \brief Pretty print a tag by replacing tag:yaml.org,2002: with !!. +static std::string prettyTag(yaml::Node *N) { + std::string Tag = N->getVerbatimTag(); + if (StringRef(Tag).startswith("tag:yaml.org,2002:")) { + std::string Ret = "!!"; + Ret += StringRef(Tag).substr(18); + return std::move(Ret); + } + std::string Ret = "!<"; + Ret += Tag; + Ret += ">"; + return Ret; +} + static void dumpNode( yaml::Node *n , unsigned Indent = 0 , bool SuppressFirstIndent = false) { @@ -76,9 +90,9 @@ static void dumpNode( yaml::Node *n if (yaml::ScalarNode *sn = dyn_cast<yaml::ScalarNode>(n)) { SmallString<32> Storage; StringRef Val = sn->getValue(Storage); - outs() << "!!str \"" << yaml::escape(Val) << "\""; + outs() << prettyTag(n) << " \"" << yaml::escape(Val) << "\""; } else if (yaml::SequenceNode *sn = dyn_cast<yaml::SequenceNode>(n)) { - outs() << "!!seq [\n"; + outs() << prettyTag(n) << " [\n"; ++Indent; for (yaml::SequenceNode::iterator i = sn->begin(), e = sn->end(); i != e; ++i) { @@ -88,7 +102,7 @@ static void dumpNode( yaml::Node *n --Indent; outs() << indent(Indent) << "]"; } else if (yaml::MappingNode *mn = dyn_cast<yaml::MappingNode>(n)) { - outs() << "!!map {\n"; + outs() << prettyTag(n) << " {\n"; ++Indent; for (yaml::MappingNode::iterator i = mn->begin(), e = mn->end(); i != e; ++i) { @@ -104,7 +118,7 @@ static void dumpNode( yaml::Node *n } else if (yaml::AliasNode *an = dyn_cast<yaml::AliasNode>(n)){ outs() << "*" << an->getName(); } else if (dyn_cast<yaml::NullNode>(n)) { - outs() << "!!null null"; + outs() << prettyTag(n) << " null"; } } |