123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108# 1 "Camomile/public/uSet.ml"(** Sets of Unicode characters, implemented as sets of intervals.
The signature is mostly same to Set.S in stdlib *)(* Copyright (C) 2002, 2003 Yamagata Yoriyuki. *)(* 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 *)(* yoriyuki.y@gmail.com *)includeISetletmemus=ISet.mem(UChar.uint_codeu)sletaddus=ISet.add(UChar.uint_codeu)sletadd_rangeu1u2s=ISet.add_range(UChar.uint_codeu1)(UChar.uint_codeu2)sletsingletonu=ISet.singleton(UChar.uint_codeu)letremoveus=ISet.remove(UChar.uint_codeu)sletremove_rangeu1u2s=ISet.remove_range(UChar.uint_codeu1)(UChar.uint_codeu2)sletfromus=ISet.from(UChar.uint_codeu)sletafterus=ISet.after(UChar.uint_codeu)sletuntilus=ISet.until(UChar.uint_codeu)sletbeforeus=ISet.before(UChar.uint_codeu)sletiterfs=ISet.iter(funn->f(UChar.chr_of_uintn))sletiter_rangefs=letf'n1n2=f(UChar.chr_of_uintn1)(UChar.chr_of_uintn2)inISet.iter_rangef'sletfoldfsa=letf'na=f(UChar.chr_of_uintn)ainISet.foldf'saletfold_rangefsa=letf'n1n2a=f(UChar.chr_of_uintn1)(UChar.chr_of_uintn2)ainISet.fold_rangef'saletfor_allps=letp'n=p(UChar.chr_of_uintn)inISet.for_allp'sletexistsps=letp'n=p(UChar.chr_of_uintn)inISet.existsp'sletfilterps=letp'n=p(UChar.chr_of_uintn)inISet.filterp'sletpartitionps=letp'n=p(UChar.chr_of_uintn)inISet.partitionp'sletelementss=List.mapUChar.chr_of_uint(ISet.elementss)letrangess=letf(n1,n2)=(UChar.chr_of_uintn1,UChar.chr_of_uintn2)inList.mapf(ISet.rangess)letmin_elts=UChar.chr_of_uint(ISet.min_elts)letmax_elts=UChar.chr_of_uint(ISet.max_elts)letchooses=UChar.chr_of_uint(ISet.chooses)letuset_of_isets=sletiset_of_usets=s