12345678910111213141516171819202122232425262728293031323334353637# 2 "callback.ml"(**************************************************************************)(* *)(* OCaml *)(* *)(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)(* *)(* Copyright 1996 Institut National de Recherche en Informatique et *)(* en Automatique. *)(* *)(* All rights reserved. This file is distributed under the terms of *)(* the GNU Lesser General Public License version 2.1, with the *)(* special exception on linking described in the file LICENSE. *)(* *)(**************************************************************************)open!Stdlib[@@@ocaml.flambda_o3](* Registering OCaml values with the C runtime for later callbacks *)moduleSafe=structexternalregister_named_value:string->Obj.t->unit@@portable="caml_register_named_value"letregisternamev=register_named_valuename(Obj.reprv)letregister_exceptionname(exn:exn)=letexn=Obj.reprexninletslot=ifObj.tagexn=Obj.object_tagthenexnelseObj.fieldexn0inregister_named_valuenameslotendletregisternamev=Safe.registername(Obj.magic_portablev)letregister_exceptionnameexn=Safe.register_exceptionname(Obj.magic_portableexn)