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