1(library (nmosh finalizers)
2         (export make-finalizer
3                 register-finalizer)
4         (import (mosh ffi)
5                 (yuni core)
6                 (rnrs)
7                 (primitives object->pointer)
8                 (prefix (nmosh stubs boehmgc-stubs) stub:))
9
10(define* finalizer (pointer))
11
12(define (make-finalizer pointer)
13  (unless (pointer? pointer)
14    (assertion-violation 'make-finalizer
15                         "invalid argument"
16                         pointer))
17  (make finalizer (pointer pointer)))
18
19(define* (register-finalizer obj (f finalizer) user-data)
20  (let-with f (pointer)
21    (stub:register_finalizer (object->pointer obj)
22                             pointer
23                             user-data)))
24
25)
26