diff options
-rw-r--r-- | llvm/include/llvm/Support/ScopedPrinter.h | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/llvm/include/llvm/Support/ScopedPrinter.h b/llvm/include/llvm/Support/ScopedPrinter.h index 44a196d17b3..f3cf573b4b2 100644 --- a/llvm/include/llvm/Support/ScopedPrinter.h +++ b/llvm/include/llvm/Support/ScopedPrinter.h @@ -302,33 +302,26 @@ ScopedPrinter::printHex<support::ulittle16_t>(StringRef Label, startLine() << Label << ": " << hex(Value) << "\n"; } -struct DictScope { - DictScope(ScopedPrinter &W, StringRef N) : W(W) { - W.startLine() << N << " {\n"; +template<char Open, char Close> +struct DelimitedScope { + DelimitedScope(ScopedPrinter &W, StringRef N) : W(W) { + W.startLine() << N; + if (!N.empty()) + W.getOStream() << ' '; + W.getOStream() << Open << '\n'; W.indent(); } - ~DictScope() { + ~DelimitedScope() { W.unindent(); - W.startLine() << "}\n"; + W.startLine() << Close << '\n'; } ScopedPrinter &W; }; -struct ListScope { - ListScope(ScopedPrinter &W, StringRef N) : W(W) { - W.startLine() << N << " [\n"; - W.indent(); - } - - ~ListScope() { - W.unindent(); - W.startLine() << "]\n"; - } - - ScopedPrinter &W; -}; +using DictScope = DelimitedScope<'{', '}'>; +using ListScope = DelimitedScope<'[', ']'>; } // namespace llvm |