RequestID()

BlitzMax Forums/BlitzMax Programming/RequestID()

CS_TBL(Posted 2006) [#1]
Yes, we need this!

Why?

Regulary I'm creating event-based code, usually gadget-related. Since I need my own event id's to have it al working I need to keep track of free ID numbers. Usually all my own events start with 1337, then followed by some obscure 0666 number orso. :P

But it would be perfect if there was this RequestID() function that simply keeps track of a list of used EventID's, the BRL ones and even your own ones. So, the only thing you'd have to do when creating an event id is doing:
Global EVENT_COLORCHANGED:int=RequestID()
Global EVENT_COLORCHANGING:int=RequestID()
Global EVENT_BUTTONPRESSED:int=RequestID()
Global EVENT_PALETTECHANGED:int=RequestID()
etc.

Kinda like enum except that you don't need to know which ID's are in use already.

This list of IDs should prolly be an object with a list inside, so this RequestID() function would know where to look for used eventIDs.

A function like this would save me from searching through all my files to check if I don't overwrite some ID (let alone BRL introducing a new ID on a position *I* was already using for my own stuff!). Also, it's portable across users who have their own list!


TartanTangerine (was Indiepath)(Posted 2006) [#2]
I generally use an MD5 hash of millisecs + some random thingie.


tonyg(Posted 2006) [#3]
Yep, and asked for the same some time ago.
AllocHoodId works with a global array of 256 numbers farming out the next number each time.
You could do the same making the first number 'safe'
i.e. > 32769 but you can't guarantee they won't be used again in the future.
or 0-255 which are not currently used.


CS_TBL(Posted 2006) [#4]
Even when using a safe number, you'd still have to check on your own ID's being overwritten, and your code would still not be truly portable.


tonyg(Posted 2006) [#5]
True your code won't be portable but you wouldn't overwrite if you keep the safe numbers in an array plus a pointer to the next one to use. Alternatively, use a number like Indie suggests.