Home | History | Annotate | Download | only in chicken
      1 (declare (hide swig-initialize))
      2 
      3 (define (swig-initialize obj initargs create)
      4      (slot-set! obj 'swig-this
      5         (if (memq 'swig-this initargs)
      6             (cadr initargs)
      7             (let ((ret (apply create initargs)))
      8               (if (instance? ret)
      9                 (slot-ref ret 'swig-this)
     10                 ret)))))
     11 
     12 (define-class  () (void))
     13 
     14 (define-method (compute-getter-and-setter (class ) slot allocator)
     15   (if (not (memq ':swig-virtual slot))
     16     (call-next-method)
     17     (let ((getter (let search-get ((lst slot))
     18                     (if (null? lst)
     19                       #f
     20                       (if (eq? (car lst) ':swig-get)
     21                         (cadr lst)
     22                         (search-get (cdr lst))))))
     23           (setter (let search-set ((lst slot))
     24                     (if (null? lst)
     25                       #f
     26                       (if (eq? (car lst) ':swig-set)
     27                         (cadr lst)
     28                         (search-set (cdr lst)))))))
     29       (values
     30         (lambda (o) (getter (slot-ref o 'swig-this)))
     31 	(lambda (o new) (setter (slot-ref o 'swig-this) new) new)))))
     32