// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc.  All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd

edition = "2023";

package packed_field_test;

option java_package = "com.google.protobuf";
option java_outer_classname = "PackedFieldTestProto";

message TestAllTypes {
  enum NestedEnum {
    FOO = 0;
    BAR = 1;
    BAZ = 2;
  }

  repeated int32 repeated_int32 = 31;
  repeated int64 repeated_int64 = 32;
  repeated uint32 repeated_uint32 = 33;
  repeated uint64 repeated_uint64 = 34;
  repeated sint32 repeated_sint32 = 35;
  repeated sint64 repeated_sint64 = 36;
  repeated fixed32 repeated_fixed32 = 37;
  repeated fixed64 repeated_fixed64 = 38;
  repeated sfixed32 repeated_sfixed32 = 39;
  repeated sfixed64 repeated_sfixed64 = 40;
  repeated float repeated_float = 41;
  repeated double repeated_double = 42;
  repeated bool repeated_bool = 43;
  repeated NestedEnum repeated_nested_enum = 51;
}

message TestUnpackedTypes {
  repeated int32 repeated_int32 = 1
      [features.repeated_field_encoding = EXPANDED];

  repeated int64 repeated_int64 = 2
      [features.repeated_field_encoding = EXPANDED];

  repeated uint32 repeated_uint32 = 3
      [features.repeated_field_encoding = EXPANDED];

  repeated uint64 repeated_uint64 = 4
      [features.repeated_field_encoding = EXPANDED];

  repeated sint32 repeated_sint32 = 5
      [features.repeated_field_encoding = EXPANDED];

  repeated sint64 repeated_sint64 = 6
      [features.repeated_field_encoding = EXPANDED];

  repeated fixed32 repeated_fixed32 = 7
      [features.repeated_field_encoding = EXPANDED];

  repeated fixed64 repeated_fixed64 = 8
      [features.repeated_field_encoding = EXPANDED];

  repeated sfixed32 repeated_sfixed32 = 9
      [features.repeated_field_encoding = EXPANDED];

  repeated sfixed64 repeated_sfixed64 = 10
      [features.repeated_field_encoding = EXPANDED];

  repeated float repeated_float = 11
      [features.repeated_field_encoding = EXPANDED];

  repeated double repeated_double = 12
      [features.repeated_field_encoding = EXPANDED];

  repeated bool repeated_bool = 13
      [features.repeated_field_encoding = EXPANDED];

  repeated TestAllTypes.NestedEnum repeated_nested_enum = 14
      [features.repeated_field_encoding = EXPANDED];
}
