Up

module UnicodeString

: sig

Signature for Unicode strings. [root:UText], [root:XString], [root:UTF8], [root:UTF16], [root:UCS4] have matched signatures to UStorage and satisfy the semantics described below. If users want to supply their own Unicode strings, please design the module with the following signature and properties.

#
module type Type = sig
#
type t

The type of string.

#
val get : t -> int -> UChar.t

get t i : i-th character of the storage.

#
val init : int -> (int -> UChar.t) -> t

init len f creates a new storage. the returned storage has length len, its nth-element is f n. f is called with integers 0 ... len - 1, only once for each integer. The call is in the increasing order f 0, f 1, f 2, ...

#
val length : t -> int

The number of Unicode characters in the storage

#
type index

locations in storages.

#
val look : t -> index -> UChar.t

look t i : The character in the location i of t.

#
val nth : t -> int -> index

nth t n : the location of the n-th character in t.

next x i, prev x i : The operation is valid if i points the valid element, i.e. the returned value may point the location beyond valid elements by one. If i does not point a valid element, the results are unspecified.

#
val next : t -> index -> index
#
val prev : t -> index -> index
#
val out_of_range : t -> index -> bool
#
val iter : (UChar.t -> unit) -> t -> unit
#
val compare : t -> t -> int
#
val first : t -> index

The location of the first character in the storage.

#
val last : t -> index

The location of the last character in the storage.

#
val move : t -> index -> int -> index

move t i n : if n >= 0, then returns n-th character after i and otherwise returns -n-th character before i. If there is no such character, or i does not point a valid character, the result is unspecified.

#
val compare_index : t -> index -> index -> int

compare_index t i j returns a positive integer if i is the location placed after j in t, 0 if i and j point the same location, and a negative integer if i is the location placed before j in t.

#
module Buf : sig

Character buffers. Similar to Buffer.

#
type buf
#
val create : int -> buf

create n creates the buffer. n is used to determine the initial size of the buffer. The meaning of n differs from modules to modules.

#
val contents : buf -> t
#
val clear : buf -> unit
#
val reset : buf -> unit
#
val add_char : buf -> UChar.t -> unit
#
val add_string : buf -> t -> unit
#
val add_buffer : buf -> buf -> unit
end
end
end