From: Dan Gohman Date: Thu, 16 Jul 2009 15:37:26 +0000 (+0000) Subject: Use setStream infomatted_raw_ostream's constructor, to reduce code X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=6d53f55291c8541a508a8c26d847b942196f6f1c;p=oota-llvm.git Use setStream infomatted_raw_ostream's constructor, to reduce code 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 --- diff --git a/include/llvm/Support/FormattedStream.h b/include/llvm/Support/FormattedStream.h index bd330dcfb0e..dc30cdb5fe7 100644 --- a/include/llvm/Support/FormattedStream.h +++ b/include/llvm/Support/FormattedStream.h @@ -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);