sig
  type 'a t
  external is_null : 'CL_IODevice.t -> bool = "caml_CL_IODevice_is_null"
  external get_size : 'CL_IODevice.t -> int = "caml_CL_IODevice_get_size"
  external get_position : 'CL_IODevice.t -> int
    = "caml_CL_IODevice_get_position"
  external is_little_endian : 'CL_IODevice.t -> bool
    = "caml_CL_IODevice_is_little_endian"
  external set_little_endian_mode : 'CL_IODevice.t -> unit
    = "caml_CL_IODevice_set_little_endian_mode"
  external set_big_endian_mode : 'CL_IODevice.t -> unit
    = "caml_CL_IODevice_set_big_endian_mode"
  external set_system_mode : 'CL_IODevice.t -> unit
    = "caml_CL_IODevice_set_system_mode"
  external send :
    'CL_IODevice.t -> data:string -> ?receive_all:bool -> unit -> int
    = "caml_CL_IODevice_send"
  external receive :
    'CL_IODevice.t -> data:string -> ?receive_all:bool -> unit -> int
    = "caml_CL_IODevice_receive"
  type seek_mode = Seek_set | Seek_cur | Seek_end
  external seek :
    'CL_IODevice.t -> pos:int -> mode:CL_IODevice.seek_mode -> bool
    = "caml_CL_IODevice_seek"
end