
So if the resulting spec file looked something like
;; spec file starts here (cffi-c2ffi:definition foo ...) (cffi-c2ffi:definition bar ...) (cffi-c2ffi:definition baz ...) ;; spec file ends here
ah, ok, this makes sense, thanks! but it leads up to an issue i'm dealing with now: the c2ffi output contains offset for each field in a struct, which enables us to generate partial bindings where not all struct fields need to have a defined type. my current idea to deal with undefined types is the following: - (cffi:defctype undefined :char "Used by cffi-c2ffi to mark types that are used in e.g. structs, but are not defined in the scope of the generation.") - in a first phase collect all defined and referenced types. (this may be a PITA because i don't know all the ins and outs of C namespaces, e.g. where is it ok to reference a struct by only its name, as opposed to by "struct some-struct", and which namespaces are looked up in naked type references, etc.) - in the emitting phase first emit defctype for each used but not defined type before emitting the definitions themselves - while emitting definitions simplify them compatibly. e.g. the bindings of functions that take a pointer to an undefined type get simplified into a :pointer. as you can see this needs a multi-phase whole-file processing, but i'm open for ideas. the way cl-autowrap deals with this is that its struct framework doesn't complain for undefined types because it expects :offset for each field. maybe defcstruct could be extended in a sane way with something like this? -- • attila lendvai • PGP: 963F 5D5F 45C7 DFCD 0A39 -- “Governments want efficient technicians, not human beings, because human beings become dangerous to governments – and to organized religions as well. That is why governments and religious organizations seek to control education.” — Jiddu Krishnamurti (1901–1986), 'Education and the Significance of Life'