]> granicus.if.org Git - llvm/commitdiff
[MS Demangler] Add a helper function to print a Node as a string.
authorZachary Turner <zturner@google.com>
Mon, 17 Dec 2018 16:14:50 +0000 (16:14 +0000)
committerZachary Turner <zturner@google.com>
Mon, 17 Dec 2018 16:14:50 +0000 (16:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@349359 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Demangle/MicrosoftDemangleNodes.h
lib/Demangle/MicrosoftDemangleNodes.cpp

index 1d0b66a7bf41c86b6a69fda67e0e9ce5eb574b4b..1eca6762475a0f502fcee27f39ffadd16648408a 100644 (file)
@@ -235,6 +235,8 @@ struct Node {
 
   virtual void output(OutputStream &OS, OutputFlags Flags) const = 0;
 
+  std::string toString() const;
+
 private:
   NodeKind Kind;
 };
index c57f0cfaaa5ada2459a05f80e20f571ae47b0ac3..930c838753a07adb019bb9a7138038519b109063 100644 (file)
@@ -113,6 +113,14 @@ static void outputCallingConvention(OutputStream &OS, CallingConv CC) {
   }
 }
 
+std::string Node::toString() const {
+  OutputStream OS;
+  initializeOutputStream(nullptr, nullptr, OS, 1024);
+  this->output(OS, llvm::ms_demangle::OF_Default);
+  OS << '\0';
+  return {OS.getBuffer()};
+}
+
 void TypeNode::outputQuals(bool SpaceBefore, bool SpaceAfter) const {}
 
 void PrimitiveTypeNode::outputPre(OutputStream &OS, OutputFlags Flags) const {