Luís Oliveira wrote:
>I suppose defcenum shouldn't force the user to use keywords though?
Certainly not! Where would you get their value from if they are interned into 
the keyword package.

BTW, I think a SWITCH macro would be a useful companion to ENUM. It's CASE 
where you can put such things into the selector clauses.
Instead of
(case event-type
  (#.SDL-keyboard-event[-enum] (do-this)) ...
  ...
or
(cond
 ((if (eql event-type SDL-keyboard-event[-enum]) ...
 ((if ...
or
(cond
  ((if (enum-eq? event-type SDL-keyboard-event) ...)
  ...

BTW, I hate enums in Lisp and the explosion of constants etc. that they cause.

I'm not convinced DEFCONSTANT is appropriate.  Maybe all is needed is a mapping 
from name to values (and vice-versa, the CLISP FFI has it), and nice useable 
forms like the above SWITCH to hide ugliness.

BTW, DEFCONSTANT won't help with types like (:array :character MAX_PATH)
which once again, shows that it's not a good translation of C. It's just 
widespread.
(:array :character #.MAX_PATH) is also ugly, but I've never thought about 
finding something better.

FWIW, remember to wrap such uses of defconstant into EVAL-when also compile.

Regards,
        Jörg Höhle
_______________________________________________
cffi-devel mailing list
cffi-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel

Reply via email to