OSDN Git Service

allow default construction of formatted_raw_ostream.
authorChris Lattner <sabre@nondot.org>
Tue, 14 Jul 2009 20:33:33 +0000 (20:33 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 14 Jul 2009 20:33:33 +0000 (20:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75674 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/FormattedStream.h

index 1c213ab..ecfa4b8 100644 (file)
@@ -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.
     ///