syntax = "proto3";
package c_repeated;
// Fixture for bd-jc9 (ra6 3e): repeated + packed C-runtime acceptance.
//
// Carries packed (proto3 default), explicit [packed=false], length-
// delimited (string/bytes — never packable), and repeated sub-message
// shapes so the C runtime exercises every repeated dispatch branch
// against the same mode=full reference.
//
// Field numbers cluster by encoding shape so a hand-decode of a small
// encoded payload stays readable when debugging fixture drift.
message Inner {
int32 v = 1;
string s = 2;
}
message Holder {
// Packed scalars (proto3 default). One per encoder branch.
repeated int32 packed_int32 = 1;
repeated int64 packed_int64 = 2;
repeated sint32 packed_sint32 = 3;
repeated uint32 packed_uint32 = 4;
repeated fixed32 packed_fixed32 = 5;
repeated fixed64 packed_fixed64 = 6;
repeated double packed_double = 7;
repeated float packed_float = 8;
repeated bool packed_bool = 9;
// Explicit unpacked — emits one tag per element.
repeated int32 unpacked_int32 = 20 [packed = false];
repeated fixed64 unpacked_fixed64 = 21 [packed = false];
repeated sint32 unpacked_sint32 = 22 [packed = false];
// Length-delimited element kinds — never packable.
repeated string strings = 30;
repeated bytes blobs = 31;
// Repeated sub-message — per-element tag + length-prefix + body.
repeated Inner messages = 40;
}