module Uuidm:sig..end
Universally unique identifiers (UUIDs).
Uuidm implements 128 bits universally unique identifiers version
3, 5 (name based with MD5, SHA-1 hashing) and 4 (random based)
according to RFC 4122.
References
type t
The type for UUIDs.
val v3 : t -> string -> tv3 ns n is a V3 UUID (named based with MD5 hashing) named by n and
namespaced by ns.
val v5 : t -> string -> tv5 ns n is a V5 UUID (named based with SHA-1 hashing) named by n
and namespaced by ns.
val v4 : bytes -> tv4 b is a V4 UUID (random based) that uses the first 16 bytes of
b for randomness. Be aware that most of these 128 bits are seen
literally in the result.
val v4_gen : Stdlib.Random.State.t -> unit -> tv4_gen seed is a function that generates random V4 UUIDs (random
based) with the given seed.
Warning. Sequences of UUIDs generated using Stdlib.Random are
suitably random but predictable by an observer. If that is an
issue for you, use Uuidm.v4 with random bytes generated by a CSPRNG.
This interface is informally deprecated: it seems many people are
using Uuidm.v `V4 in practice. For new code prefer one of the
creation functions above.
typeversion =[ `V3 of t * string | `V4 | `V5 of t * string ]
The type for UUID versions and generation parameters.
`V3 and `V5 specify a namespace and a name for the generation.`V4 is random based with a private state seeded with
Stdlib.Random.State.make_self_init. Use Uuidm.v4_gen to specify
your own seed. Use Uuidm.v4 to specify your own randomness.
Warning. The sequence resulting from repeatedly calling
v `V4 is random but predictable see Uuidm.v4_gen.val v : version -> tv version is an UUID of the given version.
val nil : tnil is the nil UUID.
val ns_dns : tns_dns is the DNS namespace UUID.
val ns_url : tns_url is the URL namespace UUID.
val ns_oid : tns_oid is the ISO OID namespace UUID.
val ns_X500 : tns_dn is the X.500 DN namespace UUID.
val equal : t -> t -> boolequal u u' is true iff u and u' are equal.
val compare : t -> t -> intcompare u u' totally orders u and u'.
This is the binary format mandated by RFC 4122.
val of_bytes : ?pos:int -> string -> t optionof_bytes pos s is the UUID represented by the 16 bytes starting
at pos (defaults to 0) in s. The result is None if the
string is not long enough.
val to_bytes : t -> stringto_bytes u is u as a 16 bytes long string.
This is the binary format in which the three first fields of UUIDs (which are oblivious to this module) are read and written in little-endian. This corresponds to how UEFI or Microsoft formats UUIDs.
val of_mixed_endian_bytes : ?pos:int -> string -> t optionof_mixed_endian_bytes is like Uuidm.of_bytes but decodes
the mixed endian serialization.
val to_mixed_endian_bytes : t -> stringto_mixed_endian_bytes is like Uuidm.to_bytes but encodes
the mixed endian serialization.
val of_string : ?pos:int -> string -> t optionof_string pos s converts the substring of s starting at pos
(defaults to 0) of the form "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
where X is a lower or upper case hexadecimal number to an
UUID. The result is None if a parse error occurs.
val to_string : ?upper:bool -> t -> stringto_string u is u as a string of the form
"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" where X is a lower
(or upper if upper is true) case hexadecimal number.
val pp : Stdlib.Format.formatter -> t -> unitpp ppf u formats a representation based on Uuidm.to_string
of u on ppf.
val pp_string : ?upper:bool -> Stdlib.Format.formatter -> t -> unitpp_string ?upper ppf u formats u on ppf like Uuidm.to_string would
do.