OLD | NEW |
1 // Protocol Buffers - Google's data interchange format | 1 // Protocol Buffers - Google's data interchange format |
2 // Copyright 2008 Google Inc. All rights reserved. | 2 // Copyright 2008 Google Inc. All rights reserved. |
3 // https://developers.google.com/protocol-buffers/ | 3 // https://developers.google.com/protocol-buffers/ |
4 // | 4 // |
5 // Redistribution and use in source and binary forms, with or without | 5 // Redistribution and use in source and binary forms, with or without |
6 // modification, are permitted provided that the following conditions are | 6 // modification, are permitted provided that the following conditions are |
7 // met: | 7 // met: |
8 // | 8 // |
9 // * Redistributions of source code must retain the above copyright | 9 // * Redistributions of source code must retain the above copyright |
10 // notice, this list of conditions and the following disclaimer. | 10 // notice, this list of conditions and the following disclaimer. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 // FileDescriptor. | 64 // FileDescriptor. |
65 class LIBPROTOBUF_EXPORT Parser { | 65 class LIBPROTOBUF_EXPORT Parser { |
66 public: | 66 public: |
67 Parser(); | 67 Parser(); |
68 ~Parser(); | 68 ~Parser(); |
69 | 69 |
70 // Parse the entire input and construct a FileDescriptorProto representing | 70 // Parse the entire input and construct a FileDescriptorProto representing |
71 // it. Returns true if no errors occurred, false otherwise. | 71 // it. Returns true if no errors occurred, false otherwise. |
72 bool Parse(io::Tokenizer* input, FileDescriptorProto* file); | 72 bool Parse(io::Tokenizer* input, FileDescriptorProto* file); |
73 | 73 |
74 // Optional features: | 74 // Optional fetaures: |
75 | 75 |
76 // DEPRECATED: New code should use the SourceCodeInfo embedded in the | 76 // DEPRECATED: New code should use the SourceCodeInfo embedded in the |
77 // FileDescriptorProto. | 77 // FileDescriptorProto. |
78 // | 78 // |
79 // Requests that locations of certain definitions be recorded to the given | 79 // Requests that locations of certain definitions be recorded to the given |
80 // SourceLocationTable while parsing. This can be used to look up exact line | 80 // SourceLocationTable while parsing. This can be used to look up exact line |
81 // and column numbers for errors reported by DescriptorPool during validation. | 81 // and column numbers for errors reported by DescriptorPool during validation. |
82 // Set to NULL (the default) to discard source location information. | 82 // Set to NULL (the default) to discard source location information. |
83 void RecordSourceLocationsTo(SourceLocationTable* location_table) { | 83 void RecordSourceLocationsTo(SourceLocationTable* location_table) { |
84 source_location_table_ = location_table; | 84 source_location_table_ = location_table; |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 void RecordLegacyLocation(const Message* descriptor, | 250 void RecordLegacyLocation(const Message* descriptor, |
251 DescriptorPool::ErrorCollector::ErrorLocation location); | 251 DescriptorPool::ErrorCollector::ErrorLocation location); |
252 | 252 |
253 // Attaches leading and trailing comments to the location. The two strings | 253 // Attaches leading and trailing comments to the location. The two strings |
254 // will be swapped into place, so after this is called *leading and | 254 // will be swapped into place, so after this is called *leading and |
255 // *trailing will be empty. | 255 // *trailing will be empty. |
256 // | 256 // |
257 // TODO(kenton): See comment on TryConsumeEndOfDeclaration(), above, for | 257 // TODO(kenton): See comment on TryConsumeEndOfDeclaration(), above, for |
258 // why this is const. | 258 // why this is const. |
259 void AttachComments(string* leading, string* trailing, | 259 void AttachComments(string* leading, string* trailing, |
260 std::vector<string>* detached_comments) const; | 260 vector<string>* detached_comments) const; |
261 | 261 |
262 private: | 262 private: |
263 // Indexes of parent and current location in the parent | 263 // Indexes of parent and current location in the parent |
264 // SourceCodeInfo.location repeated field. For top-level elements, | 264 // SourceCodeInfo.location repeated field. For top-level elements, |
265 // parent_index_ is -1. | 265 // parent_index_ is -1. |
266 Parser* parser_; | 266 Parser* parser_; |
267 SourceCodeInfo::Location* location_; | 267 SourceCodeInfo::Location* location_; |
268 | 268 |
269 void Init(const LocationRecorder& parent); | 269 void Init(const LocationRecorder& parent); |
270 }; | 270 }; |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 | 513 |
514 // Leading doc comments for the next declaration. These are not complete | 514 // Leading doc comments for the next declaration. These are not complete |
515 // yet; use ConsumeEndOfDeclaration() to get the complete comments. | 515 // yet; use ConsumeEndOfDeclaration() to get the complete comments. |
516 string upcoming_doc_comments_; | 516 string upcoming_doc_comments_; |
517 | 517 |
518 // Detached comments are not connected to any syntax entities. Elements in | 518 // Detached comments are not connected to any syntax entities. Elements in |
519 // this vector are paragraphs of comments separated by empty lines. The | 519 // this vector are paragraphs of comments separated by empty lines. The |
520 // detached comments will be put into the leading_detached_comments field for | 520 // detached comments will be put into the leading_detached_comments field for |
521 // the next element (See SourceCodeInfo.Location in descriptor.proto), when | 521 // the next element (See SourceCodeInfo.Location in descriptor.proto), when |
522 // ConsumeEndOfDeclaration() is called. | 522 // ConsumeEndOfDeclaration() is called. |
523 std::vector<string> upcoming_detached_comments_; | 523 vector<string> upcoming_detached_comments_; |
524 | 524 |
525 GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Parser); | 525 GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Parser); |
526 }; | 526 }; |
527 | 527 |
528 // A table mapping (descriptor, ErrorLocation) pairs -- as reported by | 528 // A table mapping (descriptor, ErrorLocation) pairs -- as reported by |
529 // DescriptorPool when validating descriptors -- to line and column numbers | 529 // DescriptorPool when validating descriptors -- to line and column numbers |
530 // within the original source code. | 530 // within the original source code. |
531 // | 531 // |
532 // This is semi-obsolete: FileDescriptorProto.source_code_info now contains | 532 // This is semi-obsolete: FileDescriptorProto.source_code_info now contains |
533 // far more complete information about source locations. However, as of this | 533 // far more complete information about source locations. However, as of this |
(...skipping 15 matching lines...) Expand all Loading... |
549 | 549 |
550 // Adds a location to the table. | 550 // Adds a location to the table. |
551 void Add(const Message* descriptor, | 551 void Add(const Message* descriptor, |
552 DescriptorPool::ErrorCollector::ErrorLocation location, | 552 DescriptorPool::ErrorCollector::ErrorLocation location, |
553 int line, int column); | 553 int line, int column); |
554 | 554 |
555 // Clears the contents of the table. | 555 // Clears the contents of the table. |
556 void Clear(); | 556 void Clear(); |
557 | 557 |
558 private: | 558 private: |
559 typedef std::map< | 559 typedef map< |
560 std::pair<const Message*, DescriptorPool::ErrorCollector::ErrorLocation>, | 560 pair<const Message*, DescriptorPool::ErrorCollector::ErrorLocation>, |
561 std::pair<int, int> > LocationMap; | 561 pair<int, int> > LocationMap; |
562 LocationMap location_map_; | 562 LocationMap location_map_; |
563 }; | 563 }; |
564 | 564 |
565 } // namespace compiler | 565 } // namespace compiler |
566 } // namespace protobuf | 566 } // namespace protobuf |
567 | 567 |
568 } // namespace google | 568 } // namespace google |
569 #endif // GOOGLE_PROTOBUF_COMPILER_PARSER_H__ | 569 #endif // GOOGLE_PROTOBUF_COMPILER_PARSER_H__ |
OLD | NEW |