182309Speter(* 2158501Speter * PIntMap: Maps over integers implemented as Patricia trees. 382309Speter * Copyright (C) 2000 Jean-Christophe FILLIATRE 482309Speter * 582309Speter * This software is free software; you can redistribute it and/or 682309Speter * modify it under the terms of the GNU Library General Public 782309Speter * License version 2, as published by the Free Software Foundation. 882309Speter * 982309Speter * This software is distributed in the hope that it will be useful, 1082309Speter * but WITHOUT ANY WARRANTY; without even the implied warranty of 1182309Speter * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 1282309Speter * 1382309Speter * See the GNU Library General Public License version 2 for more details 1482309Speter * (enclosed in the file LGPL). 1582309Speter 1682309Speter * Translated to SML by Michael Norrish, 2001. 1782309Speter *) 1882309Speter 1982309Spetersignature PIntMap = 2082309Spetersig 2182309Speter 2282309Spetertype 'a t 2382309Speter 2482309Spetertype key = int 2582309Speterexception NotFound 2682309Speter 2782309Speterval empty : 'a t 2882309Speter 2982309Speterval add : int -> 'a -> 'a t -> 'a t 3082309Speter 3182309Speterval addf : ('a -> 'a) -> int -> 'a -> 'a t -> ('a t * 'a) 3282309Speter 3382309Speterval find : int -> 'a t -> 'a 3482309Speter 3582309Speterval remove : int -> 'a t -> 'a t 3682309Speter 3782309Speterval mem : int -> 'a t -> bool 3882309Speter 3987702Sjhbval app : (int * 'a -> unit) -> 'a t -> unit 4087702Sjhb 4182309Speterval map : ('a -> 'b) -> 'a t -> 'b t 4283366Sjulian 4383366Sjulianval mapi : (int -> 'a -> 'b) -> 'a t -> 'b t 4483366Sjulian 4582309Speterval fold : (int * 'a * 'b -> 'b) -> 'b -> 'a t -> 'b 4682309Speter 4782309Speterval choose : 'a t -> 'a t * (int * 'a) 4882309Speter 4982309Speterval size : 'a t -> int 50 51end 52