# Module OBus_value

    module OBus_value: sig .. end

D-Bus types, values and converters

###### Types

    module T: sig .. end

D-Bus types

###### Signatures

    type signature = T.sequence

    exception Invalid_signature of string * string

`Invalid_signature(signature, message)` is raised when a signature is invalid. `signature` is a string representation of the signature (using D-Bus type codes) and `message` is an error message.

    val string_of_signature : signature -> string

Returns a string representation of a signature using D-Bus type codes. If the signature is not valid (for example it is too long), it raises `OBus_value.Invalid_signature`.

    val signature_of_string : string -> signature

Parses a signature. Raises `OBus_value.Invalid_signature` if the signature is not correct

    val validate_signature : signature -> string option

Not all signatures are valid. `validate` returns `None` if the given signature is a valid one, or `Some reason` if it is not.

###### Values

    module V: sig .. end

D-Bus values

###### Type converters

    module C: sig .. end

Type converters

###### Methods/signals arguments

    type 'a arguments = private {

`` | `arg_types : `'a C.sequence`;` | `(*` | Types of the arguments | `*)`
`` | `arg_names : `string option list`;` | `(*` | Names of the arguments | `*)`

}
Type of a list of arguments used by methods and signals. It is ensured that the number of single types contained in `arg_types` is equal to the number of names.

    val arguments : arg_types:'a C.sequence ->
           arg_names:string option list -> 'a arguments

`arguments ~arg_types ~arg_names` creates a list of arguments. It raises `Invalid_arg` if the number of single types contained in `arg_types` is not equal to the number of names.

    val arg_types : 'a arguments -> 'a C.sequence

Returns the underlying sequence converter of a list of arguments.

    val arg_names : 'a arguments -> string option list

Returns the names of a list of arguments
Constructors

    val arg_cons : string option * 'a C.single ->
           'b arguments -> ('a * 'b) arguments

`arg_cons (name, typ) arguments` adds the argument `(name, type)` to the beginning of `arguments`

    val arg0 : unit arguments

    val arg1 : string option * 'a1 C.single -> 'a1 arguments

    val arg2 : string option * 'a1 C.single ->
           string option * 'a2 C.single -> ('a1 * 'a2) arguments

    val arg3 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           ('a1 * 'a2 * 'a3) arguments

    val arg4 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4) arguments

    val arg5 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5) arguments

    val arg6 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           string option * 'a6 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6) arguments

    val arg7 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           string option * 'a6 C.single ->
           string option * 'a7 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7) arguments

    val arg8 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           string option * 'a6 C.single ->
           string option * 'a7 C.single ->
           string option * 'a8 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8) arguments

    val arg9 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           string option * 'a6 C.single ->
           string option * 'a7 C.single ->
           string option * 'a8 C.single ->
           string option * 'a9 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9) arguments

    val arg10 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           string option * 'a6 C.single ->
           string option * 'a7 C.single ->
           string option * 'a8 C.single ->
           string option * 'a9 C.single ->
           string option * 'a10 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10)
           arguments

    val arg11 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           string option * 'a6 C.single ->
           string option * 'a7 C.single ->
           string option * 'a8 C.single ->
           string option * 'a9 C.single ->
           string option * 'a10 C.single ->
           string option * 'a11 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11)
           arguments

    val arg12 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           string option * 'a6 C.single ->
           string option * 'a7 C.single ->
           string option * 'a8 C.single ->
           string option * 'a9 C.single ->
           string option * 'a10 C.single ->
           string option * 'a11 C.single ->
           string option * 'a12 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 * 'a12)
           arguments

    val arg13 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           string option * 'a6 C.single ->
           string option * 'a7 C.single ->
           string option * 'a8 C.single ->
           string option * 'a9 C.single ->
           string option * 'a10 C.single ->
           string option * 'a11 C.single ->
           string option * 'a12 C.single ->
           string option * 'a13 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 * 'a12 *
            'a13)
           arguments

    val arg14 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           string option * 'a6 C.single ->
           string option * 'a7 C.single ->
           string option * 'a8 C.single ->
           string option * 'a9 C.single ->
           string option * 'a10 C.single ->
           string option * 'a11 C.single ->
           string option * 'a12 C.single ->
           string option * 'a13 C.single ->
           string option * 'a14 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 * 'a12 *
            'a13 * 'a14)
           arguments

    val arg15 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           string option * 'a6 C.single ->
           string option * 'a7 C.single ->
           string option * 'a8 C.single ->
           string option * 'a9 C.single ->
           string option * 'a10 C.single ->
           string option * 'a11 C.single ->
           string option * 'a12 C.single ->
           string option * 'a13 C.single ->
           string option * 'a14 C.single ->
           string option * 'a15 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 * 'a12 *
            'a13 * 'a14 * 'a15)
           arguments

    val arg16 : string option * 'a1 C.single ->
           string option * 'a2 C.single ->
           string option * 'a3 C.single ->
           string option * 'a4 C.single ->
           string option * 'a5 C.single ->
           string option * 'a6 C.single ->
           string option * 'a7 C.single ->
           string option * 'a8 C.single ->
           string option * 'a9 C.single ->
           string option * 'a10 C.single ->
           string option * 'a11 C.single ->
           string option * 'a12 C.single ->
           string option * 'a13 C.single ->
           string option * 'a14 C.single ->
           string option * 'a15 C.single ->
           string option * 'a16 C.single ->
           ('a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8 * 'a9 * 'a10 * 'a11 * 'a12 *
            'a13 * 'a14 * 'a15 * 'a16)
           arguments