[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-users] Re: SWIG stuff again
From: |
John Lenz |
Subject: |
[Chicken-users] Re: SWIG stuff again |
Date: |
Tue, 19 Oct 2004 18:41:03 +0000 |
On 10/19/04 01:29:13, felix winkelmann wrote:
(Ok, just to make sure: "-dynamic" is not intended for code containing
"unit" declarations)
It doesn't seem to matter if I compile with -dynamic or not, both get this
error.
Could you send me newobject2.scm?
This is built using current SWIG cvs on the newobject2.i file in
Examples/test-suite/newobject2.i
To get this output, you first need to edit Examples/test-suite/chicken/Makefile
and add -proxy to SWIGOPT on line 20 Then running make newobject2.cpptest in
the Examples/test-suite/chicken directory
If you also add -unhideprimitive to SWIGOPT in the Makefile, the last line in
newobject2.scm (the one that hides the primitives) is not generated and the
example
works.
You can also change VARIENT= to VARIENT=_csc in the Makefile to use csc to
build.
;; -*- buffer-read-only: t -*- vi: set ro:
;; This file was created automatically by SWIG.
;; Don't modify this file, modify the SWIG interface instead.
(declare (unit newobject2))
(declare
(hide swig-init)
(foreign-declare "C_extern void swig_newobject2_init(int,C_word,C_word)
C_noret;"))
(define swig-init (##core#primitive "swig_newobject2_init"))
(swig-init)
(declare (uses tinyclos))
;(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-newobject2> (<class>) (void))
(define-method (compute-getter-and-setter (class <swig-metaclass-newobject2>)
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)))))
(define <Foo>
(make <swig-metaclass-newobject2> 'name '<Foo>
'direct-supers (list <object>)
'direct-slots (list 'swig-this
(list 'dummy ':swig-virtual ':swig-get primitive:Foo-dummy-get
':swig-set primitive:Foo-dummy-set)
)))
(define-method (initialize (obj <Foo>) initargs)
(call-next-method)
(slot-set! obj 'swig-this (apply primitive:new-Foo initargs))
(set-finalizer! obj (lambda (x) (primitive:delete-Foo (slot-ref x
'swig-this)))))
(define makeFoo primitive:makeFoo)
(define fooCount primitive:fooCount)
(define-method (do-stuff (f <Foo>))
(primitive:do-stuff (slot-ref f 'swig-this)))
(declare (hide primitive:Foo-dummy-set primitive:Foo-dummy-get
primitive:delete-Foo primitive:new-Foo
primitive:Foo-swig-chicken-setclosclass primitive:makeFoo primitive:fooCount
primitive:do-stuff ))