protobuf_descriptor 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.travis.yml +6 -0
  4. data/.yardopts +1 -1
  5. data/ChangeLog.rdoc +12 -0
  6. data/README.md +61 -0
  7. data/Rakefile +114 -0
  8. data/lib/protobuf_descriptor/enum_descriptor.rb +17 -11
  9. data/lib/protobuf_descriptor/enum_value_descriptor.rb +29 -0
  10. data/lib/protobuf_descriptor/field_descriptor.rb +80 -0
  11. data/lib/protobuf_descriptor/file_descriptor.rb +37 -17
  12. data/lib/protobuf_descriptor/has_children.rb +49 -0
  13. data/lib/protobuf_descriptor/has_parent.rb +42 -0
  14. data/lib/protobuf_descriptor/message_descriptor.rb +20 -104
  15. data/lib/protobuf_descriptor/method_descriptor.rb +54 -0
  16. data/lib/protobuf_descriptor/named_child.rb +7 -0
  17. data/lib/protobuf_descriptor/service_descriptor.rb +9 -61
  18. data/lib/protobuf_descriptor/version.rb +1 -1
  19. data/lib/protobuf_descriptor.rb +20 -5
  20. data/protobuf_descriptor.gemspec +3 -2
  21. data/spec/field_descriptor_spec.rb +1 -1
  22. data/spec/file_descriptor_spec.rb +0 -1
  23. data/spec/method_descriptor_spec.rb +1 -1
  24. data/spec/protobuf_descriptor_spec.rb +3 -3
  25. data/spec/protoc_generator_spec.rb +6 -9
  26. data/spec/protos/custom_options/custom_options.proto +53 -0
  27. data/spec/protos/custom_options/google/protobuf/descriptor.proto +620 -0
  28. data/spec/protos/custom_options.desc +0 -0
  29. data/spec/protos/custom_options.java.zip +0 -0
  30. data/spec/protos/custom_options.wire.zip +0 -0
  31. data/spec/protos/generator_test.desc +24 -0
  32. data/spec/protos/generator_test.java.zip +0 -0
  33. data/spec/protos/generator_test.wire.zip +0 -0
  34. data/spec/protos/service_rpc_test.desc +71 -0
  35. data/spec/protos/service_rpc_test.java.zip +0 -0
  36. data/spec/protos/service_rpc_test.wire.zip +0 -0
  37. data/spec/protos/single_file_test.desc +0 -0
  38. data/spec/protos/single_file_test.java.zip +0 -0
  39. data/spec/protos/single_file_test.wire.zip +0 -0
  40. data/spec/protos/source_info/foo.proto +59 -0
  41. data/spec/protos/source_info.desc +22 -0
  42. data/spec/protos/source_info.java.zip +0 -0
  43. data/spec/protos/source_info.srcinfo.desc +0 -0
  44. data/spec/protos/source_info.wire.zip +0 -0
  45. data/spec/service_descriptor_spec.rb +1 -1
  46. data/spec/source_code_info_spec.rb +57 -0
  47. data/spec/spec_helper.rb +29 -57
  48. data/spec/wire_generator_spec.rb +6 -11
  49. metadata +69 -11
  50. data/Gemfile.lock +0 -58
  51. data/README.rdoc +0 -51
