// 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 Pack2_1 extends ffi.Struct {
  @ffi.Uint8()
  external int a;
}

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

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