1syntax = "proto2"; 2// package name placeholder 3 4message SubMessage { 5 required string substuff1 = 1 [default = "1"]; 6 required int32 substuff2 = 2 [default = 2]; 7 optional fixed32 substuff3 = 3 [default = 3]; 8} 9 10message EmptyMessage { 11 12} 13 14enum HugeEnum { 15 Negative = -2147483647; /* protoc doesn't accept -2147483648 here */ 16 Positive = 2147483647; 17} 18 19message Limits { 20 required int32 int32_min = 1 [default = 2147483647]; 21 required int32 int32_max = 2 [default = -2147483647]; 22 required uint32 uint32_min = 3 [default = 4294967295]; 23 required uint32 uint32_max = 4 [default = 0]; 24 required HugeEnum enum_min = 9 [default = Positive]; 25 required HugeEnum enum_max = 10 [default = Negative]; 26} 27 28enum MyEnum { 29 Zero = 0; 30 First = 1; 31 Second = 2; 32 Truth = 42; 33} 34 35message AllTypes { 36 required int32 req_int32 = 1; 37 required uint32 req_uint32 = 3; 38 required sint32 req_sint32 = 5; 39 required bool req_bool = 7; 40 41 required fixed32 req_fixed32 = 8; 42 required sfixed32 req_sfixed32= 9; 43 required float req_float = 10; 44 45 required string req_string = 14; 46 required bytes req_bytes = 15; 47 required SubMessage req_submsg = 16; 48 required MyEnum req_enum = 17; 49 required EmptyMessage req_emptymsg = 18; 50 required bytes req_fbytes = 19; 51 52 repeated int32 rep_int32 = 21 [packed = true]; 53 repeated uint32 rep_uint32 = 23 [packed = true]; 54 repeated sint32 rep_sint32 = 25 [packed = true]; 55 repeated bool rep_bool = 27 [packed = true]; 56 57 repeated fixed32 rep_fixed32 = 28 [packed = true]; 58 repeated sfixed32 rep_sfixed32= 29 [packed = true]; 59 repeated float rep_float = 30 [packed = true]; 60 61 repeated string rep_string = 34; 62 repeated bytes rep_bytes = 35; 63 repeated SubMessage rep_submsg = 36; 64 repeated MyEnum rep_enum = 37 [packed = true]; 65 repeated EmptyMessage rep_emptymsg = 38; 66 repeated bytes rep_fbytes = 39; 67 68 optional int32 opt_int32 = 41 [default = 4041]; 69 optional uint32 opt_uint32 = 43 [default = 4043]; 70 optional sint32 opt_sint32 = 45 [default = 4045]; 71 optional bool opt_bool = 47 [default = false]; 72 73 optional fixed32 opt_fixed32 = 48 [default = 4048]; 74 optional sfixed32 opt_sfixed32= 49 [default = 4049]; 75 optional float opt_float = 50 [default = 4050]; 76 77 optional string opt_string = 54 [default = "4054"]; 78 optional bytes opt_bytes = 55 [default = "4055"]; 79 optional SubMessage opt_submsg = 56; 80 optional MyEnum opt_enum = 57 [default = Second]; 81 optional EmptyMessage opt_emptymsg = 58; 82 optional bytes opt_fbytes = 59 [default = "4059"]; 83 84 oneof oneof 85 { 86 SubMessage oneof_msg1 = 60; 87 EmptyMessage oneof_msg2 = 61; 88 } 89 90 // Check that extreme integer values are handled correctly 91 required Limits req_limits = 98; 92 93 // Just to make sure that the size of the fields has been calculated 94 // properly, i.e. otherwise a bug in last field might not be detected. 95 required int32 end = 99; 96 97 98 extensions 200 to 255; 99} 100 101