+++ /dev/null
-(* $Id$ *)
-
-(* marked pointers *)
-type 'a optaddr
-
-let optaddr : 'a option -> 'a optaddr =
- function
- None -> Obj.magic 0
- | Some x -> Obj.magic x
-
-(* naked pointers *)
-type optstring
-
-external get_null : unit -> optstring = "ml_get_null"
-let raw_null = get_null ()
-
-let optstring : string option -> optstring =
- function
- None -> raw_null
- | Some x -> Obj.magic x
-
-(* boxed pointers *)
-type boxed
-let boxed_null : boxed = Obj.magic (0, raw_null)
-
-type 'a optboxed
-
-let optboxed : 'a option -> 'a optboxed =
- function
- None -> Obj.magic boxed_null
- | Some obj -> Obj.magic obj
-
-let may_box ~f obj : 'a optboxed =
- match obj with
- None -> Obj.magic boxed_null
- | Some obj -> Obj.magic (f obj : 'a)
-
-(* Exceptions *)
-
-exception Null
-let _ = Callback.register_exception "null_pointer" Null