xref: /aosp_15_r20/external/nanopb-c/generator/nanopb/options.proto (revision c8d645cafcee3f91213d30caa0fe303887010b9b)
1*c8d645caSAndroid Build Coastguard Worker// This is a transitional file, to provide parallel support between the old
2*c8d645caSAndroid Build Coastguard Worker// nanopb.proto and new options.proto files. Eventually nanopb.proto will
3*c8d645caSAndroid Build Coastguard Worker// be left only for legacy code, but for now the generator is still also
4*c8d645caSAndroid Build Coastguard Worker// using it. However, your new code can start using this file already now.
5*c8d645caSAndroid Build Coastguard Worker// See pull request #241 for details:
6*c8d645caSAndroid Build Coastguard Worker// https://github.com/nanopb/nanopb/pull/241
7*c8d645caSAndroid Build Coastguard Worker
8*c8d645caSAndroid Build Coastguard Worker// Custom options for defining:
9*c8d645caSAndroid Build Coastguard Worker// - Maximum size of string/bytes
10*c8d645caSAndroid Build Coastguard Worker// - Maximum number of elements in array
11*c8d645caSAndroid Build Coastguard Worker//
12*c8d645caSAndroid Build Coastguard Worker// These are used by nanopb to generate statically allocable structures
13*c8d645caSAndroid Build Coastguard Worker// for memory-limited environments.
14*c8d645caSAndroid Build Coastguard Worker
15*c8d645caSAndroid Build Coastguard Workersyntax = "proto2";
16*c8d645caSAndroid Build Coastguard Workerimport "google/protobuf/descriptor.proto";
17*c8d645caSAndroid Build Coastguard Worker
18*c8d645caSAndroid Build Coastguard Workerpackage nanopb;
19*c8d645caSAndroid Build Coastguard Workeroption java_package = "fi.kapsi.koti.jpa.nanopb";
20*c8d645caSAndroid Build Coastguard Worker
21*c8d645caSAndroid Build Coastguard Workerenum FieldType {
22*c8d645caSAndroid Build Coastguard Worker    FT_DEFAULT = 0; // Automatically decide field type, generate static field if possible.
23*c8d645caSAndroid Build Coastguard Worker    FT_CALLBACK = 1; // Always generate a callback field.
24*c8d645caSAndroid Build Coastguard Worker    FT_POINTER = 4; // Always generate a dynamically allocated field.
25*c8d645caSAndroid Build Coastguard Worker    FT_STATIC = 2; // Generate a static field or raise an exception if not possible.
26*c8d645caSAndroid Build Coastguard Worker    FT_IGNORE = 3; // Ignore the field completely.
27*c8d645caSAndroid Build Coastguard Worker    FT_INLINE = 5; // Legacy option, use the separate 'fixed_length' option instead
28*c8d645caSAndroid Build Coastguard Worker}
29*c8d645caSAndroid Build Coastguard Worker
30*c8d645caSAndroid Build Coastguard Workerenum IntSize {
31*c8d645caSAndroid Build Coastguard Worker    IS_DEFAULT = 0; // Default, 32/64bit based on type in .proto
32*c8d645caSAndroid Build Coastguard Worker    IS_8 = 8;
33*c8d645caSAndroid Build Coastguard Worker    IS_16 = 16;
34*c8d645caSAndroid Build Coastguard Worker    IS_32 = 32;
35*c8d645caSAndroid Build Coastguard Worker    IS_64 = 64;
36*c8d645caSAndroid Build Coastguard Worker}
37*c8d645caSAndroid Build Coastguard Worker
38*c8d645caSAndroid Build Coastguard Worker// This is the inner options message, which basically defines options for
39*c8d645caSAndroid Build Coastguard Worker// a field. When it is used in message or file scope, it applies to all
40*c8d645caSAndroid Build Coastguard Worker// fields.
41*c8d645caSAndroid Build Coastguard Workermessage Options {
42*c8d645caSAndroid Build Coastguard Worker  // Allocated size for 'bytes' and 'string' fields.
43*c8d645caSAndroid Build Coastguard Worker  // For string fields, this should include the space for null terminator.
44*c8d645caSAndroid Build Coastguard Worker  optional int32 max_size = 1;
45*c8d645caSAndroid Build Coastguard Worker
46*c8d645caSAndroid Build Coastguard Worker  // Maximum length for 'string' fields. Setting this is equivalent
47*c8d645caSAndroid Build Coastguard Worker  // to setting max_size to a value of length+1.
48*c8d645caSAndroid Build Coastguard Worker  optional int32 max_length = 14;
49*c8d645caSAndroid Build Coastguard Worker
50*c8d645caSAndroid Build Coastguard Worker  // Allocated number of entries in arrays ('repeated' fields)
51*c8d645caSAndroid Build Coastguard Worker  optional int32 max_count = 2;
52*c8d645caSAndroid Build Coastguard Worker
53*c8d645caSAndroid Build Coastguard Worker  // Size of integer fields. Can save some memory if you don't need
54*c8d645caSAndroid Build Coastguard Worker  // full 32 bits for the value.
55*c8d645caSAndroid Build Coastguard Worker  optional IntSize int_size = 7 [default = IS_DEFAULT];
56*c8d645caSAndroid Build Coastguard Worker
57*c8d645caSAndroid Build Coastguard Worker  // Force type of field (callback or static allocation)
58*c8d645caSAndroid Build Coastguard Worker  optional FieldType type = 3 [default = FT_DEFAULT];
59*c8d645caSAndroid Build Coastguard Worker
60*c8d645caSAndroid Build Coastguard Worker  // Use long names for enums, i.e. EnumName_EnumValue.
61*c8d645caSAndroid Build Coastguard Worker  optional bool long_names = 4 [default = true];
62*c8d645caSAndroid Build Coastguard Worker
63*c8d645caSAndroid Build Coastguard Worker  // Add 'packed' attribute to generated structs.
64*c8d645caSAndroid Build Coastguard Worker  // Note: this cannot be used on CPUs that break on unaligned
65*c8d645caSAndroid Build Coastguard Worker  // accesses to variables.
66*c8d645caSAndroid Build Coastguard Worker  optional bool packed_struct = 5 [default = false];
67*c8d645caSAndroid Build Coastguard Worker
68*c8d645caSAndroid Build Coastguard Worker  // Add 'packed' attribute to generated enums.
69*c8d645caSAndroid Build Coastguard Worker  optional bool packed_enum = 10 [default = false];
70*c8d645caSAndroid Build Coastguard Worker
71*c8d645caSAndroid Build Coastguard Worker  // Skip this message
72*c8d645caSAndroid Build Coastguard Worker  optional bool skip_message = 6 [default = false];
73*c8d645caSAndroid Build Coastguard Worker
74*c8d645caSAndroid Build Coastguard Worker  // Generate oneof fields as normal optional fields instead of union.
75*c8d645caSAndroid Build Coastguard Worker  optional bool no_unions = 8 [default = false];
76*c8d645caSAndroid Build Coastguard Worker
77*c8d645caSAndroid Build Coastguard Worker  // integer type tag for a message
78*c8d645caSAndroid Build Coastguard Worker  optional uint32 msgid = 9;
79*c8d645caSAndroid Build Coastguard Worker
80*c8d645caSAndroid Build Coastguard Worker  // decode oneof as anonymous union
81*c8d645caSAndroid Build Coastguard Worker  optional bool anonymous_oneof = 11 [default = false];
82*c8d645caSAndroid Build Coastguard Worker
83*c8d645caSAndroid Build Coastguard Worker  // Proto3 singular field does not generate a "has_" flag
84*c8d645caSAndroid Build Coastguard Worker  optional bool proto3 = 12 [default = false];
85*c8d645caSAndroid Build Coastguard Worker
86*c8d645caSAndroid Build Coastguard Worker  // Generate an enum->string mapping function (can take up lots of space).
87*c8d645caSAndroid Build Coastguard Worker  optional bool enum_to_string = 13 [default = false];
88*c8d645caSAndroid Build Coastguard Worker
89*c8d645caSAndroid Build Coastguard Worker  // Generate bytes arrays with fixed length
90*c8d645caSAndroid Build Coastguard Worker  optional bool fixed_length = 15 [default = false];
91*c8d645caSAndroid Build Coastguard Worker
92*c8d645caSAndroid Build Coastguard Worker  // Generate repeated field with fixed count
93*c8d645caSAndroid Build Coastguard Worker  optional bool fixed_count = 16 [default = false];
94*c8d645caSAndroid Build Coastguard Worker}
95*c8d645caSAndroid Build Coastguard Worker
96*c8d645caSAndroid Build Coastguard Worker// Extensions to protoc 'Descriptor' type in order to define options
97*c8d645caSAndroid Build Coastguard Worker// inside a .proto file.
98*c8d645caSAndroid Build Coastguard Worker//
99*c8d645caSAndroid Build Coastguard Worker// Protocol Buffers extension number registry
100*c8d645caSAndroid Build Coastguard Worker// --------------------------------
101*c8d645caSAndroid Build Coastguard Worker// Project:  Nanopb
102*c8d645caSAndroid Build Coastguard Worker// Contact:  Petteri Aimonen <[email protected]>
103*c8d645caSAndroid Build Coastguard Worker// Web site: http://kapsi.fi/~jpa/nanopb
104*c8d645caSAndroid Build Coastguard Worker// Extensions: 1010 (all types)
105*c8d645caSAndroid Build Coastguard Worker// --------------------------------
106*c8d645caSAndroid Build Coastguard Worker
107*c8d645caSAndroid Build Coastguard Workerextend google.protobuf.FileOptions {
108*c8d645caSAndroid Build Coastguard Worker    optional Options fileopt = 1010;
109*c8d645caSAndroid Build Coastguard Worker}
110*c8d645caSAndroid Build Coastguard Worker
111*c8d645caSAndroid Build Coastguard Workerextend google.protobuf.MessageOptions {
112*c8d645caSAndroid Build Coastguard Worker    optional Options msgopt = 1010;
113*c8d645caSAndroid Build Coastguard Worker}
114*c8d645caSAndroid Build Coastguard Worker
115*c8d645caSAndroid Build Coastguard Workerextend google.protobuf.EnumOptions {
116*c8d645caSAndroid Build Coastguard Worker    optional Options enumopt = 1010;
117*c8d645caSAndroid Build Coastguard Worker}
118*c8d645caSAndroid Build Coastguard Worker
119*c8d645caSAndroid Build Coastguard Workerextend google.protobuf.FieldOptions {
120*c8d645caSAndroid Build Coastguard Worker    optional Options fieldopt = 1010;
121*c8d645caSAndroid Build Coastguard Worker}
122*c8d645caSAndroid Build Coastguard Worker
123*c8d645caSAndroid Build Coastguard Worker
124