Teach groveler cstruct :count :auto to work on arrays anywhere in the struct.
authorJoshua Elsasser <joshua@elsasser.org>
Thu, 22 Nov 2012 18:08:17 +0000 (13:08 -0500)
committerLuís Oliveira <loliveira@common-lisp.net>
Sun, 6 Jan 2013 20:53:17 +0000 (20:53 +0000)
commit4e207452d844b34af2c2a9a5e26d3db18d885941
tree9df1100243934874ddd02bf14526298fcc1f3ea6
parent5204ef621e81731fa2cfd132379d51fee4e2ccef
Teach groveler cstruct :count :auto to work on arrays anywhere in the struct.

The :count :auto logic assumed the struct member was an array which
filled the remainder of the struct, and would generate incorrect cffi
cstruct forms when any other struct members followed one declared
:count :auto.

The following C struct definition and groveler cstruct form
demonstrate this:

struct charbuf {
char three_chars[3];
int clobbered_int
};

(cstruct charbuf "struct charbuf"
  (three-chars "three_chars" :type :char :count :auto)
  (clobbered-int "clobbered_int" :type :int))
grovel/common.h
grovel/grovel.lisp