#:use-module (oop goops)
#:use-module (system foreign)
#:export (<irrlicht-base>
- wrapped-obj))
+ irr-class
+ irr-pointer
+ is-empty?))
(define-class <irrlicht-base> ()
- (irr-ptr #:init-value %null-pointer #:accessor irrlicht-pointer #:init-keyword #:ptr)
- (irr-class #:init-value "irrlicht-base" #:getter irrlicht-class)
- (wrapped-obj #:accessor wrapped-obj #:allocation #:virtual
- #:slot-ref (lambda (obj)
- (cons (slot-ref obj 'irr-class)
- (slot-ref obj 'irr-ptr)))
- #:slot-set! (lambda (obj wrapped)
- (slot-set! obj 'irr-ptr (cdr wrapped)))))
+ (irr-class #:init-value "")
+ (irr-pointer #:init-value %null-pointer #:getter irr-pointer #:init-keyword #:irr-pointer))
+
+;; irr-class getter is defined in this way to avoid problems with multiple getters
+;; in multiple inherited classes
+(define-method (irr-class (obj <irrlicht-base>))
+ (slot-ref obj 'irr-class))
+
+(define-method (is-empty? (obj <irrlicht-base>))
+ (equal? (irr-pointer obj) %null-pointer))