From: Daniel Dunbar Date: Thu, 16 Jul 2009 21:17:53 +0000 (+0000) Subject: Add raw_null_ostream and llvm::nulls(), a raw_ostream that discards output. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=34ccf037fea3d83dcb18f72496775ec4c7dcd3d3;p=oota-llvm.git Add raw_null_ostream and llvm::nulls(), a raw_ostream that discards output. - No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76103 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Support/raw_ostream.h b/include/llvm/Support/raw_ostream.h index aeeb7e3abc4..4c7338eac4c 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 397d2967c22..3cec18b442e 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; +}