__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

kentishfootball@216.73.216.211: ~ $
# 1 "Camomile/internal/iSet.ml"
(** Set of integers *)
(* 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 *)

include AvlTree

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 t = (int * int) tree
type elt = int

let rec mem n s =
  if is_empty s then false else
  let v1, v2 = root s in
  if n < v1 then mem n (left_branch s) else
  if v1 <= n && n <= v2 then true else
  mem n (right_branch s)

let rec add n s =
  if is_empty s then make_tree empty (n, n) empty else
  let (v1, v2) as v = root s in
  let s0 = left_branch s in
  let s1 = right_branch s in
  if v1 <> min_int && n < v1 - 1 then make_tree (add n s0) v s1 else
  if v2 <> max_int && n > v2 + 1 then make_tree s0 v (add n s1) else
  if n + 1 = v1 then
    if not (is_empty s0) then
      let (u1, u2), s0' = split_rightmost s0 in
      if u2 <> max_int && u2 + 1 = n then
	make_tree s0' (u1, v2) s1
      else
	make_tree s0 (n, v2) s1
    else
      make_tree s0 (n, v2) s1
  else if v2 + 1 = n then
    if not (is_empty s1) then
      let (u1, u2), s1' = split_leftmost s1 in
      if n <> max_int && n + 1 = u1 then
	make_tree s0 (v1, u2) s1'
      else
	make_tree s0 (v1, n) s1
    else
      make_tree s0 (v1, n) s1
  else s

let rec from n s =
  if is_empty s then empty else
  let (v1, v2) as v = root s in
  let s0 = left_branch s in
  let s1 = right_branch s in
  if n < v1 then make_tree (from n s0) v s1 else
  if n > v2 then from n s1 else
  make_tree empty (n, v2) 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 (v1, v2) as v = root s in
  let s0 = left_branch s in
  let s1 = right_branch s in
  if n > v2 then make_tree s0 v (until n s1) else
  if n < v1 then until n s0 else
  make_tree s0 (v1, n) empty

let rec before n s = if n = min_int then empty else until (n - 1) s

let add_range n1 n2 s =
  if n1 > n2 then invalid_arg "ISet.add_range" else
  let n1, l =
    if n1 = min_int then n1, empty else
    let l = until (n1 - 1) s in
    if is_empty l then n1, empty else
    let (v1, v2), l' = split_rightmost l in
    if v2 + 1 = n1 then v1, l' else n1, l in
  let n2, r =
    if n2 = max_int then n2, empty else
    let r = from (n2 + 1) s in
    if is_empty r then n2, empty else
    let (v1, v2), r' = split_leftmost r in
    if n2 + 1 = v1 then v2, r' else n2, r in
  make_tree l (n1, n2) r

let singleton n = singleton_tree (n, n)

let rec remove n s =
  if is_empty s then empty else
  let (v1, v2) as v = root s in
  let s1 = left_branch s in
  let s2 = right_branch s in
  if n < v1 then make_tree (remove n s1) v s2
  else if n = v1 then
    if v1 = v2 then concat s1 s2 else
    make_tree s1 (v1 + 1, v2) s2
  else if n > v1 && n < v2 then
    let s = make_tree s1 (v1, n - 1) empty in
    make_tree s (n + 1, v2) s2
  else if n = v2 then make_tree s1 (v1, v2 - 1) s2 else
  make_tree s1 v (remove n s2)

let remove_range n1 n2 s =
  if n1 > n2 then invalid_arg "ISet.remove_range" else
  concat (before n1 s) (after n2 s)

let rec union s1 s2 =
  if is_empty s1 then s2 else
  if is_empty s2 then s1 else
  let s1, s2 = if height s1 >! height s2 then s1, s2 else s2, s1 in
  let n1, n2 = root s1 in
  let l1 = left_branch s1 in
  let r1 = right_branch s1 in
  let l2 = before n1 s2 in
  let r2 = after n2 s2 in
  let n1, l =
    if n1 = min_int then n1, empty else
    let l = union l1 l2 in
    if is_empty l then n1, l else
    let (v1, v2), l' = split_rightmost l in
    if v2 + 1 = n1 then v1, l' else n1, l in
  let n2, r =
    if n1 = max_int then n2, empty else
    let r = union r1 r2 in
    if is_empty r then n2, r else
    let (v1, v2), r' = split_leftmost r in
    if n2 + 1 = v1 then v2, r' else n2, r in
  make_tree l (n1, n2) r
  
let rec inter s1 s2 =
  if is_empty s1 then empty else
  if is_empty s2 then empty else
  let s1, s2 = if height s1 >! height s2 then s1, s2 else s2, s1 in
  let n1, n2 = root s1 in
  let l1 = left_branch s1 in
  let r1 = right_branch s1 in
  let l2 = before n1 s2 in
  let r2 = after n2 s2 in
  let m = until n2 (from n1 s2) in
  concat (concat (inter l1 l2) m) (inter r1 r2)

