sig
  type atom = P of Cil_types.typ | I of Ctypes.c_int | F of Ctypes.c_float
  val pp_atom : Format.formatter -> MemTyped.Layout.atom -> unit
  val eqatom : MemTyped.Layout.atom -> MemTyped.Layout.atom -> bool
  type block =
      Str of MemTyped.Layout.atom * int
    | Arr of MemTyped.Layout.layout * int
    | Garbled
  and layout = MemTyped.Layout.block list
  val pp_block : Format.formatter -> MemTyped.Layout.block -> unit
  val pp_layout : Format.formatter -> MemTyped.Layout.layout -> unit
  val add_atom :
    MemTyped.Layout.atom ->
    MemTyped.Layout.block list -> MemTyped.Layout.block list
  val add_block :
    MemTyped.Layout.block ->
    MemTyped.Layout.block list -> MemTyped.Layout.block list
  val add_many :
    MemTyped.Layout.layout ->
    int -> MemTyped.Layout.block list -> MemTyped.Layout.block list
  val rlayout :
    MemTyped.Layout.block list ->
    Ctypes.c_object -> MemTyped.Layout.block list
  val flayout :
    MemTyped.Layout.block list ->
    Cil_types.fieldinfo -> MemTyped.Layout.block list
  val layout : Ctypes.c_object -> MemTyped.Layout.layout
  type comparison = Fit | Equal | Mismatch
  val add_array :
    MemTyped.Layout.layout ->
    int -> MemTyped.Layout.block list -> MemTyped.Layout.block list
  val compare :
    MemTyped.Layout.layout ->
    MemTyped.Layout.layout -> MemTyped.Layout.comparison
  val fits : Ctypes.c_object -> Ctypes.c_object -> bool
  val pretty : Format.formatter -> Ctypes.c_object -> unit
end