@@ -0,0 +1,620 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // http://code.google.com/p/protobuf/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ // Author: kenton@google.com (Kenton Varda)
32
+ // Based on original Protocol Buffers design by
33
+ // Sanjay Ghemawat, Jeff Dean, and others.
34
+ //
35
+ // The messages in this file describe the definitions found in .proto files.
36
+ // A valid .proto file can be translated directly to a FileDescriptorProto
37
+ // without any other information (e.g. without reading its imports).
38
+
39
+
40
+
41
+ package google.protobuf;
42
+ option java_package = "com.google.protobuf";
43
+ option java_outer_classname = "DescriptorProtos";
44
+
45
+ // descriptor.proto must be optimized for speed because reflection-based
46
+ // algorithms don't work during bootstrapping.
47
+ option optimize_for = SPEED;
48
+
49
+ // The protocol compiler can output a FileDescriptorSet containing the .proto
50
+ // files it parses.
51
+ message FileDescriptorSet {
52
+ repeated FileDescriptorProto file = 1;
53
+ }
54
+
55
+ // Describes a complete .proto file.
56
+ message FileDescriptorProto {
57
+ optional string name = 1; // file name, relative to root of source tree
58
+ optional string package = 2; // e.g. "foo", "foo.bar", etc.
59
+
60
+ // Names of files imported by this file.
61
+ repeated string dependency = 3;
62
+ // Indexes of the public imported files in the dependency list above.
63
+ repeated int32 public_dependency = 10;
64
+ // Indexes of the weak imported files in the dependency list.
65
+ // For Google-internal migration only. Do not use.
66
+ repeated int32 weak_dependency = 11;
67
+
68
+ // All top-level definitions in this file.
69
+ repeated DescriptorProto message_type = 4;
70
+ repeated EnumDescriptorProto enum_type = 5;
71
+ repeated ServiceDescriptorProto service = 6;
72
+ repeated FieldDescriptorProto extension = 7;
73
+
74
+ optional FileOptions options = 8;
75
+
76
+ // This field contains optional information about the original source code.
77
+ // You may safely remove this entire field whithout harming runtime
78
+ // functionality of the descriptors -- the information is needed only by
79
+ // development tools.
80
+ optional SourceCodeInfo source_code_info = 9;
81
+ }
82
+
83
+ // Describes a message type.
84
+ message DescriptorProto {
85
+ optional string name = 1;
86
+
87
+ repeated FieldDescriptorProto field = 2;
88
+ repeated FieldDescriptorProto extension = 6;
89
+
90
+ repeated DescriptorProto nested_type = 3;
91
+ repeated EnumDescriptorProto enum_type = 4;
92
+
93
+ message ExtensionRange {
94
+ optional int32 start = 1;
95
+ optional int32 end = 2;
96
+ }
97
+ repeated ExtensionRange extension_range = 5;
98
+
99
+ optional MessageOptions options = 7;
100
+ }
101
+
102
+ // Describes a field within a message.
103
+ message FieldDescriptorProto {
104
+ enum Type {
105
+ // 0 is reserved for errors.
106
+ // Order is weird for historical reasons.
107
+ TYPE_DOUBLE = 1;
108
+ TYPE_FLOAT = 2;
109
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
110
+ // negative values are likely.
111
+ TYPE_INT64 = 3;
112
+ TYPE_UINT64 = 4;
113
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
114
+ // negative values are likely.
115
+ TYPE_INT32 = 5;
116
+ TYPE_FIXED64 = 6;
117
+ TYPE_FIXED32 = 7;
118
+ TYPE_BOOL = 8;
119
+ TYPE_STRING = 9;
120
+ TYPE_GROUP = 10; // Tag-delimited aggregate.
121
+ TYPE_MESSAGE = 11; // Length-delimited aggregate.
122
+
123
+ // New in version 2.
124
+ TYPE_BYTES = 12;
125
+ TYPE_UINT32 = 13;
126
+ TYPE_ENUM = 14;
127
+ TYPE_SFIXED32 = 15;
128
+ TYPE_SFIXED64 = 16;
129
+ TYPE_SINT32 = 17; // Uses ZigZag encoding.
130
+ TYPE_SINT64 = 18; // Uses ZigZag encoding.
131
+ };
132
+
133
+ enum Label {
134
+ // 0 is reserved for errors
135
+ LABEL_OPTIONAL = 1;
136
+ LABEL_REQUIRED = 2;
137
+ LABEL_REPEATED = 3;
138
+ // TODO(sanjay): Should we add LABEL_MAP?
139
+ };
140
+
141
+ optional string name = 1;
142
+ optional int32 number = 3;
143
+ optional Label label = 4;
144
+
145
+ // If type_name is set, this need not be set. If both this and type_name
146
+ // are set, this must be either TYPE_ENUM or TYPE_MESSAGE.
147
+ optional Type type = 5;
148
+
149
+ // For message and enum types, this is the name of the type. If the name
150
+ // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
151
+ // rules are used to find the type (i.e. first the nested types within this
152
+ // message are searched, then within the parent, on up to the root
153
+ // namespace).
154
+ optional string type_name = 6;
155
+
156
+ // For extensions, this is the name of the type being extended. It is
157
+ // resolved in the same manner as type_name.
158
+ optional string extendee = 2;
159
+
160
+ // For numeric types, contains the original text representation of the value.
161
+ // For booleans, "true" or "false".
162
+ // For strings, contains the default text contents (not escaped in any way).
163
+ // For bytes, contains the C escaped value. All bytes >= 128 are escaped.
164
+ // TODO(kenton): Base-64 encode?
165
+ optional string default_value = 7;
166
+
167
+ optional FieldOptions options = 8;
168
+ }
169
+
170
+ // Describes an enum type.
171
+ message EnumDescriptorProto {
172
+ optional string name = 1;
173
+
174
+ repeated EnumValueDescriptorProto value = 2;
175
+
176
+ optional EnumOptions options = 3;
177
+ }
178
+
179
+ // Describes a value within an enum.
180
+ message EnumValueDescriptorProto {
181
+ optional string name = 1;
182
+ optional int32 number = 2;
183
+
184
+ optional EnumValueOptions options = 3;
185
+ }
186
+
187
+ // Describes a service.
188
+ message ServiceDescriptorProto {
189
+ optional string name = 1;
190
+ repeated MethodDescriptorProto method = 2;
191
+
192
+ optional ServiceOptions options = 3;
193
+ }
194
+
195
+ // Describes a method of a service.
196
+ message MethodDescriptorProto {
197
+ optional string name = 1;
198
+
199
+ // Input and output type names. These are resolved in the same way as
200
+ // FieldDescriptorProto.type_name, but must refer to a message type.
201
+ optional string input_type = 2;
202
+ optional string output_type = 3;
203
+
204
+ optional MethodOptions options = 4;
205
+ }
206
+
207
+
208
+ // ===================================================================
209
+ // Options
210
+
211
+ // Each of the definitions above may have "options" attached. These are
212
+ // just annotations which may cause code to be generated slightly differently
213
+ // or may contain hints for code that manipulates protocol messages.
214
+ //
215
+ // Clients may define custom options as extensions of the *Options messages.
216
+ // These extensions may not yet be known at parsing time, so the parser cannot
217
+ // store the values in them. Instead it stores them in a field in the *Options
218
+ // message called uninterpreted_option. This field must have the same name
219
+ // across all *Options messages. We then use this field to populate the
220
+ // extensions when we build a descriptor, at which point all protos have been
221
+ // parsed and so all extensions are known.
222
+ //
223
+ // Extension numbers for custom options may be chosen as follows:
224
+ // * For options which will only be used within a single application or
225
+ // organization, or for experimental options, use field numbers 50000
226
+ // through 99999. It is up to you to ensure that you do not use the
227
+ // same number for multiple options.
228
+ // * For options which will be published and used publicly by multiple
229
+ // independent entities, e-mail protobuf-global-extension-registry@google.com
230
+ // to reserve extension numbers. Simply provide your project name (e.g.
231
+ // Object-C plugin) and your porject website (if available) -- there's no need
232
+ // to explain how you intend to use them. Usually you only need one extension
233
+ // number. You can declare multiple options with only one extension number by
234
+ // putting them in a sub-message. See the Custom Options section of the docs
235
+ // for examples:
236
+ // http://code.google.com/apis/protocolbuffers/docs/proto.html#options
237
+ // If this turns out to be popular, a web service will be set up
238
+ // to automatically assign option numbers.
239
+
240
+
241
+ message FileOptions {
242
+
243
+ // Sets the Java package where classes generated from this .proto will be
244
+ // placed. By default, the proto package is used, but this is often
245
+ // inappropriate because proto packages do not normally start with backwards
246
+ // domain names.
247
+ optional string java_package = 1;
248
+
249
+
250
+ // If set, all the classes from the .proto file are wrapped in a single
251
+ // outer class with the given name. This applies to both Proto1
252
+ // (equivalent to the old "--one_java_file" option) and Proto2 (where
253
+ // a .proto always translates to a single class, but you may want to
254
+ // explicitly choose the class name).
255
+ optional string java_outer_classname = 8;
256
+
257
+ // If set true, then the Java code generator will generate a separate .java
258
+ // file for each top-level message, enum, and service defined in the .proto
259
+ // file. Thus, these types will *not* be nested inside the outer class
260
+ // named by java_outer_classname. However, the outer class will still be
261
+ // generated to contain the file's getDescriptor() method as well as any
262
+ // top-level extensions defined in the file.
263
+ optional bool java_multiple_files = 10 [default=false];
264
+
265
+ // If set true, then the Java code generator will generate equals() and
266
+ // hashCode() methods for all messages defined in the .proto file. This is
267
+ // purely a speed optimization, as the AbstractMessage base class includes
268
+ // reflection-based implementations of these methods.
269
+ optional bool java_generate_equals_and_hash = 20 [default=false];
270
+
271
+ // Generated classes can be optimized for speed or code size.
272
+ enum OptimizeMode {
273
+ SPEED = 1; // Generate complete code for parsing, serialization,
274
+ // etc.
275
+ CODE_SIZE = 2; // Use ReflectionOps to implement these methods.
276
+ LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime.
277
+ }
278
+ optional OptimizeMode optimize_for = 9 [default=SPEED];
279
+
280
+ // Sets the Go package where structs generated from this .proto will be
281
+ // placed. There is no default.
282
+ optional string go_package = 11;
283
+
284
+
285
+
286
+ // Should generic services be generated in each language? "Generic" services
287
+ // are not specific to any particular RPC system. They are generated by the
288
+ // main code generators in each language (without additional plugins).
289
+ // Generic services were the only kind of service generation supported by
290
+ // early versions of proto2.
291
+ //
292
+ // Generic services are now considered deprecated in favor of using plugins
293
+ // that generate code specific to your particular RPC system. Therefore,
294
+ // these default to false. Old code which depends on generic services should
295
+ // explicitly set them to true.
296
+ optional bool cc_generic_services = 16 [default=false];
297
+ optional bool java_generic_services = 17 [default=false];
298
+ optional bool py_generic_services = 18 [default=false];
299
+
300
+ // The parser stores options it doesn't recognize here. See above.
301
+ repeated UninterpretedOption uninterpreted_option = 999;
302
+
303
+ // Clients can define custom options in extensions of this message. See above.
304
+ extensions 1000 to max;
305
+ }
306
+
307
+ message MessageOptions {
308
+ // Set true to use the old proto1 MessageSet wire format for extensions.
309
+ // This is provided for backwards-compatibility with the MessageSet wire
310
+ // format. You should not use this for any other reason: It's less
311
+ // efficient, has fewer features, and is more complicated.
312
+ //
313
+ // The message must be defined exactly as follows:
314
+ // message Foo {
315
+ // option message_set_wire_format = true;
316
+ // extensions 4 to max;
317
+ // }
318
+ // Note that the message cannot have any defined fields; MessageSets only
319
+ // have extensions.
320
+ //
321
+ // All extensions of your type must be singular messages; e.g. they cannot
322
+ // be int32s, enums, or repeated messages.
323
+ //
324
+ // Because this is an option, the above two restrictions are not enforced by
325
+ // the protocol compiler.
326
+ optional bool message_set_wire_format = 1 [default=false];
327
+
328
+ // Disables the generation of the standard "descriptor()" accessor, which can
329
+ // conflict with a field of the same name. This is meant to make migration
330
+ // from proto1 easier; new code should avoid fields named "descriptor".
331
+ optional bool no_standard_descriptor_accessor = 2 [default=false];
332
+
333
+ // The parser stores options it doesn't recognize here. See above.
334
+ repeated UninterpretedOption uninterpreted_option = 999;
335
+
336
+ // Clients can define custom options in extensions of this message. See above.
337
+ extensions 1000 to max;
338
+ }
339
+
340
+ message FieldOptions {
341
+ // The ctype option instructs the C++ code generator to use a different
342
+ // representation of the field than it normally would. See the specific
343
+ // options below. This option is not yet implemented in the open source
344
+ // release -- sorry, we'll try to include it in a future version!
345
+ optional CType ctype = 1 [default = STRING];
346
+ enum CType {
347
+ // Default mode.
348
+ STRING = 0;
349
+
350
+ CORD = 1;
351
+
352
+ STRING_PIECE = 2;
353
+ }
354
+ // The packed option can be enabled for repeated primitive fields to enable
355
+ // a more efficient representation on the wire. Rather than repeatedly
356
+ // writing the tag and type for each element, the entire array is encoded as
357
+ // a single length-delimited blob.
358
+ optional bool packed = 2;
359
+
360
+
361
+
362
+ // Should this field be parsed lazily? Lazy applies only to message-type
363
+ // fields. It means that when the outer message is initially parsed, the
364
+ // inner message's contents will not be parsed but instead stored in encoded
365
+ // form. The inner message will actually be parsed when it is first accessed.
366
+ //
367
+ // This is only a hint. Implementations are free to choose whether to use
368
+ // eager or lazy parsing regardless of the value of this option. However,
369
+ // setting this option true suggests that the protocol author believes that
370
+ // using lazy parsing on this field is worth the additional bookkeeping
371
+ // overhead typically needed to implement it.
372
+ //
373
+ // This option does not affect the public interface of any generated code;
374
+ // all method signatures remain the same. Furthermore, thread-safety of the
375
+ // interface is not affected by this option; const methods remain safe to
376
+ // call from multiple threads concurrently, while non-const methods continue
377
+ // to require exclusive access.
378
+ //
379
+ //
380
+ // Note that implementations may choose not to check required fields within
381
+ // a lazy sub-message. That is, calling IsInitialized() on the outher message
382
+ // may return true even if the inner message has missing required fields.
383
+ // This is necessary because otherwise the inner message would have to be
384
+ // parsed in order to perform the check, defeating the purpose of lazy
385
+ // parsing. An implementation which chooses not to check required fields
386
+ // must be consistent about it. That is, for any particular sub-message, the
387
+ // implementation must either *always* check its required fields, or *never*
388
+ // check its required fields, regardless of whether or not the message has
389
+ // been parsed.
390
+ optional bool lazy = 5 [default=false];
391
+
392
+ // Is this field deprecated?
393
+ // Depending on the target platform, this can emit Deprecated annotations
394
+ // for accessors, or it will be completely ignored; in the very least, this
395
+ // is a formalization for deprecating fields.
396
+ optional bool deprecated = 3 [default=false];
397
+
398
+ // EXPERIMENTAL. DO NOT USE.
399
+ // For "map" fields, the name of the field in the enclosed type that
400
+ // is the key for this map. For example, suppose we have:
401
+ // message Item {
402
+ // required string name = 1;
403
+ // required string value = 2;
404
+ // }
405
+ // message Config {
406
+ // repeated Item items = 1 [experimental_map_key="name"];
407
+ // }
408
+ // In this situation, the map key for Item will be set to "name".
409
+ // TODO: Fully-implement this, then remove the "experimental_" prefix.
410
+ optional string experimental_map_key = 9;
411
+
412
+ // For Google-internal migration only. Do not use.
413
+ optional bool weak = 10 [default=false];
414
+
415
+ // The parser stores options it doesn't recognize here. See above.
416
+ repeated UninterpretedOption uninterpreted_option = 999;
417
+
418
+ // Clients can define custom options in extensions of this message. See above.
419
+ extensions 1000 to max;
420
+ }
421
+
422
+ message EnumOptions {
423
+
424
+ // Set this option to false to disallow mapping different tag names to a same
425
+ // value.
426
+ optional bool allow_alias = 2 [default=true];
427
+
428
+ // The parser stores options it doesn't recognize here. See above.
429
+ repeated UninterpretedOption uninterpreted_option = 999;
430
+
431
+ // Clients can define custom options in extensions of this message. See above.
432
+ extensions 1000 to max;
433
+ }
434
+
435
+ message EnumValueOptions {
436
+ // The parser stores options it doesn't recognize here. See above.
437
+ repeated UninterpretedOption uninterpreted_option = 999;
438
+
439
+ // Clients can define custom options in extensions of this message. See above.
440
+ extensions 1000 to max;
441
+ }
442
+
443
+ message ServiceOptions {
444
+
445
+ // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
446
+ // framework. We apologize for hoarding these numbers to ourselves, but
447
+ // we were already using them long before we decided to release Protocol
448
+ // Buffers.
449
+
450
+ // The parser stores options it doesn't recognize here. See above.
451
+ repeated UninterpretedOption uninterpreted_option = 999;
452
+
453
+ // Clients can define custom options in extensions of this message. See above.
454
+ extensions 1000 to max;
455
+ }
456
+
457
+ message MethodOptions {
458
+
459
+ // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
460
+ // framework. We apologize for hoarding these numbers to ourselves, but
461
+ // we were already using them long before we decided to release Protocol
462
+ // Buffers.
463
+
464
+ // The parser stores options it doesn't recognize here. See above.
465
+ repeated UninterpretedOption uninterpreted_option = 999;
466
+
467
+ // Clients can define custom options in extensions of this message. See above.
468
+ extensions 1000 to max;
469
+ }
470
+
471
+
472
+ // A message representing a option the parser does not recognize. This only
473
+ // appears in options protos created by the compiler::Parser class.
474
+ // DescriptorPool resolves these when building Descriptor objects. Therefore,
475
+ // options protos in descriptor objects (e.g. returned by Descriptor::options(),
476
+ // or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
477
+ // in them.
478
+ message UninterpretedOption {
479
+ // The name of the uninterpreted option. Each string represents a segment in
480
+ // a dot-separated name. is_extension is true iff a segment represents an
481
+ // extension (denoted with parentheses in options specs in .proto files).
482
+ // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
483
+ // "foo.(bar.baz).qux".
484
+ message NamePart {
485
+ required string name_part = 1;
486
+ required bool is_extension = 2;
487
+ }
488
+ repeated NamePart name = 2;
489
+
490
+ // The value of the uninterpreted option, in whatever type the tokenizer
491
+ // identified it as during parsing. Exactly one of these should be set.
492
+ optional string identifier_value = 3;
493
+ optional uint64 positive_int_value = 4;
494
+ optional int64 negative_int_value = 5;
495
+ optional double double_value = 6;
496
+ optional bytes string_value = 7;
497
+ optional string aggregate_value = 8;
498
+ }
499
+
500
+ // ===================================================================
501
+ // Optional source code info
502
+
503
+ // Encapsulates information about the original source file from which a
504
+ // FileDescriptorProto was generated.
505
+ message SourceCodeInfo {
506
+ // A Location identifies a piece of source code in a .proto file which
507
+ // corresponds to a particular definition. This information is intended
508
+ // to be useful to IDEs, code indexers, documentation generators, and similar
509
+ // tools.
510
+ //
511
+ // For example, say we have a file like:
512
+ // message Foo {
513
+ // optional string foo = 1;
514
+ // }
515
+ // Let's look at just the field definition:
516
+ // optional string foo = 1;
517
+ // ^ ^^ ^^ ^ ^^^
518
+ // a bc de f ghi
519
+ // We have the following locations:
520
+ // span path represents
521
+ // [a,i) [ 4, 0, 2, 0 ] The whole field definition.
522
+ // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
523
+ // [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
524
+ // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
525
+ // [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
526
+ //
527
+ // Notes:
528
+ // - A location may refer to a repeated field itself (i.e. not to any
529
+ // particular index within it). This is used whenever a set of elements are
530
+ // logically enclosed in a single code segment. For example, an entire
531
+ // extend block (possibly containing multiple extension definitions) will
532
+ // have an outer location whose path refers to the "extensions" repeated
533
+ // field without an index.
534
+ // - Multiple locations may have the same path. This happens when a single
535
+ // logical declaration is spread out across multiple places. The most
536
+ // obvious example is the "extend" block again -- there may be multiple
537
+ // extend blocks in the same scope, each of which will have the same path.
538
+ // - A location's span is not always a subset of its parent's span. For
539
+ // example, the "extendee" of an extension declaration appears at the
540
+ // beginning of the "extend" block and is shared by all extensions within
541
+ // the block.
542
+ // - Just because a location's span is a subset of some other location's span
543
+ // does not mean that it is a descendent. For example, a "group" defines
544
+ // both a type and a field in a single declaration. Thus, the locations
545
+ // corresponding to the type and field and their components will overlap.
546
+ // - Code which tries to interpret locations should probably be designed to
547
+ // ignore those that it doesn't understand, as more types of locations could
548
+ // be recorded in the future.
549
+ repeated Location location = 1;
550
+ message Location {
551
+ // Identifies which part of the FileDescriptorProto was defined at this
552
+ // location.
553
+ //
554
+ // Each element is a field number or an index. They form a path from
555
+ // the root FileDescriptorProto to the place where the definition. For
556
+ // example, this path:
557
+ // [ 4, 3, 2, 7, 1 ]
558
+ // refers to:
559
+ // file.message_type(3) // 4, 3
560
+ // .field(7) // 2, 7
561
+ // .name() // 1
562
+ // This is because FileDescriptorProto.message_type has field number 4:
563
+ // repeated DescriptorProto message_type = 4;
564
+ // and DescriptorProto.field has field number 2:
565
+ // repeated FieldDescriptorProto field = 2;
566
+ // and FieldDescriptorProto.name has field number 1:
567
+ // optional string name = 1;
568
+ //
569
+ // Thus, the above path gives the location of a field name. If we removed
570
+ // the last element:
571
+ // [ 4, 3, 2, 7 ]
572
+ // this path refers to the whole field declaration (from the beginning
573
+ // of the label to the terminating semicolon).
574
+ repeated int32 path = 1 [packed=true];
575
+
576
+ // Always has exactly three or four elements: start line, start column,
577
+ // end line (optional, otherwise assumed same as start line), end column.
578
+ // These are packed into a single field for efficiency. Note that line
579
+ // and column numbers are zero-based -- typically you will want to add
580
+ // 1 to each before displaying to a user.
581
+ repeated int32 span = 2 [packed=true];
582
+
583
+ // If this SourceCodeInfo represents a complete declaration, these are any
584
+ // comments appearing before and after the declaration which appear to be
585
+ // attached to the declaration.
586
+ //
587
+ // A series of line comments appearing on consecutive lines, with no other
588
+ // tokens appearing on those lines, will be treated as a single comment.
589
+ //
590
+ // Only the comment content is provided; comment markers (e.g. //) are
591
+ // stripped out. For block comments, leading whitespace and an asterisk
592
+ // will be stripped from the beginning of each line other than the first.
593
+ // Newlines are included in the output.
594
+ //
595
+ // Examples:
596
+ //
597
+ // optional int32 foo = 1; // Comment attached to foo.
598
+ // // Comment attached to bar.
599
+ // optional int32 bar = 2;
600
+ //
601
+ // optional string baz = 3;
602
+ // // Comment attached to baz.
603
+ // // Another line attached to baz.
604
+ //
605
+ // // Comment attached to qux.
606
+ // //
607
+ // // Another line attached to qux.
608
+ // optional double qux = 4;
609
+ //
610
+ // optional string corge = 5;
611
+ // /* Block comment attached
612
+ // * to corge. Leading asterisks
613
+ // * will be removed. */
614
+ // /* Block comment attached to
615
+ // * grault. */
616
+ // optional int32 grault = 6;
617
+ optional string leading_comments = 3;
618
+ optional string trailing_comments = 4;
619
+ }
620
+ }
Binary file
Binary file
Binary file
@@ -0,0 +1,24 @@
1
+
2
+ g
3
+ aaa.protoaaa"E
4
+ Maa&
5
+
6
+ maa_nested ( 2.aaa.Maa.MaaNested
7
+ MaaNested
8
+ i (*
9
+ Eaa
10
+ FOO
11
+ +
12
+
13
+ aa_package*
14
+ Eab
15
+ FOO
16
+ G
17
+ java_package.protoaaa*
18
+ Ead
19
+ EADB
20
+ net.porkbuns.customPackage
21
+ F
22
+ outer_class_name.protoaaa*
23
+ Eac
24
+ FOO2BBCustomOuterClassName
Binary file
Binary file