-let uri_of_string str =
- try
- SetOfStrings.find str !set_of_uri
- with
- Not_found ->
- let uri = Array.of_list (mk_prefixes str) in
- set_of_uri := SetOfStrings.add str uri !set_of_uri ;
- uri
+let clear_suffix uri ?(pat2="") pat1 =
+ try
+ let index = String.rindex uri '.' in
+ let index' = index + 1 in
+ let suffix = String.sub uri index' (String.length uri - index') in
+ if pat1 = suffix || pat2 = suffix then
+ String.sub uri 0 index
+ else
+ uri
+ with
+ Not_found -> assert false
+
+let has_suffix uri pat =
+ try
+ let index = String.rindex uri '.' + 1 in
+ let suffix = String.sub uri index (String.length uri - index) in
+ pat = suffix
+ with
+ Not_found -> assert false
+
+let _types = "types"
+let _dottypes = ".types"
+let _ann = "ann"
+let _dotann = ".ann"
+let _var = "var"
+let _dotbody = ".body"
+let _con = "con"
+let _xpointer = "#xpointer(1/"
+
+let cicuri_of_uri (uri, _) =
+ uri_of_string (clear_suffix uri ~pat2:_types _ann)