1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889# 1 "Camomile/public/uMap.ml"(** Maps over Unicode characters. *)(* 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 *)includeIMapletumap_of_imapm=mletimap_of_umapm=mletadd?equvm=IMap.add?eq(UChar.uint_codeu)vmletadd_range?equ1u2vm=IMap.add_range?eq(UChar.uint_codeu1)(UChar.uint_codeu2)vmletfindum=IMap.find(UChar.uint_codeu)mletremoveum=IMap.remove(UChar.uint_codeu)mletremove_rangeu1u2m=IMap.remove_range(UChar.uint_codeu1)(UChar.uint_codeu2)mletfromum=IMap.from(UChar.uint_codeu)mletafterum=IMap.after(UChar.uint_codeu)mletuntilum=IMap.until(UChar.uint_codeu)mletbeforeum=IMap.before(UChar.uint_codeu)mletmemum=IMap.mem(UChar.uint_codeu)mletiterfm=letf'n=f(UChar.chr_of_uintn)inIMap.iterf'mletiter_rangefm=letf'n1n2=f(UChar.chr_of_uintn1)(UChar.chr_of_uintn2)inIMap.iter_rangef'mletfoldfma=letf'nva=f(UChar.chr_of_uintn)vainIMap.foldf'maletfold_rangefma=letf'n1n2va=f(UChar.chr_of_uintn1)(UChar.chr_of_uintn2)vainIMap.fold_rangef'maletmapi?eqfm=letf'nv=f(UChar.chr_of_uintn)vinIMap.mapi?eqf'mletset_to_maps=IMap.set_to_map(USet.iset_of_usets)letdomainm=USet.uset_of_iset(IMap.domainm)letmap_to_setpm=USet.uset_of_iset(IMap.map_to_setpm)