syntax = "proto2";
import "nanopb.proto";

message SubMessage
{
    optional string dynamic_str = 1 [(nanopb).type = FT_POINTER];
    repeated string dynamic_str_arr = 2 [(nanopb).type = FT_POINTER];
    repeated SubMessage dynamic_submsg = 3 [(nanopb).type = FT_POINTER];
}

message TestMessage
{
    required SubMessage static_req_submsg = 1 [(nanopb).type = FT_STATIC];
    optional SubMessage dynamic_submsg = 2 [(nanopb).type = FT_POINTER];
    optional SubMessage static_opt_submsg = 3 [(nanopb).type = FT_STATIC];
    repeated SubMessage static_rep_submsg = 4 [(nanopb).type = FT_STATIC, (nanopb).max_count=2];
    extensions 100 to 200;
}

extend TestMessage
{
    optional SubMessage dynamic_ext = 100 [(nanopb).type = FT_POINTER];
    optional SubMessage static_ext = 101 [(nanopb).type = FT_STATIC];
}

message OneofMessage
{
    required int32 first = 1;
    oneof msgs
    {
        TestMessage msg1 = 2;
        SubMessage msg2 = 3;
    }
    required int32 last = 4;
}

message RepeatedMessage
{
    required int32 first = 1;
    repeated SubMessage subs = 2;
}
