// AUTO GENERATED FILE, DO NOT EDIT.
//
// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;

class NoPacking extends ffi.Struct {
  @ffi.Uint8()
  external int a;
}

@ffi.Packed(1)
class Pack1 extends ffi.Struct {
  @ffi.Uint8()
  external int a;
}

@ffi.Packed(2)
class Pack2 extends ffi.Struct {
  @ffi.Uint8()
  external int a;
}

@ffi.Packed(4)
class Pack21 extends ffi.Struct {
  @ffi.Uint8()
  external int a;
}

@ffi.Packed(8)
class Pack22 extends ffi.Struct {
  @ffi.Uint8()
  external int a;
}

@ffi.Packed(16)
class Pack16 extends ffi.Struct {
  @ffi.Uint8()
  external int a;
}
