sig
  exception Malformed_code
  exception Cannot_represent of int
  type encoding =
    [ `Enc_adobe_standard_encoding
    | `Enc_adobe_symbol_encoding
    | `Enc_adobe_zapf_dingbats_encoding
    | `Enc_cp037
    | `Enc_cp1006
    | `Enc_cp1026
    | `Enc_cp1047
    | `Enc_cp424
    | `Enc_cp437
    | `Enc_cp500
    | `Enc_cp737
    | `Enc_cp775
    | `Enc_cp850
    | `Enc_cp852
    | `Enc_cp855
    | `Enc_cp856
    | `Enc_cp857
    | `Enc_cp860
    | `Enc_cp861
    | `Enc_cp862
    | `Enc_cp863
    | `Enc_cp864
    | `Enc_cp865
    | `Enc_cp866
    | `Enc_cp869
    | `Enc_cp874
    | `Enc_cp875
    | `Enc_empty
    | `Enc_eucjp
    | `Enc_iso88591
    | `Enc_iso885910
    | `Enc_iso885911
    | `Enc_iso885913
    | `Enc_iso885914
    | `Enc_iso885915
    | `Enc_iso885916
    | `Enc_iso88592
    | `Enc_iso88593
    | `Enc_iso88594
    | `Enc_iso88595
    | `Enc_iso88596
    | `Enc_iso88597
    | `Enc_iso88598
    | `Enc_iso88599
    | `Enc_java
    | `Enc_jis0201
    | `Enc_koi8r
    | `Enc_macroman
    | `Enc_subset of Netconversion.encoding * (int -> bool)
    | `Enc_usascii
    | `Enc_utf16
    | `Enc_utf16_be
    | `Enc_utf16_le
    | `Enc_utf8
    | `Enc_windows1250
    | `Enc_windows1251
    | `Enc_windows1252
    | `Enc_windows1253
    | `Enc_windows1254
    | `Enc_windows1255
    | `Enc_windows1256
    | `Enc_windows1257
    | `Enc_windows1258 ]
  type charset =
    [ `Set_adobe_standard_encoding
    | `Set_adobe_symbol_encoding
    | `Set_adobe_zapf_dingbats_encoding
    | `Set_cp037
    | `Set_cp1006
    | `Set_cp1026
    | `Set_cp1047
    | `Set_cp424
    | `Set_cp437
    | `Set_cp500
    | `Set_cp737
    | `Set_cp775
    | `Set_cp850
    | `Set_cp852
    | `Set_cp855
    | `Set_cp856
    | `Set_cp857
    | `Set_cp860
    | `Set_cp861
    | `Set_cp862
    | `Set_cp863
    | `Set_cp864
    | `Set_cp865
    | `Set_cp866
    | `Set_cp869
    | `Set_cp874
    | `Set_cp875
    | `Set_iso88591
    | `Set_iso885910
    | `Set_iso885911
    | `Set_iso885913
    | `Set_iso885914
    | `Set_iso885915
    | `Set_iso885916
    | `Set_iso88592
    | `Set_iso88593
    | `Set_iso88594
    | `Set_iso88595
    | `Set_iso88596
    | `Set_iso88597
    | `Set_iso88598
    | `Set_iso88599
    | `Set_jis0201
    | `Set_jis0208
    | `Set_jis0212
    | `Set_koi8r
    | `Set_macroman
    | `Set_unicode
    | `Set_usascii
    | `Set_windows1250
    | `Set_windows1251
    | `Set_windows1252
    | `Set_windows1253
    | `Set_windows1254
    | `Set_windows1255
    | `Set_windows1256
    | `Set_windows1257
    | `Set_windows1258 ]
  val encoding_of_string : string -> Netconversion.encoding
  val string_of_encoding : Netconversion.encoding -> string
  val is_ascii_compatible : Netconversion.encoding -> bool
  val is_single_byte : Netconversion.encoding -> bool
  val same_encoding :
    Netconversion.encoding -> Netconversion.encoding -> bool
  val byte_order_mark : Netconversion.encoding -> string
  val makechar : Netconversion.encoding -> int -> string
  val ustring_of_uchar : Netconversion.encoding -> int -> string
  val to_unicode : Netconversion.charset -> int -> int
  val from_unicode : Netconversion.charset -> int -> int
  val available_input_encodings : unit -> Netconversion.encoding list
  val available_output_encodings : unit -> Netconversion.encoding list
  val convert :
    ?subst:(int -> string) ->
    in_enc:Netconversion.encoding ->
    out_enc:Netconversion.encoding ->
    ?range_pos:int -> ?range_len:int -> string -> string
  val recode_string :
    in_enc:Netconversion.encoding ->
    out_enc:Netconversion.encoding ->
    ?subst:(int -> string) -> string -> string
  val recode :
    in_enc:Netconversion.encoding ->
    in_buf:string ->
    in_pos:int ->
    in_len:int ->
    out_enc:Netconversion.encoding ->
    out_buf:string ->
    out_pos:int ->
    out_len:int ->
    max_chars:int ->
    subst:(int -> string) -> int * int * Netconversion.encoding
  class conversion_pipe :
    ?subst:(int -> string) ->
    in_enc:Netconversion.encoding ->
    out_enc:Netconversion.encoding -> unit -> Netchannels.io_obj_channel
  class recoding_pipe :
    ?subst:(int -> string) ->
    in_enc:Netconversion.encoding ->
    out_enc:Netconversion.encoding -> unit -> Netchannels.io_obj_channel
  type cursor
  exception End_of_string
  exception Cursor_out_of_range
  exception Partial_character
  exception Byte_order_mark
  val create_cursor :
    ?range_pos:int ->
    ?range_len:int ->
    ?initial_rel_pos:int ->
    Netconversion.encoding -> string -> Netconversion.cursor
  val reinit_cursor :
    ?range_pos:int ->
    ?range_len:int ->
    ?initial_rel_pos:int ->
    ?enc:Netconversion.encoding -> string -> Netconversion.cursor -> unit
  val copy_cursor :
    ?enc:Netconversion.encoding ->
    Netconversion.cursor -> Netconversion.cursor
  val cursor_target : Netconversion.cursor -> string
  val cursor_range : Netconversion.cursor -> int * int
  val cursor_initial_rel_pos : Netconversion.cursor -> int
  val cursor_char_count : Netconversion.cursor -> int
  val cursor_pos : Netconversion.cursor -> int
  val uchar_at : Netconversion.cursor -> int
  val cursor_byte_length : Netconversion.cursor -> int
  val cursor_at_end : Netconversion.cursor -> bool
  val move : ?num:int -> Netconversion.cursor -> unit
  val cursor_encoding : Netconversion.cursor -> Netconversion.encoding
  val cursor_blit : Netconversion.cursor -> int array -> int -> int -> int
  val cursor_blit_maxlen : Netconversion.cursor -> int
  val cursor_blit_positions :
    Netconversion.cursor -> int array -> int -> int -> int
  val ustring_length :
    Netconversion.encoding ->
    ?range_pos:int -> ?range_len:int -> string -> int
  val ustring_iter :
    Netconversion.encoding ->
    (int -> unit) -> ?range_pos:int -> ?range_len:int -> string -> unit
  val ustring_map :
    Netconversion.encoding ->
    (int -> int list) -> ?range_pos:int -> ?range_len:int -> string -> string
  val ustring_sub :
    Netconversion.encoding ->
    int -> int -> ?range_pos:int -> ?range_len:int -> string -> string
  val ustring_compare :
    Netconversion.encoding ->
    (int -> int -> int) ->
    ?range_pos:int ->
    ?range_len:int ->
    string -> ?range_pos:int -> ?range_len:int -> string -> int
  val uarray_of_ustring :
    Netconversion.encoding ->
    ?range_pos:int -> ?range_len:int -> string -> int array
  val ustring_of_uarray :
    ?subst:(int -> string) ->
    Netconversion.encoding -> ?pos:int -> ?len:int -> int array -> string
  exception Malformed_code_at of int
  val verify :
    Netconversion.encoding ->
    ?range_pos:int -> ?range_len:int -> string -> unit
  val big_slice : int
  val read_iso88591_ref :
    (int ->
     Netconversion.encoding ->
     int array ->
     int array -> string -> int -> int -> int * int * Netconversion.encoding)
    Pervasives.ref
  val read_utf8_ref :
    (bool ->
     int array ->
     int array -> string -> int -> int -> int * int * Netconversion.encoding)
    Pervasives.ref
end