[Cffi-devel] Fw: Fw: readded broken link from last post

Willem Rein Oudshoorn woudshoo at xs4all.nl
Sat Apr 26 15:46:58 UTC 2014


Joeish W <joeish80829 at yahoo.com> writes:

> This is important to figure out so I thought I'd include the contents
> of my C++ interop.cpp file in a gist
> https://gist.github.com/W-Net-AI/11319737  and my rect.cpp 
> W-Net-AI/gist:11319776  you have my Lisp vector class wrappers so here
> is my Lisp rect  wrappers...the rect is a little involved for the
> purpose of overloading.

Well, the code for Rect will work.  However:

1. Notice that you deal with pointers to Rect's.

2. You do not have a function to free the memory created by the 
   `new Rect'

3. You really should use the type conversion like I showed you before
   if you want to keep your sanity.

Now your problem with the vector<Rect> code boils down to the following mismatch:

A. The vector deals with instances of Rect NOT pointers to Rect
B. The other code rect code expect pointers to Rect NOT instances of
   RECT.

So you have two options:

i. Only deal with pointers to Rect.  This means you cannot use
   vector<Rect> but have to use vector<Rect*>.

ii. Learn to deal with both.  This will require conversion from 
    Rect <--> Rect*.

    Now note, that if you want to keep using vector<Rect> you need to
    either:
    - Translate the 
         vector<Rect>  -->  vector<Rect*>  <-> Rect** 
      on the C-side
    - Or do it on the lisp side, but that means that CFFI/Lisp need to know
      the size of the Rect instances.  

Wim Oudshoorn






More information about the cffi-devel mailing list