From 53674361efd42f9dd7c4d293132106839ab3b893 Mon Sep 17 00:00:00 2001 From: David Greene Date: Thu, 9 Jul 2009 23:43:41 +0000 Subject: [PATCH] Add some hooks that a redesigned AsmStream needs to do its job. These allow derived classes to examine the stream buffer before it's flushed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75199 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/raw_ostream.h | 16 ++++++++++++++++ lib/Support/raw_ostream.cpp | 1 + 2 files changed, 17 insertions(+) diff --git a/include/llvm/Support/raw_ostream.h b/include/llvm/Support/raw_ostream.h index 8242f04e23c..22fb38485d7 100644 --- a/include/llvm/Support/raw_ostream.h +++ b/include/llvm/Support/raw_ostream.h @@ -44,6 +44,22 @@ private: char *OutBufStart, *OutBufEnd, *OutBufCur; bool Unbuffered; +protected: + /// CurBufPtr - Get a pointer to the current location in the buffer. + /// + char *CurBufPtr(void) { return OutBufCur; } + /// StartBufPtr - Get a pointer to the start of the buffer + /// + char *StartBufPtr(void) { return OutBufStart; } + /// EndBufPtr - Get a pointer to the end of the buffer + /// + char *EndBufPtr(void) { return OutBufEnd; } + + /// AboutToFlush- Called when the buffer is about to be flushed, + /// allowing derived classes to take some action. + /// + virtual void AboutToFlush(void) {}; + public: // color order matches ANSI escape sequence, don't change enum Colors { diff --git a/lib/Support/raw_ostream.cpp b/lib/Support/raw_ostream.cpp index 42e6fda97ba..403300f1bc4 100644 --- a/lib/Support/raw_ostream.cpp +++ b/lib/Support/raw_ostream.cpp @@ -120,6 +120,7 @@ raw_ostream &raw_ostream::operator<<(const void *P) { void raw_ostream::flush_nonempty() { assert(OutBufCur > OutBufStart && "Invalid call to flush_nonempty."); + AboutToFlush(); write_impl(OutBufStart, OutBufCur - OutBufStart); OutBufCur = OutBufStart; }