2 ||M|| This file is part of HELM, an Hypertextual, Electronic
3 ||A|| Library of Mathematics, developed at the Computer Science
4 ||T|| Department, University of Bologna, Italy.
6 ||T|| HELM is free software; you can redistribute it and/or
7 ||A|| modify it under the terms of the GNU General Public License
8 \ / version 2 or (at your option) any later version.
9 \ / This software is distributed as is, NO WARRANTY.
10 V_______________________________________________________________ *)
16 module R = Helm_registry
18 module US = NUri.UriSet
20 module UriPair = struct
22 type t = U.uri * U.uri
24 let equal (u1l,u1r) (u2l,u2r) =
25 U.eq u1l u2l && U.eq u1r u2r
27 let compare (u1l,u1r) (u2l,u2r) =
28 match U.compare u1l u2l with
29 | 0 -> U.compare u1r u2r
33 Hashtbl.hash (U.hash ul, U.hash ur)
37 module UPS = Set.Make(UriPair)
39 type def_xflavour = [ C.def_flavour
43 let default_objs = US.empty
45 let default_srcs = US.empty
47 let default_names = US.empty
49 let default_remove = []
51 let default_exclude = []
57 let default_debug_lexer = false
59 let default_no_devel = true
61 let default_no_init = true
65 let slot = A.make xflavours 0
67 let objs = ref default_objs
69 let srcs = ref default_srcs
71 let names = ref default_names
73 let remove = ref default_remove
75 let exclude = ref default_exclude
77 let net = ref default_net
79 let chars = ref default_chars
81 let debug_lexer = ref default_debug_lexer
83 let no_devel = ref default_no_devel
85 let no_init = ref default_no_init
87 let deps = ref UPS.empty
89 let index_of_xflavour = function
99 let add_xflavour n xf =
100 let i = index_of_xflavour xf in
101 slot.(i) <- slot.(i) + n
103 let clear_slot i _ = slot.(i) <- 0
105 let iter_xflavours map = A.iteri (fun _ -> map) slot
108 deps := UPS.add (c,u) !deps
111 let och = open_out file in
113 P.fprintf och "\"%s\": \"%s\"\n" (U.string_of_uri a) (U.string_of_uri b)
119 R.clear (); A.iteri clear_slot slot;
120 objs := default_objs; srcs := default_srcs; names := default_names;
121 remove := default_remove; exclude := default_exclude; net := default_net;
122 chars := default_chars; debug_lexer := default_debug_lexer;
123 no_devel := default_no_devel; no_init := default_no_init;