[cells-devel] Problem with defmd and dependency ...

Ken Tilton kennytilton at optonline.net
Thu Aug 30 13:03:45 UTC 2007


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



More information about the cells-devel mailing list