From: Eric de G. <er...@er...> - 2001-05-29 04:20:14
|
I still don't get this. I think I figured out the source of the problem though: (def-c-struct st_stuff (next (c-ptr st_stuff)) ...) (def-c-struct st_mystuff (stuff (c-ptr st_stuff)) ...) (def-c-call-out myfun (:arguments (myarg (c-ptr st_mystuff) :in :alloca)) (:return-type (c-ptr st_mystuff))) If I remove the (next (c-ptr st_stuff)) I get no stack overflow. st_stuff is a linked list, the next pointer is screwing me up. It's only when I use st_mystuff in the def-c-call-out, if change the types in the def-c-call-out to something else it also compiles fine. Does anyone even use CLISP's FFI? On the CLISP page there are some clisp packages, but from lookin around in the source it doesent look like any use the FFI. Thanks again. -Eric de Groot mailto:er...@er... ----- Original Message ----- From: "Eric de Groot" <er...@er...> To: <cli...@li...> Sent: Monday, May 28, 2001 5:11 PM Subject: [clisp-list] FFI: "Lisp stack overflow. RESET" > More FFI problems;) I switched my enumerations over to ints so clisp gets > past that, but instead now I get: > > Compiling file /usr/local/lib/clisp/callmystuff.lisp ... > *** - Lisp stack overflow. RESET > > What causes a stack overflow? In callmystuff.lisp I have about 5-6 > (def-c-structs ) each with about 10-15 members, followed by a single > (def-c-call-out ) at the end of the file: > > (def-c-call-out myfun (:arguments (myarg (c-ptr st_mystuff) :in :alloca)) > (:return-type (c-ptr st_mystuff))) > > If I remove/comment out this c call out the compilation goes fine, showing 0 > errors, but at soon as I add this back in I get the Lisp stack overflow. > Any ideas? Thanks. > > -Eric de Groot > mailto:er...@er... > > > ----- Original Message ----- > From: "Marco Antoniotti" <ma...@cs...> > To: <pet...@wo...> > Cc: <cli...@li...> > Sent: Monday, May 28, 2001 10:04 AM > Subject: Re: [clisp-list] FFI C enumerations > > > > > > > From: Peter Wood <pet...@wo...> > > > Content-Type: text/plain; charset=us-ascii > > > Content-Disposition: inline > > > User-Agent: Mutt/1.2.5i > > > Sender: cli...@li... > > > X-BeenThere: cli...@li... > > > X-Mailman-Version: 2.0.5 > > > Precedence: bulk > > > List-Help: > <mailto:cli...@li...?subject=help> > > > List-Post: <mailto:cli...@li...> > > > List-Subscribe: > <http://lists.sourceforge.net/lists/listinfo/clisp-list>, > > > <mailto:cli...@li...?subject=subscribe> > > > List-Id: CLISP user discussion <clisp-list.lists.sourceforge.net> > > > List-Unsubscribe: > <http://lists.sourceforge.net/lists/listinfo/clisp-list>, > > > <mailto:cli...@li...?subject=unsubscribe> > > > List-Archive: <http://lists.sourceforge.net/archives//clisp-list/> > > > Date: Mon, 28 May 2001 16:23:06 +0200 > > > Content-Length: 1186 > > > > > > On Mon, May 28, 2001 at 01:26:08AM -0700, Eric de Groot wrote: > > > > Hello. > > > > > > > > What is the CLISP FFI C type for enum?? I can't find it in the > > > > documentation, and i've tried (c-enum ) (c-enumeration ) (enum ) > > > > (enumeration ) and all give me an error. The following fails, tells > me > > > > "*** - Incomplete FFI type ENUM_NET_TYPE is not allowed here.": > > > > > > > > (def-c-enum enum_net_type NET_TYPE_TCPIP NET_TYPE_SOCKET > NET_TYPE_NAMEDPIPE) > > > > > > > > (def-c-struct st_net > > > > (nettype enum_net_type) > > > > (fd int) > > > > .... ) > > > <snip> > > > > > > > > here's the corresponding c code: > > > > > > > > enum enum_net_type { NET_TYPE_TCPIP, NET_TYPE_SOCKET, > NET_TYPE_NAMEDPIPE }; > > > > > > > > typedef struct st_net { > > > > enum enum_net_type nettype; > > > > int fd; > > > > .... > > > > }; > > > > > > > > > > Hi, > > > > > > There's probably a better answer than this one, but here goes: > > > In C enum is compatible with int, so you should be able to do, > > > > > > (def-c-struct st_net > > > (nettype int) > > > (fd int)) > > > > > > Regards, > > > Peter > > > > > > Ps. If you don't like having "int" for readability, you could > > > do: > > > > > > (def-c-type c_enum int) > > > > > > before. > > > > > > > That is true, but sometimes the C compiler may complain for functions > > which do not actually use the enumerated type. > > > > I believe this is a shortcoming of CLisp FFI (shared by ACL FFI). It > > should not be difficult to add them. After all CMUCL and LW have C > > enumerations. > > > > But I am talking without knowing much. > > > > Cheers > > > > Marco > > > > > > -- > > Marco Antoniotti ======================================================== > > NYU Courant Bioinformatics Group tel. +1 - 212 - 998 3488 > > 719 Broadway 12th Floor fax +1 - 212 - 995 4122 > > New York, NY 10003, USA http://bioinformatics.cat.nyu.edu > > "Hello New York! We'll do what we can!" > > Bill Murray in `Ghostbusters'. > > > > _______________________________________________ > > clisp-list mailing list > > cli...@li... > > http://lists.sourceforge.net/lists/listinfo/clisp-list > > > > > _______________________________________________ > clisp-list mailing list > cli...@li... > http://lists.sourceforge.net/lists/listinfo/clisp-list > |