1signature FlagDB =
2sig
3
4  type t
5  type 'a tag
6  val empty : t
7  val peek : t -> 'a tag -> string -> ('a * string) option
8  val update : string -> ('a tag * 'a) -> t -> t
9  val update_new : {desc: string, name : string} -> 'a tag * 'a -> t -> t
10  val keys : t -> {key : string, desc : string} list
11
12  val string : string tag
13  val int : int tag
14  val bool : bool tag
15  val stringopt : string option tag
16  val mkTag : string -> 'a tag
17end
18