1syntax = "proto2"; 2 3message SubMessage { 4 required string substuff1 = 1 [default = "1"]; 5 required int32 substuff2 = 2 [default = 2]; 6 optional fixed32 substuff3 = 12365535 [default = 3]; 7} 8 9message EmptyMessage { 10 11} 12 13enum HugeEnum { 14 Negative = -2147483647; /* protoc doesn't accept -2147483648 here */ 15 Positive = 2147483647; 16} 17 18message Limits { 19 required int32 int32_min = 1; 20 required int32 int32_max = 2; 21 required uint32 uint32_min = 3; 22 required uint32 uint32_max = 4; 23 required int64 int64_min = 5; 24 required int64 int64_max = 6; 25 required uint64 uint64_min = 7; 26 required uint64 uint64_max = 8; 27 required HugeEnum enum_min = 9; 28 required HugeEnum enum_max = 10; 29} 30 31enum MyEnum { 32 Zero = 0; 33 First = 1; 34 Second = 2; 35 Truth = 42; 36} 37 38message AllTypes { 39 required int32 req_int32 = 1; 40 required int64 req_int64 = 2; 41 required uint32 req_uint32 = 3; 42 required uint64 req_uint64 = 4; 43 required sint32 req_sint32 = 5; 44 required sint64 req_sint64 = 6; 45 required bool req_bool = 7; 46 47 required fixed32 req_fixed32 = 8; 48 required sfixed32 req_sfixed32= 9; 49 required float req_float = 10; 50 51 required fixed64 req_fixed64 = 11; 52 required sfixed64 req_sfixed64= 12; 53 required double req_double = 13; 54 55 required string req_string = 14; 56 required bytes req_bytes = 15; 57 required SubMessage req_submsg = 16; 58 required MyEnum req_enum = 17; 59 required EmptyMessage req_emptymsg = 18; 60 required bytes req_fbytes = 19; 61 62 repeated int32 rep_int32 = 21; 63 repeated int64 rep_int64 = 22; 64 repeated uint32 rep_uint32 = 23; 65 repeated uint64 rep_uint64 = 24; 66 repeated sint32 rep_sint32 = 25; 67 repeated sint64 rep_sint64 = 26; 68 repeated bool rep_bool = 27; 69 70 repeated fixed32 rep_fixed32 = 28; 71 repeated sfixed32 rep_sfixed32= 29; 72 repeated float rep_float = 30; 73 74 repeated fixed64 rep_fixed64 = 10031; 75 repeated sfixed64 rep_sfixed64= 10032; 76 repeated double rep_double = 10033; 77 78 repeated string rep_string = 10034; 79 repeated bytes rep_bytes = 10035; 80 repeated SubMessage rep_submsg = 10036; 81 repeated MyEnum rep_enum = 10037; 82 repeated EmptyMessage rep_emptymsg = 10038; 83 repeated bytes rep_fbytes = 10039; 84 85 optional int32 opt_int32 = 10041 [default = 4041]; 86 optional int64 opt_int64 = 10042 [default = 4042]; 87 optional uint32 opt_uint32 = 10043 [default = 4043]; 88 optional uint64 opt_uint64 = 10044 [default = 4044]; 89 optional sint32 opt_sint32 = 10045 [default = 4045]; 90 optional sint64 opt_sint64 = 10046 [default = 4046]; 91 optional bool opt_bool = 10047 [default = false]; 92 93 optional fixed32 opt_fixed32 = 10048 [default = 4048]; 94 optional sfixed32 opt_sfixed32= 10049 [default = 4049]; 95 optional float opt_float = 10050 [default = 4050]; 96 97 optional fixed64 opt_fixed64 = 10051 [default = 4051]; 98 optional sfixed64 opt_sfixed64= 10052 [default = 4052]; 99 optional double opt_double = 10053 [default = 4053]; 100 101 optional string opt_string = 10054 [default = "4054"]; 102 optional bytes opt_bytes = 10055 [default = "\x34\x5C\x00\xff"]; 103 optional SubMessage opt_submsg = 10056; 104 optional MyEnum opt_enum = 10057 [default = Second]; 105 optional EmptyMessage opt_emptymsg = 10058; 106 optional bytes opt_fbytes = 10059 [default = "4059"]; 107 108 oneof oneof 109 { 110 SubMessage oneof_msg1 = 10060; 111 EmptyMessage oneof_msg2 = 10061; 112 } 113 114 // Check that extreme integer values are handled correctly 115 required Limits req_limits = 98; 116 117 // Just to make sure that the size of the fields has been calculated 118 // properly, i.e. otherwise a bug in last field might not be detected. 119 required int32 end = 13432099; 120 121 extensions 200 to 255; 122} 123 124