OLD | NEW |
1 // Experimental options controlling Dart code generation. | 1 // Experimental options controlling Dart code generation. |
2 syntax = "proto2"; | 2 syntax = "proto2"; |
3 | 3 |
4 package dart_options; | 4 package dart_options; |
5 | 5 |
6 // This file must be modified for google internal use, | 6 // This file must be modified for Google internal use, |
7 // because custom options only work when the package name | 7 // because custom options only work when the package name |
8 // agrees with the version of protoc we are using. | 8 // agrees with the version of protoc we are using. |
9 // (The import statement and "google.protobuf." prefix need to be changed.) | 9 // (The import statement and "google.protobuf." prefix need to be changed.) |
10 | 10 |
11 import "descriptor_2_5_opensource.proto"; | 11 import "descriptor_2_5_opensource.proto"; |
12 | 12 |
13 // A mixin to be applied in the 'with' clause of a generated proto in dart. | 13 // A mixin that can be used in the 'with' clause of the generated Dart class |
| 14 // for a proto message. |
14 message DartMixin { | 15 message DartMixin { |
15 // Class name of the mixin class. | 16 // The name of the mixin class. |
16 optional string name = 1; | 17 optional string name = 1; |
17 | 18 |
18 // File from which the mixin class is imported. | 19 // A URI pointing to the Dart library that defines the mixin. |
19 // The generated Dart code will use this in an import statement. | 20 // The generated Dart code will use this in an import statement. |
20 optional string import_from = 2; | 21 optional string import_from = 2; |
21 | 22 |
22 // Used to apply multiple mixins to a proto. | 23 // The name of another mixin to be applied ahead of this one. |
23 // The mixin listed in parent will always be applied before this one, | 24 // The generated class for the message will inherit from all mixins |
24 // making the generated proto implement both mixins. | 25 // in the parent chain. |
25 optional string parent = 3; | 26 optional string parent = 3; |
26 } | 27 } |
27 | 28 |
28 // Defines mixins imported from dart files to be used on messages in this file. | 29 // Defines additional Dart imports to be used with messages in this file. |
29 message ImportedMixins { | 30 message Imports { |
30 | 31 |
31 // The DartMixins to be imported. | 32 // Mixins to be used on messages in this file. |
| 33 // These mixins are in addition to internally defined mixins (e.g PbMapMixin) |
| 34 // and may override them. |
| 35 // |
| 36 // Warning: mixins are experimental. The protoc Dart plugin doesn't check |
| 37 // for name conflicts between mixin class members and generated class members, |
| 38 // so the generated code may contain errors. Therefore, running dartanalyzer |
| 39 // on the generated file is a good idea. |
32 repeated DartMixin mixins = 1; | 40 repeated DartMixin mixins = 1; |
33 } | 41 } |
34 | 42 |
35 extend google.protobuf.FileOptions { | 43 extend google.protobuf.FileOptions { |
36 | 44 |
37 // Defines the named mixins to be used on messages in this file. | 45 optional Imports imports = 28125061; |
38 // These mixins are in addition to internally defined mixins (e.g PbMapMixin) | |
39 // and may override them. | |
40 // Warning: there is no checking at compile time for name conflicts between | |
41 // identifiers defined in the mixin and proto-generated identifiers. | |
42 // Running dartanalyzer on the generated file might find some of them. | |
43 optional ImportedMixins imported_mixins = 28125061; | |
44 | 46 |
45 // Applies the named mixin to all messages in this file. | 47 // Applies the named mixin to all messages in this file. |
46 // (May be overridden by the "mixin" option on a message.) | 48 // (May be overridden by the "mixin" option on a message.) |
47 // For now, "PbMapMixin" is the only available mixin. | 49 // For now, "PbMapMixin" is the only available mixin. |
48 optional string default_mixin = 96128839; | 50 optional string default_mixin = 96128839; |
49 } | 51 } |
50 | 52 |
51 extend google.protobuf.MessageOptions { | 53 extend google.protobuf.MessageOptions { |
52 | 54 |
53 // Applies the named mixin. | 55 // Applies the named mixin. |
54 // For now, "PbMapMixin" is the only available mixin. | 56 // For now, "PbMapMixin" is the only available mixin. |
55 // The empty string can be used to turn off mixins for this message. | 57 // The empty string can be used to turn off mixins for this message. |
56 optional string mixin = 96128839; | 58 optional string mixin = 96128839; |
57 } | 59 } |
58 | 60 |
59 extend google.protobuf.FieldOptions { | 61 extend google.protobuf.FieldOptions { |
60 | 62 |
61 // Uses the given name for getters, setters and as suffixes for has/clear | 63 // Uses the given name for getters, setters and as suffixes for has/clear |
62 // methods in the generated Dart file. Should be lowerCamelCase. | 64 // methods in the generated Dart file. Should be lowerCamelCase. |
63 optional string dart_name = 28700919; | 65 optional string dart_name = 28700919; |
64 } | 66 } |
OLD | NEW |