Use setStream infomatted_raw_ostream's constructor, to reduce code
authorDan Gohman <gohman@apple.com>
Thu, 16 Jul 2009 15:37:26 +0000 (15:37 +0000)
committerDan Gohman <gohman@apple.com>
Thu, 16 Jul 2009 15:37:26 +0000 (15:37 +0000)
duplication. Also, make setStream honor the old DeleteStream flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76075 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/FormattedStream.h

index bd330dcfb0e36afdc68ce831b409f21411a0b3dc..dc30cdb5fe70dc049c3e63b7581df5bda4e49c53 100644 (file)
@@ -77,15 +77,8 @@ namespace llvm
     /// underneath it.
     ///
     formatted_raw_ostream(raw_ostream &Stream, bool Delete = false) 
-      : raw_ostream(), TheStream(&Stream), DeleteStream(Delete), Column(0) {
-      // This formatted_raw_ostream inherits from raw_ostream, so it'll do its
-      // own buffering, and it doesn't need or want TheStream to do another
-      // layer of buffering underneath. Resize the buffer to what TheStream
-      // had been using, and tell TheStream not to do its own buffering.
-      TheStream->flush();
-      if (size_t BufferSize = TheStream->GetNumBytesInBuffer())
-        SetBufferSize(BufferSize);
-      TheStream->SetUnbuffered();
+      : raw_ostream(), TheStream(0), DeleteStream(false), Column(0) {
+      setStream(Stream, Delete);
     }
     explicit formatted_raw_ostream()
       : raw_ostream(), TheStream(0), DeleteStream(false), Column(0) {}
@@ -96,10 +89,16 @@ namespace llvm
     }
     
     void setStream(raw_ostream &Stream, bool Delete = false) {
+      if (DeleteStream)
+        delete TheStream;
+
       TheStream = &Stream;
       DeleteStream = Delete;
 
-      // Avoid double-buffering, as above.
+      // This formatted_raw_ostream inherits from raw_ostream, so it'll do its
+      // own buffering, and it doesn't need or want TheStream to do another
+      // layer of buffering underneath. Resize the buffer to what TheStream
+      // had been using, and tell TheStream not to do its own buffering.
       TheStream->flush();
       if (size_t BufferSize = TheStream->GetNumBytesInBuffer())
         SetBufferSize(BufferSize);