Index: third_party/protobuf/src/google/protobuf/io/tokenizer.h |
diff --git a/third_party/protobuf/src/google/protobuf/io/tokenizer.h b/third_party/protobuf/src/google/protobuf/io/tokenizer.h |
index 49885eda9c6d04def8cf3e31699bfa78ddded534..64ee7d8475d8d89c71e60037e28f1a42d986700e 100644 |
--- a/third_party/protobuf/src/google/protobuf/io/tokenizer.h |
+++ b/third_party/protobuf/src/google/protobuf/io/tokenizer.h |
@@ -52,6 +52,12 @@ class ZeroCopyInputStream; // zero_copy_stream.h |
class ErrorCollector; |
class Tokenizer; |
+// By "column number", the proto compiler refers to a count of the number |
+// of bytes before a given byte, except that a tab character advances to |
+// the next multiple of 8 bytes. Note in particular that column numbers |
+// are zero-based, while many user interfaces use one-based column numbers. |
+typedef int ColumnNumber; |
+ |
// Abstract interface for an object which collects the errors that occur |
// during parsing. A typical implementation might simply print the errors |
// to stdout. |
@@ -63,13 +69,14 @@ class LIBPROTOBUF_EXPORT ErrorCollector { |
// Indicates that there was an error in the input at the given line and |
// column numbers. The numbers are zero-based, so you may want to add |
// 1 to each before printing them. |
- virtual void AddError(int line, int column, const string& message) = 0; |
+ virtual void AddError(int line, ColumnNumber column, |
+ const string& message) = 0; |
// Indicates that there was a warning in the input at the given line and |
// column numbers. The numbers are zero-based, so you may want to add |
// 1 to each before printing them. |
- virtual void AddWarning(int /* line */, int /* column */, |
- const string& /* message */) { } |
+ virtual void AddWarning(int line, ColumnNumber column, |
+ const string& message) { } |
private: |
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ErrorCollector); |
@@ -124,8 +131,8 @@ class LIBPROTOBUF_EXPORT Tokenizer { |
// "line" and "column" specify the position of the first character of |
// the token within the input stream. They are zero-based. |
int line; |
- int column; |
- int end_column; |
+ ColumnNumber column; |
+ ColumnNumber end_column; |
}; |
// Get the current token. This is updated when Next() is called. Before |
@@ -263,7 +270,7 @@ class LIBPROTOBUF_EXPORT Tokenizer { |
// Line and column number of current_char_ within the whole input stream. |
int line_; |
- int column_; |
+ ColumnNumber column_; |
// String to which text should be appended as we advance through it. |
// Call RecordTo(&str) to start recording and StopRecording() to stop. |
@@ -280,6 +287,7 @@ class LIBPROTOBUF_EXPORT Tokenizer { |
// Since we count columns we need to interpret tabs somehow. We'll take |
// the standard 8-character definition for lack of any way to do better. |
+ // This must match the documentation of ColumnNumber. |
static const int kTabWidth = 8; |
// ----------------------------------------------------------------- |