# Functor Flat_array_debug.Debug

    module Debug: functor (Flat_array : Flat_array) -> sig .. end

Parameters:

`Flat_array` | : | `Flat_array`

    include struct ... end

    module Slots: Flat_array_debug.Flat_array.Slots

    module Slot: Flat_array_debug.Flat_array.Slot

    include struct ... end

    val sexp_of_t : 'a. ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t

    val create : ('a, 'b) Flat_array.Slots.t ->
           len:int -> 'a -> ('a, 'b) Flat_array.Slots.t Flat_array_debug.Flat_array.t

    val invariant : 'a Invariant_intf.inv -> 'a Flat_array_debug.Flat_array.t Invariant_intf.inv

    val length : 'a Flat_array_debug.Flat_array.t -> int

    val slots : 'a Flat_array_debug.Flat_array.t -> 'a

    val debug : string ->
           'a Flat_array_debug.Flat_array.t list ->
           'b -> ('b -> Sexplib.Sexp.t) -> ('c -> Sexplib.Sexp.t) -> (unit -> 'c) -> 'c

    val set_to_init : 'a Flat_array_debug.Flat_array.t -> int -> unit

    val is_init : 'a Flat_array_debug.Flat_array.t -> int -> bool

    val copy : 'a Flat_array_debug.Flat_array.t -> 'a t

    val debug_get : string ->
           ('a, 'b) Flat_array.Slots.t Flat_array_debug.Flat_array.t ->
           int -> ('b, 'c) Slot.t -> 'c

    val get : ('a, 'b) Flat_array.Slots.t Flat_array_debug.Flat_array.t ->
           int -> ('b, 'c) Slot.t -> 'c

    val unsafe_get : ('a, 'b) Flat_array.Slots.t Flat_array_debug.Flat_array.t ->
           int -> ('b, 'c) Slot.t -> 'c

    val debug_set : string ->
           ('a, 'b) Flat_array.Slots.t Flat_array_debug.Flat_array.t ->
           int -> ('b, 'c) Slot.t -> 'c -> unit

    val set : ('a, 'b) Flat_array.Slots.t Flat_array_debug.Flat_array.t ->
           int -> ('b, 'c) Slot.t -> 'c -> unit

    val unsafe_set : ('a, 'b) Flat_array.Slots.t Flat_array_debug.Flat_array.t ->
           int -> ('b, 'c) Slot.t -> 'c -> unit

    val get_all_slots : ('a, 'b) Flat_array.Slots.t Flat_array_debug.Flat_array.t -> int -> 'a

    val set_all_slots : ('a, 'b) Flat_array.Slots.t Flat_array_debug.Flat_array.t ->
           int -> 'a -> unit

    val blit : src:'a Flat_array_debug.Flat_array.t ->
           src_pos:int ->
           dst:'a Flat_array_debug.Flat_array.t -> dst_pos:int -> len:int -> unit

    val unsafe_blit : src:'a Flat_array_debug.Flat_array.t ->
           src_pos:int ->
           dst:'a Flat_array_debug.Flat_array.t -> dst_pos:int -> len:int -> unit

    val blito : src:'a Flat_array_debug.Flat_array.t ->
           ?src_pos:int ->
           ?src_len:int ->
           dst:'a Flat_array_debug.Flat_array.t -> ?dst_pos:int -> unit -> unit

    val sub : 'a Flat_array_debug.Flat_array.t -> pos:int -> len:int -> 'a t

    val subo : ?pos:int -> ?len:int -> 'a Flat_array_debug.Flat_array.t -> 'a t