imugi/engine/resource.scm
2026-05-17 13:36:51 +08:00

25 lines
550 B
Scheme

(module (engine resource) ()
(import scheme
(chicken base)
(chicken gc)
raylib
(srfi 99))
(define-record-type <resource>
(int:make-resource type struct)
resource?
(type int:resource-type)
(struct int:resource-contents))
(define (resource-finalizer type)
(case type
((font) unload-font)
(else identity)))
(define (make-resource type struct)
(assert (member type '(texture font)))
(assert (record? struct))
(let ((r (int:make-resource type struct)))
(set-finalizer! r (lambda (x) ((resource-finalizer type) x)))))
)