OBus_introspect_extSourceOBus extended introspection
By default, introspection documents do not convey semantical information, such as enumerations or flags. However it is possible to attach information to interfaces and members.
This module implements an extended introspection format, which can be encoded into standard introspection documents by using annotations.
The following annotations are used to encode additional informations into D-Bus introspection documents
The org.ocamlcore.forge.obus.Enum annotation
The org.ocamlcore.forge.obus.Flag annotation
The org.ocamlcore.forge.obus.Type annotation
The org.ocamlcore.forge.obus.IType annotation
The org.ocamlcore.forge.obus.OType annotation
type basic = private | Byte| Boolean| Int16| Int32| Int64| Uint16| Uint32| Uint64| Double| String| Signature| Object_path| Unix_fd| Enum of OBus_value.T.basic * (OBus_value.V.basic * string) listAn enumeration. The first argument is the real D-Bus type and the second is a list of (constant, keyword).
For example:
Enum(OBus_value.T.Uint32,
[(OBus_value.V.Uint32 1l, "ok");
(OBus_value.V.Uint32 2l, "fail")])Note that the real D-Bus type must be OBus_value.T.basic.Byte or an integer type.
| Flag of OBus_value.T.basic * (OBus_value.V.basic * string) listA flag. The first argument is the real type and the second is a list of (bits, keyword).
For example:
Flag(OBus_value.T.Uint32,
[(OBus_value.V.Uint32 0x01l, "flag1");
(OBus_value.V.Uint32 0x02l, "flag2");
(OBus_value.V.Uint32 0x04l, "flag3")])Note that the real D-Bus type must be OBus_value.T.basic.Byte or an integer type.
type term = private | Term of string * term listA term. Arguments are
| Tuple of term listA list of terms, packed into a tuple. Tuples are always mapped to D-Bus structures. Moreover it is ensured that there is never a type of the form Tuple[t].
A term represent a type, where symbols have not been resolved.
Construct a tuple. If the list is of length 1, the type itself is returned.
type symbol = private | Sym_enum of OBus_value.T.basic * (OBus_value.V.basic * string) list| Sym_flag of OBus_value.T.basic * (OBus_value.V.basic * string) listType of user-definable symbols
Create an enumeration
Create a flag type
The following functions remove extension from types.
The following functions project standard D-Bus types into extended D-Bus types
The following functions returns the term associated to a standard D-Bus type
Exception raised when the resolution of symbols of a type fails.
resolve env term resolves symbols of term using env, and returns the extended type it denotes. It raises Resolve_error if a symbol of term is not found in env.
type member = | Method of name * argument list * argument list * annotation list| Signal of name * argument list * annotation list| Property of name * term * access * annotation listEncode the given interface into a standard one by using annotations
Decode the given standard interface into an extended one by decoding annotations