sig

  type (!'a, !'b, !'c) t
  val create :
    ('a, 'b) Bigarray.kind ->
    'c Bigarray.layout -> int -> int -> ('a, 'b, 'c) Bigarray.Array2.t
  val init :
    ('a, 'b) Bigarray.kind ->
    'c Bigarray.layout ->
    int -> int -> (int -> int -> 'a) -> ('a, 'b, 'c) Bigarray.Array2.t
  external dim1 : ('a, 'b, 'c) Bigarray.Array2.t -> int = "%caml_ba_dim_1"
  external dim2 : ('a, 'b, 'c) Bigarray.Array2.t -> int = "%caml_ba_dim_2"
  external kind : ('a, 'b, 'c) Bigarray.Array2.t -> ('a, 'b) Bigarray.kind
    = "caml_ba_kind"
  external layout : ('a, 'b, 'c) Bigarray.Array2.t -> 'c Bigarray.layout
    = "caml_ba_layout"
  val change_layout :
    ('a, 'b, 'c) Bigarray.Array2.t ->
    'd Bigarray.layout -> ('a, 'b, 'd) Bigarray.Array2.t
  val size_in_bytes : ('a, 'b, 'c) Bigarray.Array2.t -> int
  external get : ('a, 'b, 'c) Bigarray.Array2.t -> int -> int -> 'a
    = "%caml_ba_ref_2"
  external set : ('a, 'b, 'c) Bigarray.Array2.t -> int -> int -> 'a -> unit
    = "%caml_ba_set_2"
  external sub_left :
    ('a, 'b, Bigarray.c_layout) Bigarray.Array2.t ->
    int -> int -> ('a, 'b, Bigarray.c_layout) Bigarray.Array2.t
    = "caml_ba_sub"
  external sub_right :
    ('a, 'b, Bigarray.fortran_layout) Bigarray.Array2.t ->
    int -> int -> ('a, 'b, Bigarray.fortran_layout) Bigarray.Array2.t
    = "caml_ba_sub"
  val slice_left :
    ('a, 'b, Bigarray.c_layout) Bigarray.Array2.t ->
    int -> ('a, 'b, Bigarray.c_layout) Bigarray.Array1.t
  val slice_right :
    ('a, 'b, Bigarray.fortran_layout) Bigarray.Array2.t ->
    int -> ('a, 'b, Bigarray.fortran_layout) Bigarray.Array1.t
  external blit :
    ('a, 'b, 'c) Bigarray.Array2.t -> ('a, 'b, 'c) Bigarray.Array2.t -> unit
    = "caml_ba_blit"
  external fill : ('a, 'b, 'c) Bigarray.Array2.t -> 'a -> unit
    = "caml_ba_fill"
  val of_array :
    ('a, 'b) Bigarray.kind ->
    'c Bigarray.layout -> 'a array array -> ('a, 'b, 'c) Bigarray.Array2.t
  external unsafe_get : ('a, 'b, 'c) Bigarray.Array2.t -> int -> int -> 'a
    = "%caml_ba_unsafe_ref_2"
  external unsafe_set :
    ('a, 'b, 'c) Bigarray.Array2.t -> int -> int -> 'a -> unit
    = "%caml_ba_unsafe_set_2"
end