chicken-users
[Top][All Lists]
Advanced

[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 ))







reply via email to

[Prev in Thread] Current Thread [Next in Thread]