module OID:`sig`

..`end`

Object identifiers.

Magic numbers in a suit and tie. Their consulting fee is astronomical.

type`t =`

`Asn.oid`

OIDs are conceptually a sequence of non-negative integers, called
*nodes*.

Every OID has at least two nodes.

`val equal : ``t -> t -> bool`

`val compare : ``t -> t -> int`

`val hash : ``t -> int`

`val seeded_hash : ``int -> t -> int`

`val base : ``int -> int -> t`

`base n1 n2`

is the OID `n1.n2`

.
Either `n1`

is `[0..1]`

and `n2`

is `[0..39]`

(inclusive), or `n1`

is `2`

and `n2`

is non-negative.

**Raises** `Invalid_argument`

if the components are out of range.

`val (<|) : ``t -> int -> t`

`oid <| n`

is the OID `oid.n`

.`Invalid_argument`

if `n`

is negative.`val (<||) : ``t -> int list -> t`

`oid <|| ns`

is the old `oid.n1.n2. ...`

if `ns`

is `[n1; n2; ...]`

.`Invalid_argument`

if any of `ns`

is negative.`val to_nodes : ``t -> int * int * int list`

`to_nodes oid`

are the nodes this `oid`

consists of. Every OID has at
least two nodes; the rest are collected in the list.`val of_nodes : ``int -> int -> int list -> t option`

`of_nodes n1 n2 ns`

is the oid `n1.n2.ns...`

, or `None`

, if any of the
components are out of range. See `base`

and `<|`

.`val pp : ``Format.formatter -> t -> unit`

`pp ppf oid`

pretty-prints `oid`

on `ppf`

as dotted-decimal.`val of_string : ``string -> t option`

`of_string s`

is the OID represented by `s`

, or `None`

, if `s`

is not
dotted-decimal or the components are out of range.