analyzeStructLayout function
Function to analyze struct layout
struct
: The AlignedStruct instance to analyze
Implementation
void analyzeStructLayout(AlignedStruct struct) {
final fields = [
StructField(
offset: 0, size: sizeOf<Int32>(), alignment: StructAlignment.align4),
StructField(
offset: 8, size: sizeOf<Float>(), alignment: StructAlignment.align8),
StructField(
offset: 16, size: sizeOf<Int32>(), alignment: StructAlignment.align2),
StructField(
offset: 20, size: sizeOf<Int32>(), alignment: StructAlignment.packed),
];
int totalSize = 0;
for (var field in fields) {
final padding =
AlignmentUtils.calculatePadding(field.offset, field.alignment.value);
totalSize = field.nextOffset;
stdout.write('Field at offset ${field.offset}: '
'size ${field.size}, '
'alignment ${field.alignment.value}, '
'padding $padding bytes');
}
// Round up total size to struct alignment
totalSize = AlignmentUtils.calculateAlignedSize(totalSize, 16);
stdout.write('Total struct size: $totalSize bytes');
}