library test.encapsulatedstructs;

using zx;

type Int8Int32 = struct {
    a int8;
    // padding of 3 bytes.
    b int32;
};

type Int16Int8 = struct {
    a int16;
    b int8;
    // padding of 1 byte.
};

type ArrayInt16Int8 = struct {
    arr array<Int16Int8, 3>;
    // inner padding plus 3 bytes padding at the end.
};

type StructPaddingTestStruct = struct {
    trailing Int16Int8;
    // padding of 4 bytes.
    // after flattening the FourByteAlignedTrailingPaddingStruct into this
    // struct for the coding tables, there will be 5 bytes of padding.
    inner Int8Int32;
    array ArrayInt16Int8;
    // after flattening, there should be 3 bytes of padding after the array
    // elements.
};

type NonInlineStructTestStruct = resource struct {
    element box<Int16Int8>; // 8-byte alignment
    h zx.handle;
    // 4-byte padding after handle.
};

type TopLevelStruct = resource struct {
    a StructPaddingTestStruct;
    b NonInlineStructTestStruct;
};
