[Xcb] Using COMMENT, and a Better Way for enums
James Mastros
james@mastros.biz
Thu, 06 Nov 2003 22:56:09 +0100
Hello, all.
I'm working on a perl version of XCB (can we get a name that isn't
tied to C, BTW?), and I've got a minor rant, and a proposal.
First, the minor rant: While COMMENT is defined, it's almost never used.
The m4 files contain comments in the form of /* ... */. This makes it
quite obnoxious to try to generate things other then c with it.
That one is easy, since there's already a defined API for it. enums, my
next topic, require a new one, since the existing one is rather poor.
I propose the following.
ENUM(`CW', `
ENUMELEM(`BackPixmap', NTHBIT(0))
ENUMELEM(`BackPixel', NTHBIT(1))
')
The definition of ENUM needn't change in this proposal (I'm using ENUM
instead of XCBENUM here. The only difference seems to be that XCBENUM
prepends XCB to the name given.
The definitions of the other two macros could be, for client-c.xcb:
DEFINE(`ENUMELEM', $1` = '$2)
DEFINE(`NTHBIT', `1L<<'$1)
That should allow me to define them the way I need for perl. Other
languages may be a problem if they have different ideas of numeric
literals then C, but this seems unlikely in practice. (In particular,
almost all enums will be 42, 0x2a, or NTHBIT(4).)
Oh, one other thing. The extensions/ files seem to have another sort of
literal C -- typedefs. I'd much rather see TYPEDEF(`INT32', `FIXED'),
and the related make_fixed be in some higher layer completely.
BTW, the perl implementation isn't nearly ready for public perusal yet.
While I think I'm done making huge changes to the existing pieces of
infrastructure, there's a whole two layers that aren't there yet. This
is my first low-level X programming, so I'm taking it a bit on the slow
side.
-=- James Mastros
PS -- If I'm a bit harsh or unpolished in spots, I blame my mail client,
which ate the first version of this mail.