`sig module type Type = sig type text class nfd : CamomileLibrary.UChar.t #CamomileLibrary.OOChannel.obj_output_channel -> [CamomileLibrary.UChar.t] OOChannel.obj_output_channel class nfc : CamomileLibrary.UChar.t #CamomileLibrary.OOChannel.obj_output_channel -> [CamomileLibrary.UChar.t] OOChannel.obj_output_channel class nfkd : CamomileLibrary.UChar.t #CamomileLibrary.OOChannel.obj_output_channel -> [CamomileLibrary.UChar.t] OOChannel.obj_output_channel class nfkc : CamomileLibrary.UChar.t #CamomileLibrary.OOChannel.obj_output_channel -> [CamomileLibrary.UChar.t] OOChannel.obj_output_channel val nfd : CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text val nfkd : CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text val nfc : CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text val nfkc : CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text module NFCBuf : sig type buf val create : int -> CamomileLibrary.UNF.Type.NFCBuf.buf val contents : CamomileLibrary.UNF.Type.NFCBuf.buf -> CamomileLibrary.UNF.Type.text val clear : CamomileLibrary.UNF.Type.NFCBuf.buf -> unit val reset : CamomileLibrary.UNF.Type.NFCBuf.buf -> unit val add_char : CamomileLibrary.UNF.Type.NFCBuf.buf -> CamomileLibrary.UChar.t -> unit val add_string : CamomileLibrary.UNF.Type.NFCBuf.buf -> CamomileLibrary.UNF.Type.text -> unit val add_buffer : CamomileLibrary.UNF.Type.NFCBuf.buf -> CamomileLibrary.UNF.Type.NFCBuf.buf -> unit end val nfc_append : CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text val put_nfd : CamomileLibrary.XString.t -> CamomileLibrary.UNF.Type.text -> unit val put_nfkd : CamomileLibrary.XString.t -> CamomileLibrary.UNF.Type.text -> unit val put_nfc : CamomileLibrary.XString.t -> CamomileLibrary.UNF.Type.text -> unit val put_nfkc : CamomileLibrary.XString.t -> CamomileLibrary.UNF.Type.text -> unit type index val nfd_inc : CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.index -> ([ `Inc of CamomileLibrary.UChar.t list * CamomileLibrary.UNF.Type.index * 'a lazy_t ] as 'a) val canon_compare : CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text -> int val nfd_decompose : CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t list val nfkd_decompose : CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t list end module Make : functor (Config : ConfigInt.Type) (Text : UnicodeString.Type) -> sig type text = Text.t class nfd : UChar.t #OOChannel.obj_output_channel -> [UChar.t] OOChannel.obj_output_channel class nfc : UChar.t #OOChannel.obj_output_channel -> [UChar.t] OOChannel.obj_output_channel class nfkd : UChar.t #OOChannel.obj_output_channel -> [UChar.t] OOChannel.obj_output_channel class nfkc : UChar.t #OOChannel.obj_output_channel -> [UChar.t] OOChannel.obj_output_channel val nfd : text -> text val nfkd : text -> text val nfc : text -> text val nfkc : text -> text module NFCBuf : sig type buf val create : int -> buf val contents : buf -> text val clear : buf -> unit val reset : buf -> unit val add_char : buf -> UChar.t -> unit val add_string : buf -> text -> unit val add_buffer : buf -> buf -> unit end val nfc_append : text -> text -> text val put_nfd : XString.t -> text -> unit val put_nfkd : XString.t -> text -> unit val put_nfc : XString.t -> text -> unit val put_nfkc : XString.t -> text -> unit type index = Text.index val nfd_inc : text -> index -> ([ `Inc of UChar.t list * index * 'a lazy_t ] as 'a) val canon_compare : text -> text -> int val nfd_decompose : UChar.t -> UChar.t list val nfkd_decompose : UChar.t -> UChar.t list end end`