let rec compl_aux n1 n2 s =
  if is_empty s then add_range n1 n2 empty else
  let v1, v2 = root s in
  let l = left_branch s in
  let r = right_branch s in
  let l = if v1 = min_int then empty else compl_aux n1 (v1 - 1) l in
  let r = if v2 = max_int then empty else compl_aux (v2 + 1) n2 r in
  concat l r

let compl s = compl_aux min_int max_int s

let diff s1 s2 = inter s1 (compl s2)

let rec compare_aux x1 x2 =
  match x1, x2 with
    [], [] -> 0
  | `Set s :: rest, x ->
      if is_empty s then compare_aux rest x2 else
      let l = left_branch s in
      let v = root s in
      let r = right_branch s in
      compare_aux (`Set l :: `Range v :: `Set r :: rest) x
  | x, `Set s :: rest ->
      if is_empty s then compare_aux x1 rest else
      let l = left_branch s in
      let v = root s in
      let r = right_branch s in
      compare_aux x1 (`Set l :: `Range v :: `Set r :: rest)
  | `Range ((v1, v2)) :: rest1, `Range ((v3, v4)) :: rest2 ->
      let sgn = compare v1 v3 in
      if sgn <> 0 then sgn else
      let sgn = compare v2 v4 in
      if sgn <> 0 then sgn else
      compare_aux rest1 rest2
  | [], _ -> ~-1
  | _, [] -> 1

let compare s1 s2 = compare_aux [`Set s1] [`Set s2]

let equal s1 s2 = compare s1 s2 = 0

let rec subset s1 s2 =
  if is_empty s1 then true else
  if is_empty s2 then false else
  let v1, v2 = root s2 in
  let l2 = left_branch s2 in
  let r2 = right_branch s2 in
  let l1 = before v1 s1 in
  let r1 = after v2 s1 in
  (subset l1 l2) && (subset r1 r2)

let fold_range f = AvlTree.fold (fun (n1, n2) x -> f n1 n2 x)

let fold f =
  let rec g n1 n2 a =
    if n1 = n2 then f n1 a else
    g (n1 + 1) n2 (f n1 a) in
  fold_range g

let iter proc s = fold (fun n () -> proc n) s ()

let iter_range proc = AvlTree.iter (fun (n1, n2) -> proc n1 n2)

let for_all p s =
  let rec test_range n1 n2 =
    if n1 = n2 then p n1 else
    p n1 && test_range (n1 + 1) n2 in
  let rec test_set s =
    if is_empty s then true else
    let n1, n2 = root s in
    test_range n1 n2 && 
    test_set (left_branch s) &&
    test_set (right_branch s) in
  test_set s
  
let exists p s =
  let rec test_range n1 n2 =
    if n1 = n2 then p n1 else
    p n1 || test_range (n1 + 1) n2 in
  let rec test_set s =
    if is_empty s then false else
    let n1, n2 = root s in
    test_range n1 n2 || 
    test_set (left_branch s) ||
    test_set (right_branch s) in
  test_set s

let filter_range p n1 n2 a = 
  let rec loop n1 n2 a = function
      None ->
	if n1 = n2 then
	  make_tree a (n1, n1) empty
	else
	  loop (n1 + 1) n2 a (if p n1 then Some n1 else None)
    | Some v1 as x ->
	if n1 = n2 then	make_tree a (v1, n1) empty else
	if p n1 then
	  loop (n1 + 1) n2 a x
	else
	  loop (n1 + 1) n2 (make_tree a (v1, n1 - 1) empty) None in
  loop n1 n2 a None
  
let filter p s = fold_range (filter_range p) empty s

let partition_range p n1 n2 (a, b) = 
  let rec loop n1 n2 acc =
    let acc = 
      let a, b, (v, n) = acc in
      if p n1 = v then acc else
      if v then
	(make_tree a (n, n1) empty, b, (not v, n1))
      else
	(a, make_tree b (n, n1) empty, (not v, n1)) in
    if n1 = n2 then
      let a, b, (v, n) = acc in
      if v then	(make_tree a (n, n1) empty, b) else
      (a, make_tree b (n, n1) empty)
    else
      loop (n1 + 1) n2 acc in
  loop n1 n2 (a, b, (p n1, n1))

let partition p s = fold_range (partition_range p) s (empty, empty)

let cardinal s =
  fold_range (fun n1 n2 c -> c + n2 - n1 + 1) s 0

let rev_ranges s =
  fold_range (fun n1 n2 a -> (n1, n2) :: a) s []

let rec burst_range n1 n2 a =
  if n1 = n2 then n1 :: a else
  burst_range n1 (n2 - 1) (n2 :: a)

let elements s = 
  let f a (n1, n2) = burst_range n1 n2 a in
  List.fold_left f [] (rev_ranges s)

let ranges s = List.rev (rev_ranges s)

let min_elt s =  
  let (n, _), _ = split_leftmost s in 
  n

let max_elt s =  
  let (_, n), _ = split_rightmost s in 
  n

let choose s = fst (root s)

Filemanager

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
Filemanager