[llvm-commits] CVS: llvm/include/llvm/Support/Streams.h
Bill Wendling
isanbard at gmail.com
Fri Nov 17 01:51:38 PST 2006
Changes in directory llvm/include/llvm/Support:
Streams.h added (r1.1)
---
Log message:
Added wrappers for the std::cerr/std::cout objects. The wrappers will
soon replace all uses of those objects.
---
Diffs of the changes: (+47 -0)
Streams.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 47 insertions(+)
Index: llvm/include/llvm/Support/Streams.h
diff -c /dev/null llvm/include/llvm/Support/Streams.h:1.1
*** /dev/null Fri Nov 17 03:51:32 2006
--- llvm/include/llvm/Support/Streams.h Fri Nov 17 03:51:22 2006
***************
*** 0 ****
--- 1,47 ----
+ //===- llvm/Support/Streams.h - Wrappers for iostreams ----------*- C++ -*-===//
+ //
+ // The LLVM Compiler Infrastructure
+ //
+ // This file was developed by Bill Wendling and is distributed under the
+ // University of Illinois Open Source License. See LICENSE.TXT for details.
+ //
+ //===----------------------------------------------------------------------===//
+ //
+ // 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.
+ //
+ //===----------------------------------------------------------------------===//
+
+ #ifndef LLVM_SUPPORT_STREAMS_H
+ #define LLVM_SUPPORT_STREAMS_H
+
+ #include <ostream> // Doesn't have static d'tors!!
+
+ 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.
+ ///
+ class llvm_ostream {
+ std::ostream* Stream;
+ public:
+ llvm_ostream() : Stream(0) {}
+ llvm_ostream(std::ostream &OStream) : Stream(&OStream) {}
+
+ template <typename Ty>
+ llvm_ostream &operator << (const Ty &Thing) {
+ if (Stream) *Stream << Thing;
+ return *this;
+ }
+
+ bool operator == (const std::ostream &OS) { return &OS == Stream; }
+ };
+
+ extern llvm_ostream llvm_null;
+ extern llvm_ostream llvm_cout;
+ extern llvm_ostream llvm_cerr;
+
+ } // End llvm namespace
+
+ #endif
More information about the llvm-commits
mailing list