Changes in directory llvm/include/llvm/Support:
Casting.h updated: 1.16 -> 1.17 ConstantRange.h updated: 1.10 -> 1.11 Debug.h updated: 1.11 -> 1.12 GraphWriter.h updated: 1.31 -> 1.32 PassNameParser.h updated: 1.15 -> 1.16 Streams.h updated: 1.4 -> 1.5 --- Log message: Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are now cerr, cout, and NullStream resp. --- Diffs of the changes: (+47 -31) Casting.h | 4 ++-- ConstantRange.h | 2 +- Debug.h | 4 ++-- GraphWriter.h | 10 +++++----- PassNameParser.h | 4 ++-- Streams.h | 54 +++++++++++++++++++++++++++++++++++------------------- 6 files changed, 47 insertions(+), 31 deletions(-) Index: llvm/include/llvm/Support/Casting.h diff -u llvm/include/llvm/Support/Casting.h:1.16 llvm/include/llvm/Support/Casting.h:1.17 --- llvm/include/llvm/Support/Casting.h:1.16 Fri Nov 17 03:52:49 2006 +++ llvm/include/llvm/Support/Casting.h Wed Dec 6 19:30:31 2006 @@ -245,13 +245,13 @@ struct foo { void ext() const; /* static bool classof(const bar *X) { - llvm_cerr << "Classof: " << X << "\n"; + cerr << "Classof: " << X << "\n"; return true; }*/ }; template <> inline bool isa_impl<foo,bar>(const bar &Val) { - llvm_cerr << "Classof: " << &Val << "\n"; + cerr << "Classof: " << &Val << "\n"; return true; } Index: llvm/include/llvm/Support/ConstantRange.h diff -u llvm/include/llvm/Support/ConstantRange.h:1.10 llvm/include/llvm/Support/ConstantRange.h:1.11 --- llvm/include/llvm/Support/ConstantRange.h:1.10 Tue Nov 28 16:21:29 2006 +++ llvm/include/llvm/Support/ConstantRange.h Wed Dec 6 19:30:31 2006 @@ -141,7 +141,7 @@ /// print - Print out the bounds to a stream... /// - void print(llvm_ostream &OS) const { + void print(OStream &OS) const { if (OS.stream()) print(*OS.stream()); } void print(std::ostream &OS) const; Index: llvm/include/llvm/Support/Debug.h diff -u llvm/include/llvm/Support/Debug.h:1.11 llvm/include/llvm/Support/Debug.h:1.12 --- llvm/include/llvm/Support/Debug.h:1.11 Fri Nov 17 03:52:49 2006 +++ llvm/include/llvm/Support/Debug.h Wed Dec 6 19:30:31 2006 @@ -65,10 +65,10 @@ /// places the std::c* I/O streams into one .cpp file and relieves the whole /// program from having to have hundreds of static c'tor/d'tors for them. /// -llvm_ostream getErrorOutputStream(const char *DebugType); +OStream getErrorOutputStream(const char *DebugType); #ifdef NDEBUG -#define DOUT llvm_ostream() +#define DOUT NullStream #else #define DOUT getErrorOutputStream(DEBUG_TYPE) #endif Index: llvm/include/llvm/Support/GraphWriter.h diff -u llvm/include/llvm/Support/GraphWriter.h:1.31 llvm/include/llvm/Support/GraphWriter.h:1.32 --- llvm/include/llvm/Support/GraphWriter.h:1.31 Fri Nov 17 03:52:49 2006 +++ llvm/include/llvm/Support/GraphWriter.h Wed Dec 6 19:30:31 2006 @@ -247,16 +247,16 @@ std::string ErrMsg; sys::Path Filename = sys::Path::GetTemporaryDirectory(&ErrMsg); if (Filename.isEmpty()) { - llvm_cerr << "Error: " << ErrMsg << "\n"; + cerr << "Error: " << ErrMsg << "\n"; return Filename; } Filename.appendComponent(Name + ".dot"); if (Filename.makeUnique(true,&ErrMsg)) { - llvm_cerr << "Error: " << ErrMsg << "\n"; + cerr << "Error: " << ErrMsg << "\n"; return sys::Path(); } - llvm_cerr << "Writing '" << Filename << "'... "; + cerr << "Writing '" << Filename << "'... "; std::ofstream O(Filename.c_str()); @@ -275,12 +275,12 @@ // Output the end of the graph W.writeFooter(); - llvm_cerr << " done. \n"; + cerr << " done. \n"; O.close(); } else { - llvm_cerr << "error opening file for writing!\n"; + cerr << "error opening file for writing!\n"; Filename.clear(); } Index: llvm/include/llvm/Support/PassNameParser.h diff -u llvm/include/llvm/Support/PassNameParser.h:1.15 llvm/include/llvm/Support/PassNameParser.h:1.16 --- llvm/include/llvm/Support/PassNameParser.h:1.15 Fri Dec 1 17:27:45 2006 +++ llvm/include/llvm/Support/PassNameParser.h Wed Dec 6 19:30:31 2006 @@ -65,8 +65,8 @@ virtual void passRegistered(const PassInfo *P) { if (ignorablePass(P) || !Opt) return; if (findOption(P->getPassArgument()) != getNumOptions()) { - llvm_cerr << "Two passes with the same argument (-" - << P->getPassArgument() << ") attempted to be registered!\n"; + cerr << "Two passes with the same argument (-" + << P->getPassArgument() << ") attempted to be registered!\n"; abort(); } addLiteralOption(P->getPassArgument(), P, P->getPassName()); Index: llvm/include/llvm/Support/Streams.h diff -u llvm/include/llvm/Support/Streams.h:1.4 llvm/include/llvm/Support/Streams.h:1.5 --- llvm/include/llvm/Support/Streams.h:1.4 Tue Nov 28 18:19:40 2006 +++ llvm/include/llvm/Support/Streams.h Wed Dec 6 19:30:31 2006 @@ -7,48 +7,64 @@ // //===----------------------------------------------------------------------===// // -// This file implements a wrapper for the std::cout and std::cerr I/O streams. -// It prevents the need to include <iostream> to each file just to get I/O. +// This file implements a wrapper for the STL I/O streams. It prevents the need +// to include <iostream> in a file just to get I/O. // //===----------------------------------------------------------------------===// #ifndef LLVM_SUPPORT_STREAMS_H #define LLVM_SUPPORT_STREAMS_H -#include <ostream> // Doesn't have static d'tors!! +#include <sstream> namespace llvm { - /// llvm_ostream - Acts like an ostream. It's a wrapper for the std::cerr and - /// std::cout ostreams. However, it doesn't require #including <iostream> in - /// every file, which increases static c'tors & d'tors in the object code. + /// BaseStream - Acts like the STL streams. It's a wrapper for the std::cerr, + /// std::cout, std::cin, etc. streams. However, it doesn't require #including + /// <iostream> in every file (doing so increases static c'tors & d'tors in the + /// object code). /// - class llvm_ostream { - std::ostream* Stream; + template <typename StreamTy> + class BaseStream { + StreamTy *Stream; public: - llvm_ostream() : Stream(0) {} - llvm_ostream(std::ostream &OStream) : Stream(&OStream) {} + BaseStream() : Stream(0) {} + BaseStream(StreamTy &S) : Stream(&S) {} + BaseStream(StreamTy *S) : Stream(S) {} - std::ostream* stream() const { return Stream; } + StreamTy *stream() const { return Stream; } - inline llvm_ostream &operator << (std::ostream& (*Func)(std::ostream&)) { + inline BaseStream &operator << (StreamTy &(*Func)(StreamTy&)) { if (Stream) *Stream << Func; return *this; } - + template <typename Ty> - llvm_ostream &operator << (const Ty &Thing) { + BaseStream &operator << (const Ty &Thing) { if (Stream) *Stream << Thing; return *this; } - bool operator == (const std::ostream &OS) { return &OS == Stream; } - bool operator == (const llvm_ostream &OS) { return OS.Stream == Stream; } + template <typename Ty> + BaseStream &operator >> (const Ty &Thing) { + if (Stream) *Stream >> Thing; + return *this; + } + + bool operator == (const StreamTy &S) { return &S == Stream; } + bool operator != (const StreamTy &S) { return !(*this == S); } + bool operator == (const BaseStream &S) { return S.Stream == Stream; } + bool operator != (const BaseStream &S) { return !(*this == S); } }; - extern llvm_ostream llvm_null; - extern llvm_ostream llvm_cout; - extern llvm_ostream llvm_cerr; + typedef BaseStream<std::ostream> OStream; + typedef BaseStream<std::istream> IStream; + typedef BaseStream<std::stringstream> StringStream; + + extern OStream NullStream; + extern OStream cout; + extern OStream cerr; + extern IStream cin; } // End llvm namespace _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits