syntax = "proto2"; message SubMessage { required string substuff1 = 1 [default = "1"]; required int32 substuff2 = 2 [default = 2]; optional fixed32 substuff3 = 12365535 [default = 3]; } message EmptyMessage { } enum HugeEnum { Negative = -2147483647; /* protoc doesn't accept -2147483648 here */ Positive = 2147483647; } message Limits { required int32 int32_min = 1; required int32 int32_max = 2; required uint32 uint32_min = 3; required uint32 uint32_max = 4; required int64 int64_min = 5; required int64 int64_max = 6; required uint64 uint64_min = 7; required uint64 uint64_max = 8; required HugeEnum enum_min = 9; required HugeEnum enum_max = 10; } enum MyEnum { Zero = 0; First = 1; Second = 2; Truth = 42; } message AllTypes { required int32 req_int32 = 1; required int64 req_int64 = 2; required uint32 req_uint32 = 3; required uint64 req_uint64 = 4; required sint32 req_sint32 = 5; required sint64 req_sint64 = 6; required bool req_bool = 7; required fixed32 req_fixed32 = 8; required sfixed32 req_sfixed32= 9; required float req_float = 10; required fixed64 req_fixed64 = 11; required sfixed64 req_sfixed64= 12; required double req_double = 13; required string req_string = 14; required bytes req_bytes = 15; required SubMessage req_submsg = 16; required MyEnum req_enum = 17; required EmptyMessage req_emptymsg = 18; required bytes req_fbytes = 19; repeated int32 rep_int32 = 21; repeated int64 rep_int64 = 22; repeated uint32 rep_uint32 = 23; repeated uint64 rep_uint64 = 24; repeated sint32 rep_sint32 = 25; repeated sint64 rep_sint64 = 26; repeated bool rep_bool = 27; repeated fixed32 rep_fixed32 = 28; repeated sfixed32 rep_sfixed32= 29; repeated float rep_float = 30; repeated fixed64 rep_fixed64 = 10031; repeated sfixed64 rep_sfixed64= 10032; repeated double rep_double = 10033; repeated string rep_string = 10034; repeated bytes rep_bytes = 10035; repeated SubMessage rep_submsg = 10036; repeated MyEnum rep_enum = 10037; repeated EmptyMessage rep_emptymsg = 10038; repeated bytes rep_fbytes = 10039; optional int32 opt_int32 = 10041 [default = 4041]; optional int64 opt_int64 = 10042 [default = 4042]; optional uint32 opt_uint32 = 10043 [default = 4043]; optional uint64 opt_uint64 = 10044 [default = 4044]; optional sint32 opt_sint32 = 10045 [default = 4045]; optional sint64 opt_sint64 = 10046 [default = 4046]; optional bool opt_bool = 10047 [default = false]; optional fixed32 opt_fixed32 = 10048 [default = 4048]; optional sfixed32 opt_sfixed32= 10049 [default = 4049]; optional float opt_float = 10050 [default = 4050]; optional fixed64 opt_fixed64 = 10051 [default = 4051]; optional sfixed64 opt_sfixed64= 10052 [default = 4052]; optional double opt_double = 10053 [default = 4053]; optional string opt_string = 10054 [default = "4054"]; optional bytes opt_bytes = 10055 [default = "\x34\x5C\x00\xff"]; optional SubMessage opt_submsg = 10056; optional MyEnum opt_enum = 10057 [default = Second]; optional EmptyMessage opt_emptymsg = 10058; optional bytes opt_fbytes = 10059 [default = "4059"]; oneof oneof { SubMessage oneof_msg1 = 10060; EmptyMessage oneof_msg2 = 10061; } // Check that extreme integer values are handled correctly required Limits req_limits = 98; // Just to make sure that the size of the fields has been calculated // properly, i.e. otherwise a bug in last field might not be detected. required int32 end = 13432099; extensions 200 to 255; }