sig
  type 'a t = 'a Ctypes.carray
  val get : 'a Ctypes.CArray.t -> int -> 'a
  val set : 'a Ctypes.CArray.t -> int -> 'a -> unit
  val unsafe_get : 'a Ctypes.CArray.t -> int -> 'a
  val unsafe_set : 'a Ctypes.CArray.t -> int -> 'a -> unit
  val of_list : 'a typ -> 'a list -> 'a Ctypes.CArray.t
  val to_list : 'a Ctypes.CArray.t -> 'a list
  val iter : ('a -> unit) -> 'a Ctypes.CArray.t -> unit
  val map : 'b typ -> ('a -> 'b) -> 'a Ctypes.CArray.t -> 'b Ctypes.CArray.t
  val mapi :
    'b typ -> (int -> 'a -> 'b) -> 'a Ctypes.CArray.t -> 'b Ctypes.CArray.t
  val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b Ctypes.CArray.t -> 'a
  val fold_right : ('b -> 'a -> 'a) -> 'b Ctypes.CArray.t -> 'a -> 'a
  val length : 'a Ctypes.CArray.t -> int
  val start : 'a Ctypes.CArray.t -> 'a Ctypes.ptr
  val from_ptr : 'a Ctypes.ptr -> int -> 'a Ctypes.CArray.t
  val make :
    ?finalise:('a Ctypes.CArray.t -> unit) ->
    'a typ -> ?initial:'a -> int -> 'a Ctypes.CArray.t
  val copy : 'a Ctypes.CArray.t -> 'a Ctypes.CArray.t
  val sub : 'a Ctypes.CArray.t -> pos:int -> length:int -> 'a Ctypes.CArray.t
  val element_type : 'a Ctypes.CArray.t -> 'a typ
end