# Module Raw

    module Raw: sig .. end

    type +'a t

    type kind = [ `bitmap
           | `byte
           | `double
           | `float
           | `int
           | `long
           | `short
           | `ubyte
           | `uint
           | `ulong
           | `ushort ]

    type fkind = [ `double | `float ]

    type ikind = [ `bitmap | `byte | `int | `long | `short | `ubyte | `uint | `ulong | `ushort
           ]

    type lkind = [ `int | `long | `uint | `ulong ]

    val create : ([< kind ] as 'a) -> len:int -> 'a t

    val create_static : ([< kind ] as 'a) -> len:int -> 'a t

    val free_static : 'a t -> unit

    val kind : 'a t -> 'a

    val byte_size : 'a t -> int

    val static : 'a t -> bool

    val cast : 'a t -> kind:([< kind ] as 'b) -> 'b t

    val sizeof : [< kind ] -> int

    val length : [< kind ] t -> int

    val sub : ([< kind ] as 'a) t -> pos:int -> len:int -> 'a t

    val get : [< ikind ] t -> pos:int -> int

    val set : [< ikind ] t -> pos:int -> int -> unit

    val get_float : [< fkind ] t -> pos:int -> float

    val set_float : [< fkind ] t -> pos:int -> float -> unit

    val get_hi : [< lkind ] t -> pos:int -> int

    val set_hi : [< lkind ] t -> pos:int -> int -> unit

    val get_lo : [< lkind ] t -> pos:int -> int

    val set_lo : [< lkind ] t -> pos:int -> int -> unit

    val get_long : [< lkind ] t -> pos:int -> nativeint

    val set_long : [< lkind ] t -> pos:int -> nativeint -> unit

    val gets : [< ikind ] t -> pos:int -> len:int -> int array

    val sets : [< ikind ] t -> pos:int -> int array -> unit

    val gets_float : [< fkind ] t -> pos:int -> len:int -> float array

    val sets_float : [< fkind ] t -> pos:int -> float array -> unit

    val gets_string : 'a t -> pos:int -> len:int -> string

    val sets_string : 'a t -> pos:int -> string -> unit

    val of_array : int array -> kind:([< ikind ] as 'a) -> 'a t

    val of_float_array : float array -> kind:([< fkind ] as 'a) -> 'a t

    val of_string : string -> kind:([< kind ] as 'a) -> 'a t

    val of_matrix : float array array -> kind:([< fkind ] as 'a) -> 'a t