On 1/24/06, efuzzyone@netscape.net efuzzyone@netscape.net wrote:
Hello, Another concern of the original post was how to handle anonymous C enums in cffi.
Should one use `defconstants' for them? Or should cffi provide a mechanism to declare anonymous enums?
As per my understanding cffi requires all enums to be named.
Thanks.
Surendra Singhi http://ssinghi.kreeti.com/
-----Original Message----- From: Luís Oliveira luismbo@gmail.com To: Frank Buss fb@frank-buss.de Cc: cffi-devel@common-lisp.net; justinhj@gmail.com; 'Surendra Singhi' EFuzzyONE@netscape.net Sent: Sun, 22 Jan 2006 15:56:45 +0000 Subject: Re: [cffi-devel] defenum proposal
On 2006-jan-22, at 14:47, Frank Buss wrote:
It is not necessary to use keywords like for the named enums,
because
unnamed enums in C are just syntatic sugar for a list of >
"#define"s, which
is mapped to a list of defconstants. I don't know, if this macro >
fits in the
philosophy of CFFI, perhaps in some utility class, and maybe with >
another
name "defanonenum".
I don't really think of C's enum that way. If I want constants, I use #define (and defconstant in CL). If I want to represent some sort of entity or concept I use an enum (and symbols in CL). For example:
#define MAX_COUNT 127
(defconstant +max-count+ 127)
vs.
enum { RED, BLUE };
:red, :blue (or 'red, 'blue)
I suppose defcenum shouldn't force the user to use keywords though?
--Luís Oliveira http://student.dei.uc.pt/~lmoliv/ Equipa Portuguesa do Translation Project http://www.iro.umontreal.ca/translation/registry.cgi?team=pt
Try the New Netscape Mail Today! Virtually Spam-Free | More Storage | Import Your Contact List http://mail.netscape.com
The problem I am looking at is that SDL uses un-named enums quite a lot. In addition it does arithmetic on them to create other enums...
enum { a_value, another_value, }
then it does
#define MAKE_MASK (n) (1<<n)
enum { MAKE_MASK(a_value), MAKE_MASK(another_value) }
In order to do this I can define a lisp function in my swig interface which does the same thing, but for that to work you need someway of getting to the value of the first enums.
Justin