From 78a2812538d871a62d90f53ed66d26198876d011 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 23 Aug 2008 22:43:04 +0000 Subject: Add raw_stream adaptors that write into an std::string and SmallVector/SmallString. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55265 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/raw_ostream.h | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'include/llvm/Support/raw_ostream.h') diff --git a/include/llvm/Support/raw_ostream.h b/include/llvm/Support/raw_ostream.h index 9fb5f6cb38..824d209189 100644 --- a/include/llvm/Support/raw_ostream.h +++ b/include/llvm/Support/raw_ostream.h @@ -22,6 +22,8 @@ namespace llvm { class format_object_base; + template + class SmallVectorImpl; /// raw_ostream - This class implements an extremely fast bulk output stream /// that can *only* output to a stream. It does not support seeking, reopening, @@ -192,7 +194,7 @@ raw_ostream &errs(); //===----------------------------------------------------------------------===// -// Bridge Output Streams +// Output Stream Adaptors //===----------------------------------------------------------------------===// /// raw_os_ostream - A raw_ostream that writes to an std::ostream. This is a @@ -208,6 +210,34 @@ public: /// buffer to empty. virtual void flush_impl(); }; + +/// raw_string_ostream - A raw_ostream that writes to an std::string. This is a +/// simple adaptor class. +class raw_string_ostream : public raw_ostream { + std::string &OS; +public: + raw_string_ostream(std::string &O) : OS(O) {} + ~raw_string_ostream(); + + /// flush_impl - The is the piece of the class that is implemented by + /// subclasses. This outputs the currently buffered data and resets the + /// buffer to empty. + virtual void flush_impl(); +}; + +/// raw_svector_ostream - A raw_ostream that writes to an SmallVector or +/// SmallString. This is a simple adaptor class. +class raw_svector_ostream : public raw_ostream { + SmallVectorImpl &OS; +public: + raw_svector_ostream(SmallVectorImpl &O) : OS(O) {} + ~raw_svector_ostream(); + + /// flush_impl - The is the piece of the class that is implemented by + /// subclasses. This outputs the currently buffered data and resets the + /// buffer to empty. + virtual void flush_impl(); +}; } // end llvm namespace -- cgit v1.2.3