syntax = "proto2";
// package name placeholder

enum NonZeroBasedEnum {
    Two = 2;
    Three = 3;
    Four = 4;
}

message SubMessage {
    required string substuff1 = 1 [default = "1"];
    required int32 substuff2 = 2 [default = 2];
    optional fixed32 substuff3 = 3 [default = 3];
}

message EmptyMessage {

}

enum HugeEnum {
    Negative = -2147483647; /* protoc doesn't accept -2147483648 here */
    Positive =  2147483647;
}

message Limits {
    required int32      int32_min  =  1 [default = 2147483647];
    required int32      int32_max  =  2 [default = -2147483647];
    required uint32     uint32_min =  3 [default = 4294967295];
    required uint32     uint32_max =  4 [default = 0];
    required int64      int64_min  =  5 [default = 9223372036854775807];
    required int64      int64_max  =  6 [default = -9223372036854775807];
    required uint64     uint64_min =  7 [default = 18446744073709551615];
    required uint64     uint64_max =  8 [default = 0];
    required HugeEnum   enum_min   =  9 [default = Positive];
    required HugeEnum   enum_max   = 10 [default = Negative];
    required int32      largetag   = 65535 [default = 0];
}

message IntSizes {
    required int32  req_int8 =   1 ;
    required uint32 req_uint8 =  2 ;
    required sint32 req_sint8 =  3 ;
    required int32  req_int16 =  4 ;
    required uint32 req_uint16 = 5 ;
    required sint32 req_sint16 = 6 ;
}

message DescriptorSize8 {
    required int32 first = 1;
    required int32 second = 22222;
}

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 [packed = true];
    repeated int64      rep_int64   = 22 [packed = true];
    repeated uint32     rep_uint32  = 23 [packed = true];
    repeated uint64     rep_uint64  = 24 [packed = true];
    repeated sint32     rep_sint32  = 25 [packed = true];
    repeated sint64     rep_sint64  = 26 [packed = true];
    repeated bool       rep_bool    = 27 [packed = true];
    
    repeated fixed32    rep_fixed32 = 28 [packed = true];
    repeated sfixed32   rep_sfixed32= 29 [packed = true];
    repeated float      rep_float   = 30 [packed = true];
    
    repeated fixed64    rep_fixed64 = 31 [packed = true];
    repeated sfixed64   rep_sfixed64= 32 [packed = true];
    repeated double     rep_double  = 33 [packed = true];
    
    repeated string     rep_string  = 34;
    repeated bytes      rep_bytes   = 35;
    repeated SubMessage rep_submsg  = 36;
    repeated MyEnum     rep_enum    = 37 [packed = true];
    repeated EmptyMessage rep_emptymsg = 38;
    repeated bytes      rep_fbytes  = 39;
    repeated int32      rep_farray  = 40 [packed = true];
    
    optional int32      opt_int32   = 41 [default = 4041];
    optional int64      opt_int64   = 42 [default = 4042];
    optional uint32     opt_uint32  = 43 [default = 4043];
    optional uint64     opt_uint64  = 44 [default = 4044];
    optional sint32     opt_sint32  = 45 [default = 4045];
    optional sint64     opt_sint64  = 46 [default = 4046];
    optional bool       opt_bool    = 47 [default = false];
    
    optional fixed32    opt_fixed32 = 48 [default = 4048];
    optional sfixed32   opt_sfixed32= 49 [default = 4049];
    optional float      opt_float   = 50 [default = 4050];
    
    optional fixed64    opt_fixed64 = 51 [default = 4051];
    optional sfixed64   opt_sfixed64= 52 [default = 4052];
    optional double     opt_double  = 53 [default = 4053];
    
    optional string     opt_string  = 54 [default = "4054"];
    optional bytes      opt_bytes   = 55 [default = "\x34\x5C\x00\xff"];
    optional SubMessage opt_submsg  = 56;
    optional MyEnum     opt_enum    = 57 [default = Second];
    optional EmptyMessage opt_emptymsg = 58;
    optional bytes      opt_fbytes  = 59 [default = "4059"];

    oneof oneof
    {
        SubMessage oneof_msg1 = 60;
        EmptyMessage oneof_msg2 = 61;
        SubMessage static_msg = 63;
    }

    optional NonZeroBasedEnum opt_non_zero_based_enum = 62;
    
    // Second fixed length array field to test the length check logic.
    repeated fixed32 rep_farray2 = 95 [packed = true];

    // Check support for custom integer sizes
    required IntSizes req_intsizes = 96;

    // Check support for 8-word descriptors
    required DescriptorSize8 req_ds8 = 97;

    // Check that extreme integer values are handled correctly
    // Also checks support for 4-word descriptors
    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 = 999;


    extensions 200 to 255;
}

message TestExtension {
    extend AllTypes {
        optional TestExtension testextension = 250;
    }
    optional string strval = 1;
}
