let values m = fold (fun _ v vs -> v :: vs) m []
end
+module BigIntMap = struct
+ include Map.Make (struct type t = big_int let compare = compare_big_int end)
+ let keys m = fold (fun k _ ks -> k :: ks) m []
+ let values m = fold (fun _ v vs -> v :: vs) m []
+end
+
module StringSet = Set.Make (String)
let (//) = Filename.concat
(1900+tm.tm_year) (1+tm.tm_mon) tm.tm_mday
tm.tm_hour tm.tm_min tm.tm_sec
(if localtime then "" else " UTC")
+
+let string_startswith str prefix =
+ let len = String.length str in
+ let plen = String.length prefix in
+ len >= plen && String.sub str 0 plen = prefix
+
+let string_endswith str suffix =
+ let len = String.length str in
+ let slen = String.length suffix in
+ len >= slen && String.sub str (len-slen) slen = suffix