__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
# 1 "Camomile/internal/iMap.ml"
(** mappings from integer to arbitrary types *)
(* Copyright (C) 2003 Yamagata Yoriyuki. distributed with LGPL *)
(* This library is free software; you can redistribute it and/or *)
(* modify it under the terms of the GNU Lesser General Public License *)
(* as published by the Free Software Foundation; either version 2 of *)
(* the License, or (at your option) any later version. *)
(* As a special exception to the GNU Library General Public License, you *)
(* may link, statically or dynamically, a "work that uses this library" *)
(* with a publicly distributed version of this library to produce an *)
(* executable file containing portions of this library, and distribute *)
(* that executable file under terms of your choice, without any of the *)
(* additional requirements listed in clause 6 of the GNU Library General *)
(* Public License. By "a publicly distributed version of this library", *)
(* we mean either the unmodified Library as distributed by the authors, *)
(* or a modified version of this library that is distributed under the *)
(* conditions defined in clause 3 of the GNU Library General Public *)
(* License. This exception does not however invalidate any other reasons *)
(* why the executable file might be covered by the GNU Library General *)
(* Public License . *)
(* This library is distributed in the hope that it will be useful, *)
(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)
(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *)
(* Lesser General Public License for more details. *)
(* You should have received a copy of the GNU Lesser General Public *)
(* License along with this library; if not, write to the Free Software *)
(* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *)
(* USA *)
(* You can contact the authour by sending email to *)
(* yori@users.sourceforge.net *)
let (>!) = (>)
let compare_uint n1 n2 =
let sgn1 = (n1 lsr 24) - (n2 lsr 24) in
if sgn1 = 0 then (n1 land 0xffffff) - (n2 land 0xffffff) else sgn1
let (>) n1 n2 = compare_uint n1 n2 > 0
let (>=) n1 n2 = compare_uint n1 n2 >= 0
let (<) n1 n2 = compare_uint n1 n2 < 0
let (<=) n1 n2 = compare_uint n1 n2 <= 0
let compare = compare_uint
let max n1 n2 = if n1 >= n2 then n1 else n2
let min n1 n2 = if n1 <= n2 then n1 else n2
let max_int = ~-1
let min_int = 0
type 'a t = (int * int * 'a) AvlTree.tree
type 'a map = 'a t
type key = int
include AvlTree
let singleton n v = singleton_tree (n, n, v)
let make ?(eq = (=)) l (n1, n2, v) r =
let n1, l =
if is_empty l || n1 = min_int then n1, empty else
let (k1, k2, v0), l' = split_rightmost l in
if k2 + 1 = n1 && eq v v0 then k1, l' else n1, l in
let n2, r =
if is_empty r || n2 = max_int then n2, empty else
let (k1, k2, v0), r' = split_leftmost r in
if n2 + 1 = k1 && eq v v0 then k2, r' else n2, r in
make_tree l (n1, n2, v) r
let rec from n s =
if is_empty s then empty else
let (n1, n2, v) as x = root s in
let s0 = left_branch s in
let s1 = right_branch s in
if n < n1 then make_tree (from n s0) x s1 else
if n > n2 then from n s1 else
make_tree empty (n, n2, v) s1
let after n s = if n = max_int then empty else from (n + 1) s
let rec until n s =
if is_empty s then empty else
let (n1, n2, v) as x = root s in
let s0 = left_branch s in
let s1 = right_branch s in
if n > n2 then make_tree s0 x (until n s1) else
if n < n1 then until n s0 else
make_tree s0 (n1, n, v) empty
let rec before n s = if n = min_int then empty else until (n - 1) s
let add_range ?eq n1 n2 v s =
if n1 > n2 then invalid_arg "IMap.add_range" else
make ?eq (before n1 s) (n1, n2, v) (after n2 s)
let add ?eq n v s = add_range ?eq n n v s
let rec find n m =
if is_empty m then raise Not_found else
let (n1, n2, v) = root m in
if n < n1 then find n (left_branch m) else
if n1 <= n && n <= n2 then v else
find n (right_branch m)
let remove_range n1 n2 m =
if n1 > n2 then invalid_arg "IMap.remove_range" else
concat (before n1 m) (after n2 m)
let remove n m = remove_range n n m
let rec mem n m =
if is_empty m then false else
let (n1, n2, _) = root m in
if n < n1 then mem n (left_branch m) else
if n1 <= n && n <= n2 then true else
mem n (right_branch m)
let iter_range proc m =
AvlTree.iter (fun (n1, n2, v) -> proc n1 n2 v) m
let fold_range f m a =
AvlTree.fold (fun (n1, n2, v) a -> f n1 n2 v a) m a
let fold f m a =
let rec loop n1 n2 v a =
let a = f n1 v a in
if n1 = n2 then a else
loop (n1 + 1) n2 v a in
fold_range loop m a
let iter proc m =
fold (fun n v () -> proc n v) m ()
let rec map ?eq f m =
if is_empty m then empty else
let n1, n2, v = root m in
let l = map f (left_branch m) in
let r = map f (right_branch m) in
let v = f v in
make ?eq l (n1, n2, v) r
let mapi ?eq f m = fold (fun n v a -> add ?eq n (f n v) a) m empty
let rec set_to_map s v =
if is_empty s then empty else
let (n1, n2) = root s in
let l = left_branch s in
let r = right_branch s in
make_tree (set_to_map l v) (n1, n2, v) (set_to_map r v)
let domain m =
let f n1 n2 _ s = ISet.add_range n1 n2 s in
fold_range f m ISet.empty
let map_to_set p m =
let f n1 n2 v s = if p v then ISet.add_range n1 n2 s else s in
fold_range f m ISet.empty
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| META | File | 185 B | 0644 |
|
| avlTree.cmi | File | 1.35 KB | 0644 |
|
| avlTree.cmti | File | 10.68 KB | 0644 |
|
| avlTree.cmx | File | 1.04 KB | 0644 |
|
| avlTree.ml | File | 4.59 KB | 0644 |
|
| avlTree.mli | File | 2.39 KB | 0644 |
|
| bitsvect.cmi | File | 985 B | 0644 |
|
| bitsvect.cmti | File | 8.17 KB | 0644 |
|
| bitsvect.cmx | File | 873 B | 0644 |
|
| bitsvect.ml | File | 3.99 KB | 0644 |
|
| bitsvect.mli | File | 2.09 KB | 0644 |
|
| byte_labeled_dag.cmi | File | 616 B | 0644 |
|
| byte_labeled_dag.cmti | File | 6.1 KB | 0644 |
|
| byte_labeled_dag.cmx | File | 677 B | 0644 |
|
| byte_labeled_dag.ml | File | 4.18 KB | 0644 |
|
| byte_labeled_dag.mli | File | 1.98 KB | 0644 |
|
| bytesvect.cmi | File | 987 B | 0644 |
|
| bytesvect.cmti | File | 8.21 KB | 0644 |
|
| bytesvect.cmx | File | 1.06 KB | 0644 |
|
| bytesvect.ml | File | 3.57 KB | 0644 |
|
| bytesvect.mli | File | 2.11 KB | 0644 |
|
| camomile.a | File | 1.47 MB | 0644 |
|
| camomile.cma | File | 1.9 MB | 0644 |
|
| camomile.cmxa | File | 22.44 KB | 0644 |
|
| camomile.cmxs | File | 1.24 MB | 0644 |
|
| camomile.dune | File | 12 B | 0644 |
|
| camomileDefaultConfig.cmi | File | 447 B | 0644 |
|
| camomileDefaultConfig.cmx | File | 335 B | 0644 |
|
| camomileDefaultConfig.ml | File | 271 B | 0644 |
|
| camomileLibrary.cmi | File | 246.42 KB | 0644 |
|
| camomileLibrary.cmti | File | 1.06 MB | 0644 |
|
| camomileLibrary.cmx | File | 35.76 KB | 0644 |
|
| camomileLibrary.ml | File | 70.63 KB | 0644 |
|
| camomileLibrary.mli | File | 171.14 KB | 0644 |
|
| camomileLibraryDefault.cmi | File | 93.54 KB | 0644 |
|
| camomileLibraryDefault.cmti | File | 203.08 KB | 0644 |
|
| camomileLibraryDefault.cmx | File | 34.33 KB | 0644 |
|
| camomileLibraryDefault.ml | File | 1.86 KB | 0644 |
|
| camomileLibraryDefault.mli | File | 2.78 KB | 0644 |
|
| camomileLibraryDyn.cmi | File | 93.53 KB | 0644 |
|
| camomileLibraryDyn.cmti | File | 204.05 KB | 0644 |
|
| camomileLibraryDyn.cmx | File | 34.67 KB | 0644 |
|
| camomileLibraryDyn.ml | File | 3.04 KB | 0644 |
|
| camomileLibraryDyn.mli | File | 3.44 KB | 0644 |
|
| caseMap.cmi | File | 1.58 KB | 0644 |
|
| caseMap.cmti | File | 10.17 KB | 0644 |
|
| caseMap.cmx | File | 990 B | 0644 |
|
| caseMap.ml | File | 9.13 KB | 0644 |
|
| caseMap.mli | File | 2.54 KB | 0644 |
|
| charEncoding.cmi | File | 10.18 KB | 0644 |
|
| charEncoding.cmti | File | 49.47 KB | 0644 |
|
| charEncoding.cmx | File | 3.7 KB | 0644 |
|
| charEncoding.ml | File | 101.14 KB | 0644 |
|
| charEncoding.mli | File | 6.29 KB | 0644 |
|
| charmap.cmi | File | 1.3 KB | 0644 |
|
| charmap.cmti | File | 9.49 KB | 0644 |
|
| charmap.cmx | File | 1.17 KB | 0644 |
|
| charmap.ml | File | 3.54 KB | 0644 |
|
| charmap.mli | File | 2.36 KB | 0644 |
|
| configInt.cmi | File | 379 B | 0644 |
|
| configInt.cmti | File | 3.43 KB | 0644 |
|
| configInt.cmx | File | 176 B | 0644 |
|
| configInt.ml | File | 395 B | 0644 |
|
| configInt.mli | File | 366 B | 0644 |
|
| database.cmi | File | 599 B | 0644 |
|
| database.cmti | File | 7.46 KB | 0644 |
|
| database.cmx | File | 500 B | 0644 |
|
| database.ml | File | 2.61 KB | 0644 |
|
| database.mli | File | 2.64 KB | 0644 |
|
| hangul.cmi | File | 634 B | 0644 |
|
| hangul.cmti | File | 5.85 KB | 0644 |
|
| hangul.cmx | File | 457 B | 0644 |
|
| hangul.ml | File | 3.42 KB | 0644 |
|
| hangul.mli | File | 1.96 KB | 0644 |
|
| iMap.cmi | File | 3.06 KB | 0644 |
|
| iMap.cmti | File | 18.84 KB | 0644 |
|
| iMap.cmx | File | 2.45 KB | 0644 |
|
| iMap.ml | File | 5.21 KB | 0644 |
|
| iMap.mli | File | 2.87 KB | 0644 |
|
| iSet.cmi | File | 3.33 KB | 0644 |
|
| iSet.cmti | File | 19.99 KB | 0644 |
|
| iSet.cmx | File | 3.42 KB | 0644 |
|
| iSet.ml | File | 9.98 KB | 0644 |
|
| iSet.mli | File | 2.92 KB | 0644 |
|
| installConfig.cmi | File | 261 B | 0644 |
|
| installConfig.cmx | File | 225 B | 0644 |
|
| installConfig.ml | File | 37 B | 0644 |
|
| locale.cmi | File | 514 B | 0644 |
|
| locale.cmti | File | 8.02 KB | 0644 |
|
| locale.cmx | File | 615 B | 0644 |
|
| locale.ml | File | 3.13 KB | 0644 |
|
| locale.mli | File | 3 KB | 0644 |
|
| oOChannel.cmi | File | 10.47 KB | 0644 |
|
| oOChannel.cmti | File | 46.42 KB | 0644 |
|
| oOChannel.cmx | File | 508 B | 0644 |
|
| oOChannel.ml | File | 4.63 KB | 0644 |
|
| oOChannel.mli | File | 4.96 KB | 0644 |
|
| opam | File | 566 B | 0644 |
|
| stringPrep.cmi | File | 1.03 KB | 0644 |
|
| stringPrep.cmti | File | 8 KB | 0644 |
|
| stringPrep.cmx | File | 1.02 KB | 0644 |
|
| stringPrep.ml | File | 7.34 KB | 0644 |
|
| stringPrep.mli | File | 2.33 KB | 0644 |
|
| stringPrep_data.cmi | File | 2.15 KB | 0644 |
|
| stringPrep_data.cmti | File | 12.45 KB | 0644 |
|
| stringPrep_data.cmx | File | 4.05 KB | 0644 |
|
| stringPrep_data.ml | File | 3.46 KB | 0644 |
|
| stringPrep_data.mli | File | 2.78 KB | 0644 |
|
| subText.cmi | File | 4.89 KB | 0644 |
|
| subText.cmti | File | 22.76 KB | 0644 |
|
| subText.cmx | File | 1.68 KB | 0644 |
|
| subText.ml | File | 4.9 KB | 0644 |
|
| subText.mli | File | 3.55 KB | 0644 |
|
| tbl31.cmi | File | 2.07 KB | 0644 |
|
| tbl31.cmti | File | 13.38 KB | 0644 |
|
| tbl31.cmx | File | 4.46 KB | 0644 |
|
| tbl31.ml | File | 14.39 KB | 0644 |
|
| tbl31.mli | File | 2.5 KB | 0644 |
|
| uCS4.cmi | File | 2.4 KB | 0644 |
|
| uCS4.cmti | File | 21.35 KB | 0644 |
|
| uCS4.cmx | File | 1.66 KB | 0644 |
|
| uCS4.ml | File | 4.42 KB | 0644 |
|
| uCS4.mli | File | 5.39 KB | 0644 |
|
| uChar.cmi | File | 985 B | 0644 |
|
| uChar.cmti | File | 11.63 KB | 0644 |
|
| uChar.cmx | File | 744 B | 0644 |
|
| uChar.ml | File | 2.64 KB | 0644 |
|
| uChar.mli | File | 3.57 KB | 0644 |
|
| uCharInfo.cmi | File | 5.14 KB | 0644 |
|
| uCharInfo.cmti | File | 31.46 KB | 0644 |
|
| uCharInfo.cmx | File | 2.54 KB | 0644 |
|
| uCharInfo.ml | File | 16.69 KB | 0644 |
|
| uCharInfo.mli | File | 8.5 KB | 0644 |
|
| uCharTbl.cmi | File | 2.22 KB | 0644 |
|
| uCharTbl.cmti | File | 15.08 KB | 0644 |
|
| uCharTbl.cmx | File | 1.92 KB | 0644 |
|
| uCharTbl.ml | File | 2.97 KB | 0644 |
|
| uCharTbl.mli | File | 3.13 KB | 0644 |
|
| uCol.cmi | File | 3.16 KB | 0644 |
|
| uCol.cmti | File | 17.04 KB | 0644 |
|
| uCol.cmx | File | 1.49 KB | 0644 |
|
| uCol.ml | File | 27.44 KB | 0644 |
|
| uCol.mli | File | 3.89 KB | 0644 |
|
| uLine.cmi | File | 7.2 KB | 0644 |
|
| uLine.cmti | File | 29.26 KB | 0644 |
|
| uLine.cmx | File | 598 B | 0644 |
|
| uLine.ml | File | 5.6 KB | 0644 |
|
| uLine.mli | File | 3.71 KB | 0644 |
|
| uMap.cmi | File | 3.43 KB | 0644 |
|
| uMap.cmti | File | 24.03 KB | 0644 |
|
| uMap.cmx | File | 2.37 KB | 0644 |
|
| uMap.ml | File | 3.13 KB | 0644 |
|
| uMap.mli | File | 4.82 KB | 0644 |
|
| uNF.cmi | File | 14.33 KB | 0644 |
|
| uNF.cmti | File | 46.54 KB | 0644 |
|
| uNF.cmx | File | 4.65 KB | 0644 |
|
| uNF.ml | File | 13.73 KB | 0644 |
|
| uNF.mli | File | 3.39 KB | 0644 |
|
| uPervasives.cmi | File | 855 B | 0644 |
|
| uPervasives.cmti | File | 7.21 KB | 0644 |
|
| uPervasives.cmx | File | 1.1 KB | 0644 |
|
| uPervasives.ml | File | 3.38 KB | 0644 |
|
| uPervasives.mli | File | 2.16 KB | 0644 |
|
| uRe.cmi | File | 7.17 KB | 0644 |
|
| uRe.cmti | File | 24.92 KB | 0644 |
|
| uRe.cmx | File | 2.09 KB | 0644 |
|
| uRe.ml | File | 13.63 KB | 0644 |
|
| uRe.mli | File | 3.59 KB | 0644 |
|
| uReStr.cmi | File | 6.99 KB | 0644 |
|
| uReStr.cmti | File | 25.58 KB | 0644 |
|
| uReStr.cmx | File | 2.79 KB | 0644 |
|
| uReStr.ml | File | 5.39 KB | 0644 |
|
| uReStr.mli | File | 4.11 KB | 0644 |
|
| uReStrLexer.cmi | File | 765 B | 0644 |
|
| uReStrLexer.cmx | File | 12.36 KB | 0644 |
|
| uReStrLexer.ml | File | 54.16 KB | 0644 |
|
| uReStrParser.cmi | File | 1.19 KB | 0644 |
|
| uReStrParser.cmti | File | 5.72 KB | 0644 |
|
| uReStrParser.cmx | File | 4.42 KB | 0644 |
|
| uReStrParser.ml | File | 30.53 KB | 0644 |
|
| uReStrParser.mli | File | 458 B | 0644 |
|
| uReStrParserType.cmi | File | 1.11 KB | 0644 |
|
| uReStrParserType.cmti | File | 5.55 KB | 0644 |
|
| uReStrParserType.cmx | File | 287 B | 0644 |
|
| uReStrParserType.ml | File | 608 B | 0644 |
|
| uReStrParserType.mli | File | 564 B | 0644 |
|
| uSet.cmi | File | 3.76 KB | 0644 |
|
| uSet.cmti | File | 24.36 KB | 0644 |
|
| uSet.cmx | File | 3.7 KB | 0644 |
|
| uSet.ml | File | 3.67 KB | 0644 |
|
| uSet.mli | File | 4.56 KB | 0644 |
|
| uTF16.cmi | File | 2.43 KB | 0644 |
|
| uTF16.cmti | File | 21.88 KB | 0644 |
|
| uTF16.cmx | File | 1.82 KB | 0644 |
|
| uTF16.ml | File | 6.02 KB | 0644 |
|
| uTF16.mli | File | 5.67 KB | 0644 |
|
| uTF8.cmi | File | 2.26 KB | 0644 |
|
| uTF8.cmti | File | 22.84 KB | 0644 |
|
| uTF8.cmx | File | 4.17 KB | 0644 |
|
| uTF8.ml | File | 8.51 KB | 0644 |
|
| uTF8.mli | File | 5.91 KB | 0644 |
|
| uText.cmi | File | 3.94 KB | 0644 |
|
| uText.cmti | File | 24.07 KB | 0644 |
|
| uText.cmx | File | 3.5 KB | 0644 |
|
| uText.ml | File | 3.05 KB | 0644 |
|
| uText.mli | File | 3.86 KB | 0644 |
|
| unicodeString.cmi | File | 2.1 KB | 0644 |
|
| unicodeString.cmti | File | 18.29 KB | 0644 |
|
| unicodeString.cmx | File | 206 B | 0644 |
|
| unicodeString.ml | File | 4.59 KB | 0644 |
|
| unicodeString.mli | File | 4.55 KB | 0644 |
|
| unidata.cmi | File | 3.68 KB | 0644 |
|
| unidata.cmti | File | 20.79 KB | 0644 |
|
| unidata.cmx | File | 1.97 KB | 0644 |
|
| unidata.ml | File | 12.91 KB | 0644 |
|
| unidata.mli | File | 5.25 KB | 0644 |
|
| unimap.cmi | File | 1.53 KB | 0644 |
|
| unimap.cmti | File | 11.13 KB | 0644 |
|
| unimap.cmx | File | 1.53 KB | 0644 |
|
| unimap.ml | File | 3.97 KB | 0644 |
|
| unimap.mli | File | 2.48 KB | 0644 |
|
| xArray.cmi | File | 2.8 KB | 0644 |
|
| xArray.cmti | File | 19.54 KB | 0644 |
|
| xArray.cmx | File | 1.64 KB | 0644 |
|
| xArray.ml | File | 4.01 KB | 0644 |
|
| xArray.mli | File | 4.2 KB | 0644 |
|
| xString.cmi | File | 3.42 KB | 0644 |
|
| xString.cmti | File | 20.36 KB | 0644 |
|
| xString.cmx | File | 2.34 KB | 0644 |
|
| xString.ml | File | 4.04 KB | 0644 |
|
| xString.mli | File | 3.38 KB | 0644 |
|