]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/urimanager/uriManager.ml
reverted to ==
[helm.git] / helm / ocaml / urimanager / uriManager.ml
index cd7f9a119ba38409f121604473f06400bafc4756..a4d2604851bf11a85077be94542efc729060075a 100644 (file)
@@ -36,6 +36,7 @@ let eq uri1 uri2 =
  uri1 == uri2
 ;;
 
+
 let string_of_uri uri =
   match  uri.(Array.length uri - 1) with
   | "" -> 
@@ -43,6 +44,8 @@ let string_of_uri uri =
   | _ -> 
       String.concat "#" 
         [ uri.(Array.length uri - 3); uri.(Array.length uri - 1) ]
+
+
 let name_of_uri uri = uri.(Array.length uri - 2);;
 let buri_of_uri uri = uri.(Array.length uri - 4);;
 let depth_of_uri uri = Array.length uri - 3;;
@@ -117,6 +120,13 @@ let uri_of_string str =
       uri
 ;;
 
+let strip_xpointer uri =
+  let stripped_uri = Array.copy uri in
+  stripped_uri.(Array.length uri - 1) <- "";  (* reset xpointer field *)
+  let stripped_uri_str = string_of_uri stripped_uri in
+  set_of_uri := SetOfStrings.add stripped_uri_str stripped_uri !set_of_uri;
+  stripped_uri
+
 let cicuri_of_uri uri =
  let completeuri = string_of_uri uri in
   let newcompleteuri = 
@@ -172,3 +182,16 @@ let string_of_uriref (uri, fi) =
       | [t]         -> str ^ xp t ^ ")" 
       | t :: c :: _ -> str ^ xp t ^ "/" ^ string_of_int c ^ ")" 
 
+let compare u1 u2 =
+  let su1 = string_of_uri u1 in
+  let su2 = string_of_uri u2 in
+  Pervasives.compare su1 su2
+
+module OrderedUri =
+struct
+  type t = uri
+  let compare = compare (* the one above, not Pervasives.compare *)
+end
+
+module UriSet = Set.Make (OrderedUri)
+