aboutsummaryrefslogtreecommitdiff
path: root/tools/lldb-test/FormatUtil.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-test/FormatUtil.h')
-rw-r--r--tools/lldb-test/FormatUtil.h27
1 files changed, 15 insertions, 12 deletions
diff --git a/tools/lldb-test/FormatUtil.h b/tools/lldb-test/FormatUtil.h
index f22ee41662ee..598d4c5440f5 100644
--- a/tools/lldb-test/FormatUtil.h
+++ b/tools/lldb-test/FormatUtil.h
@@ -26,27 +26,36 @@ class LinePrinter {
int CurrentIndent;
public:
+ class Line {
+ LinePrinter *P;
+
+ public:
+ Line(LinePrinter &P) : P(&P) { P.OS.indent(P.CurrentIndent); }
+ ~Line();
+
+ Line(Line &&RHS) : P(RHS.P) { RHS.P = nullptr; }
+ void operator=(Line &&) = delete;
+
+ operator llvm::raw_ostream &() { return P->OS; }
+ };
+
LinePrinter(int Indent, llvm::raw_ostream &Stream);
void Indent(uint32_t Amount = 0);
void Unindent(uint32_t Amount = 0);
void NewLine();
- void printLine(const llvm::Twine &T);
- void print(const llvm::Twine &T);
+ void printLine(const llvm::Twine &T) { line() << T; }
template <typename... Ts> void formatLine(const char *Fmt, Ts &&... Items) {
printLine(llvm::formatv(Fmt, std::forward<Ts>(Items)...));
}
- template <typename... Ts> void format(const char *Fmt, Ts &&... Items) {
- print(llvm::formatv(Fmt, std::forward<Ts>(Items)...));
- }
void formatBinary(llvm::StringRef Label, llvm::ArrayRef<uint8_t> Data,
uint32_t StartOffset);
void formatBinary(llvm::StringRef Label, llvm::ArrayRef<uint8_t> Data,
uint64_t BaseAddr, uint32_t StartOffset);
- llvm::raw_ostream &getStream() { return OS; }
+ Line line() { return Line(*this); }
int getIndentLevel() const { return CurrentIndent; }
};
@@ -64,12 +73,6 @@ struct AutoIndent {
uint32_t Amount = 0;
};
-template <class T>
-inline llvm::raw_ostream &operator<<(LinePrinter &Printer, const T &Item) {
- Printer.getStream() << Item;
- return Printer.getStream();
-}
-
} // namespace lldb_private
#endif