`sig
type input
type 'a output
exception No_more_input
exception Input_closed
exception Output_closed
val read : IO.input -> char
val nread : IO.input -> int -> ExtBytes.Bytes.t
val really_nread : IO.input -> int -> ExtBytes.Bytes.t
val nread_string : IO.input -> int -> string
val really_nread_string : IO.input -> int -> string
val input : IO.input -> ExtBytes.Bytes.t -> int -> int -> int
val really_input : IO.input -> ExtBytes.Bytes.t -> int -> int -> int
val close_in : IO.input -> unit
val write : 'a IO.output -> char -> unit
val nwrite : 'a IO.output -> ExtBytes.Bytes.t -> unit
val nwrite_string : 'a IO.output -> string -> unit
val output : 'a IO.output -> ExtBytes.Bytes.t -> int -> int -> int
val really_output : 'a IO.output -> ExtBytes.Bytes.t -> int -> int -> int
val flush : 'a IO.output -> unit
val close_out : 'a IO.output -> 'a
val input_string : string -> IO.input
val input_bytes : ExtBytes.Bytes.t -> IO.input
val output_string : unit -> string IO.output
val output_bytes : unit -> ExtBytes.Bytes.t IO.output
val output_strings : unit -> string list IO.output
val input_channel : Stdlib.in_channel -> IO.input
val output_channel : Stdlib.out_channel -> unit IO.output
val input_enum : char Enum.t -> IO.input
val output_enum : unit -> char Enum.t IO.output
val create_in :
read:(unit -> char) ->
input:(ExtBytes.Bytes.t -> int -> int -> int) ->
close:(unit -> unit) -> IO.input
val create_out :
write:(char -> unit) ->
output:(ExtBytes.Bytes.t -> int -> int -> int) ->
flush:(unit -> unit) -> close:(unit -> 'a) -> 'a IO.output
val scanf : IO.input -> ('a, 'b, 'c, 'd) Stdlib.Scanf.scanner
val printf : 'a IO.output -> ('b, unit, string, unit) Stdlib.format4 -> 'b
val read_all : IO.input -> string
val pipe : unit -> IO.input * unit IO.output
val pos_in : IO.input -> IO.input * (unit -> int)
val pos_out : 'a IO.output -> 'a IO.output * (unit -> int)
external cast_output : 'a IO.output -> unit IO.output = "%identity"
exception Overflow of string
val read_byte : IO.input -> int
val read_signed_byte : IO.input -> int
val read_ui16 : IO.input -> int
val read_i16 : IO.input -> int
val read_i31 : IO.input -> int
val read_i32 : IO.input -> int
val read_i32_as_int : IO.input -> int
val read_real_i32 : IO.input -> int32
val read_i64 : IO.input -> int64
val read_float32 : IO.input -> float
val read_double : IO.input -> float
val read_string : IO.input -> string
val read_bytes : IO.input -> ExtBytes.Bytes.t
val read_line : IO.input -> string
val write_byte : 'a IO.output -> int -> unit
val write_ui16 : 'a IO.output -> int -> unit
val write_i16 : 'a IO.output -> int -> unit
val write_i31 : 'a IO.output -> int -> unit
val write_i32 : 'a IO.output -> int -> unit
val write_real_i32 : 'a IO.output -> int32 -> unit
val write_i64 : 'a IO.output -> int64 -> unit
val write_float32 : 'a IO.output -> float -> unit
val write_double : 'a IO.output -> float -> unit
val write_string : 'a IO.output -> string -> unit
val write_bytes : 'a IO.output -> ExtBytes.Bytes.t -> unit
val write_line : 'a IO.output -> string -> unit
module BigEndian :
sig
val read_ui16 : IO.input -> int
val read_i16 : IO.input -> int
val read_i31 : IO.input -> int
val read_i32 : IO.input -> int
val read_i32_as_int : IO.input -> int
val read_real_i32 : IO.input -> int32
val read_i64 : IO.input -> int64
val read_float32 : IO.input -> float
val read_double : IO.input -> float
val write_ui16 : 'a IO.output -> int -> unit
val write_i16 : 'a IO.output -> int -> unit
val write_i31 : 'a IO.output -> int -> unit
val write_i32 : 'a IO.output -> int -> unit
val write_real_i32 : 'a IO.output -> int32 -> unit
val write_i64 : 'a IO.output -> int64 -> unit
val write_float32 : 'a IO.output -> float -> unit
val write_double : 'a IO.output -> float -> unit
end
type in_bits
type out_bits
exception Bits_error
val input_bits : IO.input -> IO.in_bits
val output_bits : 'a IO.output -> IO.out_bits
val read_bits : IO.in_bits -> int -> int
val write_bits : IO.out_bits -> nbits:int -> int -> unit
val flush_bits : IO.out_bits -> unit
val drop_bits : IO.in_bits -> unit
class in_channel :
IO.input ->
object
method close_in : unit -> unit
method input : ExtBytes.Bytes.t -> int -> int -> int
end
class out_channel :
'a IO.output ->
object
method close_out : unit -> unit
method flush : unit -> unit
method output : ExtBytes.Bytes.t -> int -> int -> int
end
class in_chars :
IO.input ->
object method close_in : unit -> unit method get : unit -> char end
class out_chars :
'a IO.output ->
object
method close_out : unit -> unit
method flush : unit -> unit
method put : char -> unit
end
val from_in_channel : #IO.in_channel -> IO.input
val from_out_channel : #IO.out_channel -> unit IO.output
val from_in_chars : #IO.in_chars -> IO.input
val from_out_chars : #IO.out_chars -> unit IO.output
end`