blob: 81fba9d24cf7c4195ca60cc98cf90dcdb450c328 [file] [log] [blame]
library test.padding;
type Padding1ByteEnd = struct {
a uint16;
b uint8;
// 1 byte padding
};
type Padding2ByteEnd = struct {
a uint32;
b uint16;
// 2 byte padding
};
type Padding3ByteEnd = struct {
a uint32;
b uint8;
// 3 byte padding
};
type Padding4ByteEnd = struct {
a uint64;
b uint32;
// 4 byte padding
};
type Padding5ByteEnd = struct {
a uint64;
b uint16;
c uint8;
// 5 byte padding
};
type Padding6ByteEnd = struct {
a uint64;
b uint16;
// 6 byte padding
};
type Padding7ByteEnd = struct {
a uint64;
b uint8;
// 7 byte padding
};
type Padding1ByteMiddle = struct {
a uint8;
// 1 byte padding
b uint16;
};
type Padding2ByteMiddle = struct {
a uint16;
// 2 byte padding
b uint32;
};
type Padding3ByteMiddle = struct {
a uint8;
// 3 byte padding
b uint32;
};
type Padding4ByteMiddle = struct {
a uint32;
// 4 byte padding
b uint64;
};
type Padding5ByteMiddle = struct {
a uint16;
b uint8;
// 5 byte padding
c uint64;
};
type Padding6ByteMiddle = struct {
a uint16;
// 6 byte padding
b uint64;
};
type Padding7ByteMiddle = struct {
a uint8;
// 7 byte padding
b uint64;
};
// The following structs test generation of padding masks for bindings that use
// them. For example, for a 4-byte aligned struct with length 12, two masks
// might be generated to cover the length - an 8-byte and 4-byte mask.
type Padding4ByteAlignmentLength12 = struct {
a uint32;
b uint8;
// 1 byte padding
c uint16;
d uint16;
// 2 bytes padding
};
type Padding2ByteAlignmentLength6 = struct {
// 4 byte padding mask starts here.
a uint8;
// 1 byte padding
b uint16;
// 2 byte padding mask starts here.
c uint8;
// 1 byte padding
};