www.digitalmars.com         C & C++   DMDScript  

D - Nested enumerated types

reply ~Gh0sT~ <~Gh0sT~_member pathlink.com> writes:
If I have, for example, my own window messages, classified as:
1. hook notifies
1.1. CBT hook
- minimal value
- maximal value
window ...
- creation
- destruction
- activation
- resizing
- moving
1.2. Keyboard hook
- minimal value
- maximal value
key
- pressing
- releasing
.. and others ...
2. internal notifies
- minimal value
- maximal value
2.1. window area refreshs
2.2. waiting to update bottom windows
........

The true object-oriented language will be able to let me use expressions such:
if( msg.code >= msgvalues.internal.min )
...........
else if( msg.code >= msgvalues.hooks.cbt.min )
{
if( msg.code <= msgvalues.hooks.cbt.max )
switch( msg.code )
{
case msgvalues.hooks.cbt.create:
.......
case msgvalues.hooks.cbt.destroy:
.......
.......
}
else if( msg.code <= msgvalues.hooks.keyboard.max )
.........;
}



~Gh0sT~

~Gh0sT~ [frankenstein fastmail.fm]
May 27 2003
parent Andy Friesen <andy ikagames.com> writes:
~Gh0sT~ wrote:
 If I have, for example, my own window messages, classified as:
 1. hook notifies
 1.1. CBT hook
 - minimal value
 - maximal value
 window ...
 - creation
 - destruction
 - activation
 - resizing
 - moving
 1.2. Keyboard hook
 - minimal value
 - maximal value
 key
 - pressing
 - releasing
 .. and others ...
 2. internal notifies
 - minimal value
 - maximal value
 2.1. window area refreshs
 2.2. waiting to update bottom windows
 ........
 
 The true object-oriented language will be able to let me use expressions such:
 if( msg.code >= msgvalues.internal.min )
 ...........
 else if( msg.code >= msgvalues.hooks.cbt.min )
 {
 if( msg.code <= msgvalues.hooks.cbt.max )
 switch( msg.code )
 {
 case msgvalues.hooks.cbt.create:
 .......
 case msgvalues.hooks.cbt.destroy:
 .......
 .......
 }
 else if( msg.code <= msgvalues.hooks.keyboard.max )
 .........;
 }
 
 
 
 ~Gh0sT~
 
 ~Gh0sT~ [frankenstein fastmail.fm]

Conceptually, enumerations are not integers, and they should not be treated like them. Comparing them for anything other than equality, or lack of same isn't a very sound idea. (like adding booleans. It's weird and doesn't make sense) Aside from that, enumerations have no part at all in the object oriented paradigm. They're a completely orthagonal concept. What I would do is have a message code and subcode. You could also simply prefix the enumerations, a la win32. -- andy
May 27 2003