diff options
-rw-r--r-- | include/llvm/Support/raw_ostream.h | 16 | ||||
-rw-r--r-- | lib/Support/raw_ostream.cpp | 17 |
2 files changed, 33 insertions, 0 deletions
diff --git a/include/llvm/Support/raw_ostream.h b/include/llvm/Support/raw_ostream.h index aeeb7e3abc..4c7338eac4 100644 --- a/include/llvm/Support/raw_ostream.h +++ b/include/llvm/Support/raw_ostream.h @@ -327,6 +327,9 @@ raw_ostream &outs(); /// Use it like: errs() << "foo" << "bar"; raw_ostream &errs(); +/// nulls() - This returns a reference to a raw_ostream which simply discards +/// output. +raw_ostream &nulls(); //===----------------------------------------------------------------------===// // Output Stream Adaptors @@ -399,6 +402,19 @@ public: uint64_t tell(); }; +/// raw_null_ostream - A raw_ostream that discards all output. +class raw_null_ostream : public raw_ostream { + /// write_impl - See raw_ostream::write_impl. + virtual void write_impl(const char *Ptr, size_t size); + + /// current_pos - Return the current position within the stream, not + /// counting the bytes currently in the buffer. + virtual uint64_t current_pos(); + +public: + explicit raw_null_ostream() {} +}; + } // end llvm namespace #endif diff --git a/lib/Support/raw_ostream.cpp b/lib/Support/raw_ostream.cpp index 397d2967c2..3cec18b442 100644 --- a/lib/Support/raw_ostream.cpp +++ b/lib/Support/raw_ostream.cpp @@ -375,6 +375,12 @@ raw_ostream &llvm::errs() { return S; } +/// nulls() - This returns a reference to a raw_ostream which discards output. +raw_ostream &llvm::nulls() { + static raw_null_ostream S; + return S; +} + //===----------------------------------------------------------------------===// // raw_os_ostream //===----------------------------------------------------------------------===// @@ -422,3 +428,14 @@ uint64_t raw_svector_ostream::current_pos() { return OS.size(); } uint64_t raw_svector_ostream::tell() { return OS.size() + GetNumBytesInBuffer(); } + +//===----------------------------------------------------------------------===// +// raw_null_ostream +//===----------------------------------------------------------------------===// + +void raw_null_ostream::write_impl(const char *Ptr, size_t Size) { +} + +uint64_t raw_null_ostream::current_pos() { + return 0; +} |