summaryrefslogtreecommitdiff
path: root/include/llvm/Support/FormattedStream.h
diff options
context:
space:
mode:
authorDaniel Malea <daniel.malea@intel.com>2013-05-08 20:29:10 +0000
committerDaniel Malea <daniel.malea@intel.com>2013-05-08 20:29:10 +0000
commitf28e3c501e033f103405c03a4bbf848cb6e67a2a (patch)
tree23bf3846cd345be515c1cc3602909bc9db111b6e /include/llvm/Support/FormattedStream.h
parentb637b9f89e88e8c1ffe147634c1b2b297fb6edeb (diff)
downloadllvm-f28e3c501e033f103405c03a4bbf848cb6e67a2a.tar.gz
llvm-f28e3c501e033f103405c03a4bbf848cb6e67a2a.tar.bz2
llvm-f28e3c501e033f103405c03a4bbf848cb6e67a2a.tar.xz
Add line tracking support to FormattedStream
- previously formatted_raw_ostream tracked columns, now it tracks lines too - used by (upcoming) DebugIR pass to know the line number to connect to each IR instruction git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181463 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/FormattedStream.h')
-rw-r--r--include/llvm/Support/FormattedStream.h26
1 files changed, 17 insertions, 9 deletions
diff --git a/include/llvm/Support/FormattedStream.h b/include/llvm/Support/FormattedStream.h
index 2e4bd5aeca..18ee048396 100644
--- a/include/llvm/Support/FormattedStream.h
+++ b/include/llvm/Support/FormattedStream.h
@@ -16,11 +16,13 @@
#define LLVM_SUPPORT_FORMATTEDSTREAM_H
#include "llvm/Support/raw_ostream.h"
+#include <utility>
namespace llvm {
/// formatted_raw_ostream - A raw_ostream that wraps another one and keeps track
-/// of column position, allowing padding out to specific column boundaries.
+/// of line and column position, allowing padding out to specific column
+/// boundaries and querying the number of lines written to the stream.
///
class formatted_raw_ostream : public raw_ostream {
public:
@@ -44,11 +46,11 @@ private:
///
bool DeleteStream;
- /// ColumnScanned - The current output column of the data that's
+ /// Position - The current output column and line of the data that's
/// been flushed and the portion of the buffer that's been
- /// scanned. The column scheme is zero-based.
+ /// scanned. The line and column scheme is zero-based.
///
- unsigned ColumnScanned;
+ std::pair<unsigned, unsigned> Position;
/// Scanned - This points to one past the last character in the
/// buffer we've scanned.
@@ -66,10 +68,10 @@ private:
return TheStream->tell();
}
- /// ComputeColumn - Examine the given output buffer and figure out which
- /// column we end up in after output.
+ /// ComputePosition - Examine the given output buffer and figure out the new
+ /// position after output.
///
- void ComputeColumn(const char *Ptr, size_t size);
+ void ComputePosition(const char *Ptr, size_t size);
public:
/// formatted_raw_ostream - Open the specified file for
@@ -83,11 +85,11 @@ public:
/// underneath it.
///
formatted_raw_ostream(raw_ostream &Stream, bool Delete = false)
- : raw_ostream(), TheStream(0), DeleteStream(false), ColumnScanned(0) {
+ : raw_ostream(), TheStream(0), DeleteStream(false), Position(0, 0) {
setStream(Stream, Delete);
}
explicit formatted_raw_ostream()
- : raw_ostream(), TheStream(0), DeleteStream(false), ColumnScanned(0) {
+ : raw_ostream(), TheStream(0), DeleteStream(false), Position(0, 0) {
Scanned = 0;
}
@@ -122,6 +124,12 @@ public:
/// \param NewCol - The column to move to.
formatted_raw_ostream &PadToColumn(unsigned NewCol);
+ /// getColumn - Return the column number
+ unsigned getColumn() { return Position.first; }
+
+ /// getLine - Return the line number
+ unsigned getLine() { return Position.second; }
+
private:
void releaseStream() {
// Delete the stream if needed. Otherwise, transfer the buffer