X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fregistry%2Fhelm_registry.ml;h=a845cb576e2017083a18230e66de0ce766295a93;hb=12cc5b2b8e7f7bb0b5e315094b008a293a4df6b1;hp=501f689d83f3edf7f2aca9b6a63162ada86d9167;hpb=1bb2cfafdfd2a3648ca8d2eac8b1952210fc5e65;p=helm.git diff --git a/helm/ocaml/registry/helm_registry.ml b/helm/ocaml/registry/helm_registry.ml index 501f689d8..a845cb576 100644 --- a/helm/ocaml/registry/helm_registry.ml +++ b/helm/ocaml/registry/helm_registry.ml @@ -62,7 +62,6 @@ exception Key_not_found of string exception Cyclic_definition of string exception Type_error of string (* expected type, value, msg *) exception Parse_error of string * int * int * string (* file, line, col, msg *) -exception Invalid_value of (string * string) * string (* key, value, descr *) (* root XML tag: used by save_to, ignored by load_from *) let root_tag = "helm_registry" @@ -195,6 +194,12 @@ let get_list registry unmarshaller key = List.map unmarshaller (get registry key) with Key_not_found _ -> [] +let get_pair registry fst_unmarshaller snd_unmarshaller key = + let v = singleton (get registry key) in + match Str.split spaces_rex v with + | [fst; snd] -> fst_unmarshaller fst, snd_unmarshaller snd + | _ -> raise (Type_error "not a pair") + let set_list registry marshaller ~key ~value = List.iter (fun v -> set registry ~key ~value:(marshaller v)) value @@ -389,6 +394,7 @@ let get_typed unmarshaller = get_typed default_registry unmarshaller let get_opt unmarshaller = get_opt default_registry unmarshaller let get_opt_default unmarshaller = get_opt_default default_registry unmarshaller let get_list unmarshaller = get_list default_registry unmarshaller +let get_pair unmarshaller = get_pair default_registry unmarshaller let set_typed marshaller = set_typed default_registry marshaller let set_opt unmarshaller = set_opt default_registry unmarshaller let set_list marshaller = set_list default_registry marshaller