Frank Goenninger wrote:
Hi Kenny (and all on the list):

I have a simple defmd:

(defmd gnc-point ()
    (x (c-in 0))
    (y (c-in 0))
    (z (c-in 0))
(foreign-ptr (c_? (let ((ptr (or (^foreign-ptr) (fgn-alloc 'glInt 3 :gnc-point))))
                               (when ptr
                                   (setf (eltgli ptr 0) (^x))
                                 (setf (eltgli ptr 1) (^y))
                                 (setf (eltgli ptr 2) (^z)))
                                 ptr))))


This is a model for a point ( x | y | z ) and a foreign object pointer. The pointer shall be set to a an FFI memory pointer (via CFFI) when the instance is created. Also, the elements of the memory array (which is 3 glInt, this being three OpenGL Integers) shall be updated when any of the coordinates x y z is changed...

I get x, y, and z updated but the foreign-ptr remains NIL ... What am I doing wrong ???

Sorry, I was out for the day at the US Open Tennis tournament.

I am just going to throw notes over the wall cuz no time to dig...

Cells debugging issue: pretty sure you can turn on some global such as *c-debug* to have been warned earlier about referencing the cell in its own rule. I might even have made it a parameter to cells-reset.

To do what you are trying to do, use (I think) the .cache symbol-macro (or is it .cache.?):

      (or .cache.
         (let ((ptr <allocate>))
           (assert (and (^x)(^y)(^z)))
           (setf eo x e1 y e2 z)))

Something like that.

hth, kt
_______________________________________________
cells-devel site list
[email protected]
http://common-lisp.net/mailman/listinfo/cells-devel

Reply via email to