From 4a18d2f1cce981873498d2f0303d84ef3d7ecbf6 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 14 Jul 2009 20:33:33 +0000 Subject: [PATCH] allow default construction of formatted_raw_ostream. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75674 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/FormattedStream.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/include/llvm/Support/FormattedStream.h b/include/llvm/Support/FormattedStream.h index 1c213abe2dc..ecfa4b8ca8c 100644 --- a/include/llvm/Support/FormattedStream.h +++ b/include/llvm/Support/FormattedStream.h @@ -35,7 +35,7 @@ namespace llvm private: /// TheStream - The real stream we output to. /// - raw_ostream &TheStream; + raw_ostream *TheStream; /// DeleteStream - Do we need to delete TheStream in the /// destructor? /// @@ -48,7 +48,7 @@ namespace llvm virtual void write_impl(const char *Ptr, unsigned Size) { ComputeColumn(Ptr, Size); - TheStream.write(Ptr, Size); + TheStream->write(Ptr, Size); } /// current_pos - Return the current position within the stream, @@ -56,7 +56,7 @@ namespace llvm virtual uint64_t current_pos() { // This has the same effect as calling TheStream.current_pos(), // but that interface is private. - return TheStream.tell() - TheStream.GetNumBytesInBuffer(); + return TheStream->tell() - TheStream->GetNumBytesInBuffer(); } /// ComputeColumn - Examine the current output and figure out @@ -75,12 +75,19 @@ namespace llvm /// \param Binary - The file should be opened in binary mode on /// platforms that support this distinction. formatted_raw_ostream(raw_ostream &Stream, bool Delete = false) - : raw_ostream(), TheStream(Stream), DeleteStream(Delete), Column(0) {} + : raw_ostream(), TheStream(&Stream), DeleteStream(Delete), Column(0) {} + explicit formatted_raw_ostream() + : raw_ostream(), TheStream(0), DeleteStream(false), Column(0) {} ~formatted_raw_ostream() { if (DeleteStream) delete &TheStream; } + + void setStream(raw_ostream &Stream, bool Delete = false) { + TheStream = &Stream; + DeleteStream = Delete; + } /// PadToColumn - Align the output to some column number. ///