# Module type CamomileLibrary.CharEncoding.Interface

    module type Interface = sig .. end

Module for character encodings.

    exception Malformed_code

Failure of decoding

    exception Out_of_range

Failure of encoding

    type t

Type for encodings.

    val automatic : string ->
           t list ->
           t ->
           t

`automatic name [enc_1; enc_2; ... enc_n] enc` creates the new encoding `name` doing automatic encoding detection among `enc_1`, `enc_2`, ..., `enc_n` by the given order. `enc` is used for encoding.

    val new_enc : string -> t -> unit

`new_enc name enc` registers the new encoding `enc` under the name `name`

    val alias : string -> string -> unit

`alias alias name` : Define `alias` as an alias of the encoding with the name `name`.

    val of_name : string -> t

Returns the encoding of the given name. Fails if the encoding is unknown. Encoding names are the same to codeset names in charmap files for the encodings defined by charmap. See charmaps directory in the source directory for the available encodings. In addition to the encodings via the charmap files, camomile supports ISO-2022-CN, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-KR, jauto (Auto detection of Japanese encodings), UTF-8, UTF-16, UTF-16BE, UTF-16LE. UTF-32, UTF-32BE, UTF-32LE, UCS-4(Big endian order). The encoding also can be referred by "IANA/<IANA name>", if the encoding is supported.

    val name_of : t -> string

Returns the name of the encoding.
Shortcuts

    val ascii : t

    val latin1 : t

    val utf8 : t

    val utf16 : t

    val utf16be : t

    val utf16le : t

    val utf32 : t

    val utf32be : t

    val utf32le : t

    val ucs4 : t

    val recode_string : in_enc:t ->
           out_enc:t -> string -> string

`recode_string ~in_enc ~out_enc s` converts the string `s` from `in_enc` to `out_enc`.

    class uchar_input_channel_of : t -> CamomileLibrary.OOChannel.char_input_channel -> [CamomileLibrary.UChar.t] CamomileLibrary.OOChannel.obj_input_channel

`new uchar_input_channel_of enc c_in` creates the new intput channel which convert characters to Unicode using encoding `enc`.

    class uchar_output_channel_of : t -> CamomileLibrary.OOChannel.char_output_channel -> [CamomileLibrary.UChar.t] CamomileLibrary.OOChannel.obj_output_channel

`new uchar_ouput_channel_of enc c_out` creates the new output channel which convert Unicode to its byte representation using encoding `enc`.

    class convert_uchar_input : t -> CamomileLibrary.UChar.t CamomileLibrary.OOChannel.obj_input_channel -> CamomileLibrary.OOChannel.char_input_channel

`new convert_uchar_input enc c_in` creates the new channel which convert Unicode input to its byte representation using encoding `enc`.

    class convert_uchar_output : t -> CamomileLibrary.UChar.t CamomileLibrary.OOChannel.obj_output_channel -> CamomileLibrary.OOChannel.char_output_channel

`new convert_uchar_output enc c_in` creates the new channel which convert character output to Unicode using encoding `enc`.

    class convert_input : in_enc:t -> out_enc:t -> CamomileLibrary.OOChannel.char_input_channel -> CamomileLibrary.OOChannel.char_input_channel

`new convert_input in_enc out_enc c_in` create the new input channel using encoding `out_enc` from the input channel using encoding `in_enc`

    class convert_output : in_enc:t -> out_enc:t -> CamomileLibrary.OOChannel.char_output_channel -> CamomileLibrary.OOChannel.char_output_channel

`new convert_ouput in_enc out_enc c_in` create the new output channel using encoding `in_enc` from the output channel using encoding `out_enc`

    class out_channel : t -> Pervasives.out_channel -> [CamomileLibrary.UChar.t] CamomileLibrary.OOChannel.obj_output_channel

`new out_channel enc outchan` creates the output channel object `CamomileLibrary.OOChannel.obj_output_channel` which receives Unicode characters and outputs them to `outchan` using the encoding `enc`.

    class in_channel : t -> Pervasives.in_channel -> [CamomileLibrary.UChar.t] CamomileLibrary.OOChannel.obj_input_channel

`new in_channel enc inchan` creates the intput channel object `CamomileLibrary.OOChannel.obj_input_channel` which reads bytes from `inchan` and converts them to Unicode characters.

    val ustream_of : t ->
           char Stream.t -> CamomileLibrary.UChar.t Stream.t

`ustream_of enc chars` converts the byte stream `chars` to the Unicode character stream by the encoding `enc`.

    val char_stream_of : t ->
           CamomileLibrary.UChar.t Stream.t -> char Stream.t

`char_stream_of enc uchars` converts the Unicode character stream `uchars` to the byte stream by the encoding `enc`

    module type Type = sig .. end

    module Make: functor (Text : CamomileLibrary.UnicodeString.Type) -> Type  with type text = Text.t