diff options
Diffstat (limited to 'devtools/swigwin-1.3.34/Lib/chicken/swigclosprefix.scm')
| -rw-r--r-- | devtools/swigwin-1.3.34/Lib/chicken/swigclosprefix.scm | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/devtools/swigwin-1.3.34/Lib/chicken/swigclosprefix.scm b/devtools/swigwin-1.3.34/Lib/chicken/swigclosprefix.scm new file mode 100644 index 0000000..e4bd72b --- /dev/null +++ b/devtools/swigwin-1.3.34/Lib/chicken/swigclosprefix.scm @@ -0,0 +1,31 @@ +(declare (hide swig-initialize)) + +(define (swig-initialize obj initargs create) + (slot-set! obj 'swig-this + (if (memq 'swig-this initargs) + (cadr initargs) + (let ((ret (apply create initargs))) + (if (instance? ret) + (slot-ref ret 'swig-this) + ret))))) + +(define-class <swig-metaclass-$module> (<class>) (void)) + +(define-method (compute-getter-and-setter (class <swig-metaclass-$module>) slot allocator) + (if (not (memq ':swig-virtual slot)) + (call-next-method) + (let ((getter (let search-get ((lst slot)) + (if (null? lst) + #f + (if (eq? (car lst) ':swig-get) + (cadr lst) + (search-get (cdr lst)))))) + (setter (let search-set ((lst slot)) + (if (null? lst) + #f + (if (eq? (car lst) ':swig-set) + (cadr lst) + (search-set (cdr lst))))))) + (values + (lambda (o) (getter (slot-ref o 'swig-this))) + (lambda (o new) (setter (slot-ref o 'swig-this) new) new))))) |