syntax = "proto2";

package test;

enum ScalarEnum {
    S_FIRST = 1;
    S_SECOND = 2;
    S_THIRD = 3;
}

message Basic {
    optional double double_f = 1;
    optional float float_f = 2;
    optional int32 int32_f = 3;
    optional int64 int64_f = 4;
    optional uint32 uint32_f = 5;
    optional uint64 uint64_f = 6;
    optional bool bool_f = 7;
    optional string string_f = 8;
    optional bytes bytes_f = 9;
    optional ScalarEnum enum_f = 10;
    optional sint32 sint32_f = 11;
    optional sint64 sint64_f = 12;
    optional fixed32 fixed32_f = 13;
    optional sfixed32 sfixed32_f = 14;
    optional fixed64 fixed64_f = 15;
    optional sfixed64 sfixed64_f = 16;
}

message Default {
    optional double double_f = 1 [default = 1.0];
    optional float float_f = 2 [default = 2.0];
    optional int32 int32_f = 3 [default = 3];
    optional int64 int64_f = 4 [default = 4];
    optional uint32 uint32_f = 5 [default = 5];
    optional uint64 uint64_f = 6 [default = 6];
    optional bool bool_f = 7 [default = true];
    optional string string_f = 8 [default = "a string"];
    optional bytes bytes_f = 9 [default = "some bytes"];
    optional ScalarEnum enum_f = 10 [default = S_THIRD];
    optional sint32 sint32_f = 11 [default = -7];
    optional sint64 sint64_f = 12 [default = -8];
    optional fixed32 fixed32_f = 13 [default = 9];
    optional sfixed32 sfixed32_f = 14 [default = -10];
    optional fixed64 fixed64_f = 15 [default = 11];
    optional sfixed64 sfixed64_f = 16 [default = -12];
}