#:use-module (system foreign)
#:use-module (irrlicht base)
#:export (get-irrlicht-proc
- null-pointer?))
+ null-object?
+ remember-wrapped
+ mem-wrapped))
;; We use a hash table to store foreign irrlicht methods related with their
;; classes
(else
proc))))
-(define (null-pointer? pointer)
- (eq? pointer %null-pointer))
+(define (null-object? object)
+ (null-pointer? (irr-pointer object)))
+
+;; Table for storing foreign irrlicht wrapped objects by its pointer address
+;; We can recover them later, when we have an address without knowing its type, like in
+;; events case
+(define wrapped-obj-table (make-hash-table))
+
+(define (remember-wrapped object)
+ (or (hash-ref wrapped-obj-table
+ (pointer-address (irr-pointer object)))
+ object))
+
+(define (mem-wrapped object)
+ (hash-set! wrapped-obj-table
+ (pointer-address (irr-pointer object))
+ object)
+ object)