(***********************************************************************) (* *) (* TAToo *) (* *) (* Kim Nguyen, LRI UMR8623 *) (* Université Paris-Sud & CNRS *) (* *) (* Copyright 2010-2012 Université Paris-Sud and Centre National de la *) (* Recherche Scientifique. All rights reserved. This file is *) (* distributed under the terms of the GNU Lesser General Public *) (* License, with the special exception on linking described in file *) (* ../LICENSE. *) (* *) (***********************************************************************) type t = int exception Overflow let make_maker () = let _id = ref ~-1 in fun () -> incr _id; let i = !_id in if i < 0 then raise Overflow else i let dummy = -1 external to_int : t -> int = "%identity" external of_int : int -> t= "%identity"