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]

Reply via email to