Commit | Line | Data |
---|---|---|
920dae64 AT |
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 <swig-metaclass-$module> (<class>) (void)) | |
13 | ||
14 | (define-method (compute-getter-and-setter (class <swig-metaclass-$module>) 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))))) |