Module Dtools.Conf

module Conf: sig .. end

Configuration management module.


type link = string 

Type for links between keys

type path = link list 

Type for paths between keys

type ut = <
   comments : string list;
   descr : string;
   kind : string option;
   path : path -> ut;
   plug : link -> ut -> unit;
   routes : ut -> path list;
   subs : link list;
   ut : ut;
>

Type for untyped keys (or keys with unknown type)

type 'a t = <
   alias : ?comments:string list ->
?descr:string -> (ut -> unit) -> 'a t
;
   comments : string list;
   descr : string;
   get : 'a;
   get_d : 'a option;
   kind : string option;
   on_change : ('a -> unit) -> unit;
   path : path -> ut;
   plug : link -> ut -> unit;
   routes : ut -> path list;
   set : 'a -> unit;
   set_d : 'a option -> unit;
   subs : link list;
   ut : ut;
>

Type for 'a keys

type links = (link * ut) list 

A set of connections to others keys

exception Undefined of ut

Raised on access to an undefined key (without default value)

exception Invalid of string

Raised when an invalid link has been specified

exception Unbound of ut * string

Raised when a specified link does not exist

exception Bound of ut * string

Raised when a specified link already exist

exception Mismatch of ut

Raised on access to a key with a mismatching type

exception Cyclic of ut * ut

Raised on cyclic plug

exception Wrong_Conf of string * string

Raised when bad configuration assignations are encountered

exception File_Wrong_Conf of string * int * string

Raised when bad configuration assignations are encountered inside configuration files

type 'a builder = ?d:'a ->
?p:(ut -> unit) ->
?l:links -> ?comments:string list -> string -> 'a t

Receipt to build a 'a key

val unit : unit builder
val int : int builder
val float : float builder
val bool : bool builder
val string : string builder
val list : string list builder

Some key builders

val void : ?p:(ut -> unit) ->
?l:links -> ?comments:string list -> string -> ut

A structural key builder

val as_unit : ut -> unit t
val as_int : ut -> int t
val as_float : ut -> float t
val as_bool : ut -> bool t
val as_string : ut -> string t
val as_list : ut -> string list t

Casts to specificaly typed keys. Raises Mismatch on mismatching cast.

val path_of_string : string -> path

Convert a dot separated string to a path

val string_of_path : path -> string

Convert a path to a dot separated string

val descr : ?prefix:path -> ut -> string

Generate a description table of a (sub)key

val dump : ?prefix:path -> ut -> string

Dump the configuration table for a (sub)key

val conf_set : ut -> string -> unit

Add a value to the configuration keys, according to the given correctly formated string: "type key :value" Raises Wrong_Conf in badly formated cases.

val conf_file : ut -> string -> unit

Read configuration values from the file associated with the given filename. Raises File_Wrong_Conf with filename line and and error message in case of a bad configuration file.

val args : ut -> (string list * Stdlib.Arg.spec * string) list

A set of command line options to be used with the Arg module.