From: Andreas F. <as...@bo...> - 2004-05-08 19:34:55
|
Hi all, this is the longest-lasting project that I have done with SBCL yet (-: So, what does it do? SB-GROVEL currently uses vectors of bytes in lisp space for structures. This approach has a few problems: * You have to use with-pinned-objects when you call functions that take a structure as arguments. * Alien function definitions and structure definitions can't make use of predefined alien types: you have to use (* t) or (unsigned 8) instead of more useful names. * You have to cast structures that were returned from functions into lisp space. So, it would be a good idea to use SB-ALIEN structures for this kind of thing. Of course, using SB-ALIEN has a disadvantage, too: sb-grovel's vector design is ingenious in that it doesn't have to care if the element you want is in a union or on the structure toplevel. it sees an offset and a size. to make SB-GROVEL be as smart with SB-ALIEN structs is a serious undertaking. (-: Which I have attempted and, surprisingly, it seems to work with only a few modifications to constants.lisp (lisp code using sb-grovel needs to be reworked a bit more, though). I have converted SB-POSIX to use the new scheme. SB-BSD-SOCKETS is missing yet. So, without further ado, here's the code. Be merry! |