May 27, 2003 Nested enumerated types | ||||
|---|---|---|---|---|
| ||||
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 Re: Nested enumerated types | ||||
|---|---|---|---|---|
| ||||
Posted in reply to ~Gh0sT~ | ~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
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply