On Mon, 03 Dec 2001, Andi Gutmans wrote: > Personally I wouldn't write code which gives FOO_BAR and Foo_BAR two > different meanings but I think you are right that it'd be better and I have > an idea on how to do it which I'll lay out. > We are only talking about global constants defined with define() as class > constants are always case sensitive and they can distinguish what you > mentioned above.
That's fine for me. I want them for the keysym constants in PHP-GTK (like GDK_KEY_A and GDK_KEY_a). For now I hack around by using (GDK_KEY__A) for lowercase ones. Which sucks. > There's one way I can think of in order to fix define(). It has advantages > and disadvantages. The advantage is that all constant lookups will be much > faster than they are today (no strtolower() and no memcmp()). The > disadvantage is that defining constants will be much slower. > What we would do is that instead of adding the name of the constant after > an strtolower() into the constants hash we would do the following: > - for case-sensitive constants: Add it with the exact same case as the > definition. > - for case-insensitive constants: Add all possible cases for the constant. > That means that for a word of length L we'd add at most L*2 keys to the > hash. > > This solution actually would work very well. It'd would fix the above > problem and hash lookups would be faster. It would also be a step away from > case-insensitive constants. It would of course make case-insensitive > constant definitions much slower but as no C-extensions use them > (especially after I nuke it) and only about 5 constants in Zend use them it > should be fine (this is assuming that not many people use the third > argument of define() which allows them to define case-insensitive > constants). What about the idea of introducing case-insensitive hashes? Modifying hash function so that it hashes 'A' and 'a' into the same value. -Andrei "The human brain is a wonderful thing. It starts working the moment you are born, and never stops until you stand up to speak in public. " -- Sir George Jessel -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]