Bumped release number to 0.8.0 to reflect the relative stability and maturity of...
[ocaml-ancient.git] / ancient.ml
1 (* Mark objects as 'ancient' so they are taken out of the OCaml heap.
2  * $Id: ancient.ml,v 1.7 2006-10-13 12:28:20 rich Exp $
3  *)
4
5 type 'a ancient
6
7 type info = {
8   i_size : int;
9 }
10
11 external mark_info : 'a -> 'a ancient * info = "ancient_mark_info"
12
13 let mark obj = fst (mark_info obj)
14
15 external follow : 'a ancient -> 'a = "ancient_follow"
16
17 external delete : 'a ancient -> unit = "ancient_delete"
18
19 external is_ancient : 'a -> bool = "ancient_is_ancient"
20
21 external address_of : 'a -> nativeint = "ancient_address_of"
22
23 type md
24
25 external attach : Unix.file_descr -> nativeint -> md = "ancient_attach"
26
27 external detach : md -> unit = "ancient_detach"
28
29 external share_info : md -> int -> 'a -> 'a ancient * info
30   = "ancient_share_info"
31
32 let share md key obj = fst (share_info md key obj)
33
34 external get : md -> int -> 'a ancient = "ancient_get"