From: John L. <wu...@us...> - 2004-10-16 20:56:19
|
Update of /cvsroot/swig/SWIG/Lib/chicken In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32183/Lib/chicken Modified Files: chicken.swg chickenrun.swg Added Files: swigclosprefix.scm Log Message: Rework the CLOS code for chicken... still needs a little more work Index: chicken.swg =================================================================== RCS file: /cvsroot/swig/SWIG/Lib/chicken/chicken.swg,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** chicken.swg 16 Oct 2004 18:23:49 -0000 1.12 --- chicken.swg 16 Oct 2004 20:56:10 -0000 1.13 *************** *** 583,587 **** #endif /* Chicken initialization function */ ! SWIGEXPORT(void) $realmodule_swig_init(int, C_word, C_word) C_noret; #ifdef __cplusplus } --- 583,587 ---- #endif /* Chicken initialization function */ ! SWIGEXPORT(void) SWIG_init(int, C_word, C_word) C_noret; #ifdef __cplusplus } *************** *** 589,596 **** %} %insert(init) %{ /* CHICKEN initialization function */ SWIGEXPORT(void) ! $realmodule_swig_init(int argc, C_word closure, C_word continuation) { static int typeinit = 0; int i; --- 589,598 ---- %} + %insert(closprefix) "swigclosprefix.scm" + %insert(init) %{ /* CHICKEN initialization function */ SWIGEXPORT(void) ! SWIG_init(int argc, C_word closure, C_word continuation) { static int typeinit = 0; int i; *************** *** 617,620 **** --- 619,625 ---- swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]); } + for (i = 0; swig_types_initial[i]; i++) { + SWIG_PropagateClientData(swig_types[i]); + } typeinit = 1; ret = C_SCHEME_TRUE; --- NEW FILE: swigclosprefix.scm --- ;(declare (hide swig-initialize)) ;(define (swig-initialize obj initargs create destroy) ; (if (memq 'swig-init initargs) ; (slot-set! obj 'swig-this (cadr initargs)) ; (begin ; (slot-set! obj 'swig-this (apply create initargs)) ;(let ((ret (apply create initargs))) ; (if (instance? ret) ; (slot-ref ret 'swig-this) ; ret))) ; (set-finalizer! obj destroy)))) (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))))) Index: chickenrun.swg =================================================================== RCS file: /cvsroot/swig/SWIG/Lib/chicken/chickenrun.swg,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** chickenrun.swg 5 Oct 2004 22:43:39 -0000 1.3 --- chickenrun.swg 16 Oct 2004 20:56:10 -0000 1.4 *************** *** 60,63 **** --- 60,67 ---- SWIG_BARF1_ARGUMENT_NULL /* 1 arg */ }; + + struct swig_chicken_clientdata { + C_word clos_class; + }; static char * |