From c5a227ddd1fa09cd66e4fd1c0473be5c2b4f8f32 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 22 Aug 2009 23:10:29 +0000 Subject: [PATCH] add a raw_ostream::indent method, to be used like: OS.indent(i) << "whatever"; people seem to like indenting things ;-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79784 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/raw_ostream.h | 4 ++++ lib/Support/raw_ostream.cpp | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/llvm/Support/raw_ostream.h b/include/llvm/Support/raw_ostream.h index a9d1b5a7a25..c9a8787429f 100644 --- a/include/llvm/Support/raw_ostream.h +++ b/include/llvm/Support/raw_ostream.h @@ -230,6 +230,10 @@ public: // Formatted output, see the format() function in Support/Format.h. raw_ostream &operator<<(const format_object_base &Fmt); + /// indent - Insert 'NumSpaces' spaces. + raw_ostream &indent(unsigned NumSpaces); + + /// Changes the foreground color of text that will be output from this point /// forward. /// @param colors ANSI color to use, the special SAVEDCOLOR can be used to diff --git a/lib/Support/raw_ostream.cpp b/lib/Support/raw_ostream.cpp index 917e6be6699..94507bd67ba 100644 --- a/lib/Support/raw_ostream.cpp +++ b/lib/Support/raw_ostream.cpp @@ -289,6 +289,23 @@ raw_ostream &raw_ostream::operator<<(const format_object_base &Fmt) { } } +/// indent - Insert 'NumSpaces' spaces. +raw_ostream &raw_ostream::indent(unsigned NumSpaces) { + const char *Spaces = " "; + + // Usually the indentation is small, handle it with a fastpath. + if (NumSpaces <= 16) + return write(Spaces, NumSpaces); + + while (NumSpaces) { + unsigned NumToWrite = std::min(NumSpaces, 16U); + write(Spaces, NumToWrite); + NumSpaces -= NumToWrite; + } + return *this; +} + + //===----------------------------------------------------------------------===// // Formatted Output //===----------------------------------------------------------------------===//