Re: [AD] [ alleg-Bugs-2333410 ] think of a way to allocate user event type numbers. |
[ Thread Index |
Date Index
| More lists.liballeg.org/allegro-developers Archives
]
- To: Coordination of admins/developers of the game programming library Allegro <alleg-developers@xxxxxxxxxx>
- Subject: Re: [AD] [ alleg-Bugs-2333410 ] think of a way to allocate user event type numbers.
- From: Milan Mimica <milan.mimica@xxxxxxxxxx>
- Date: Thu, 11 Dec 2008 21:49:41 +0100
Peter Hull wrote:
I think this would be a good way to do it, because we could still use
switch() on it. Those four char constants were used quite a bit on the
old mac os; I think the probability of collision is quite low (as long
as everyone doesn't spontaneously decide to use 'AL' as the first 2
chars..!)
This scheme also leaves values 0x000000 to 0x20202020 and 0x80808080
to 0xFFFFFFFF free, if we stick to ascii printing chars, so we could
reserve part of these ranges for al_get_free_user_event_id(), giving
the paranoid addon writer a choice (a tradeoff of guaranteed
uniqueness vs. not being able to use switch)
How about this:
#define ALLEGRO_EVENT_ID(a,b,c,d,e,f) ((((a)-0x41)<<25) \
| (((b)-0x41)<<20) \
| (((c)-0x41)<<15) \
| (((d)-0x41)<<10) \
| (((e)-0x41)<<5) \
| ((f)-0x41))
It uniquely codes any of the upper case letters and [\]^_`. Leaves 2 bits for
something...
--
Milan Mimica
http://sparklet.sf.net