digitalmars.D.learn - Get superclasses at compile time
- Straivers (19/19) Jan 04 2016 Hello,
- Rikki Cattermole (2/21) Jan 04 2016 is(E : UserInputEvent)
- Straivers (25/54) Jan 04 2016 Okay, maybe I didn't write enough. I have multiple subtypes like:
- Rikki Cattermole (5/56) Jan 04 2016 static if (is(E : UserInputEvent) || is(E : MouseEvent) || is(E :
- Straivers (1/1) Jan 06 2016 Huh, alright. Thanks.
Hello, I'm working on an event system, and I want to be able to check if an event is a subclass of another event. How might I go about this? In essence, I'm looking to compress this: static if (E == UserInputEvent || E == MouseEvent || E == MouseButtonEvent || E == MouseReleasedEvent) { //MouseEvent => MouseButtonEvent => MouseReleasedEvent mreListeners[mrePtr] = listener; mrePtr++; } into something like this: static if (isSuperclassOf!(MouseReleasedEvent, E)) { mreListeners[mrePtr] = listener; mrePtr++; } Thank you for your time. -S
Jan 04 2016
On 05/01/16 5:37 PM, Straivers wrote:Hello, I'm working on an event system, and I want to be able to check if an event is a subclass of another event. How might I go about this? In essence, I'm looking to compress this: static if (E == UserInputEvent || E == MouseEvent || E == MouseButtonEvent || E == MouseReleasedEvent) { //MouseEvent => MouseButtonEvent => MouseReleasedEvent mreListeners[mrePtr] = listener; mrePtr++; } into something like this: static if (isSuperclassOf!(MouseReleasedEvent, E)) { mreListeners[mrePtr] = listener; mrePtr++; } Thank you for your time. -Sis(E : UserInputEvent)
Jan 04 2016
On Tuesday, 5 January 2016 at 04:41:45 UTC, Rikki Cattermole wrote:On 05/01/16 5:37 PM, Straivers wrote:Okay, maybe I didn't write enough. I have multiple subtypes like: static if (E == UserInputEvent || E == MouseEvent || E == MouseMovementEvent) { //MouseMovementEvent is a subclass of MouseEvent mmeListeners[mmePtr] = listener; mmePtr++; } static if (E == UserInputEvent || E == MouseEvent || E == MouseButtonEvent || E == MouseReleasedEvent) { //MouseEvent => MouseButtonEvent => MouseReleasedEvent mreListeners[mrePtr] = listener; mrePtr++; } static if (E == UserInputEvent || E == MouseEvent || E == MouseButtonEvent || E == MousePressedEvent) { //MouseEvent => MouseButtonEvent => MousePressedEvent mpeListeners[mpePtr] = listener; mpePtr++; } and I want to differentiate between them so that a UserInputEvent will cause all three blocks to be compiled, but a MouseMovementEvent will only cause the first block to be compiled. Sorry about that.Hello, I'm working on an event system, and I want to be able to check if an event is a subclass of another event. How might I go about this? In essence, I'm looking to compress this: static if (E == UserInputEvent || E == MouseEvent || E == MouseButtonEvent || E == MouseReleasedEvent) { //MouseEvent => MouseButtonEvent => MouseReleasedEvent mreListeners[mrePtr] = listener; mrePtr++; } into something like this: static if (isSuperclassOf!(MouseReleasedEvent, E)) { mreListeners[mrePtr] = listener; mrePtr++; } Thank you for your time. -Sis(E : UserInputEvent)
Jan 04 2016
On 05/01/16 5:50 PM, Straivers wrote:On Tuesday, 5 January 2016 at 04:41:45 UTC, Rikki Cattermole wrote:static if (is(E : UserInputEvent) || is(E : MouseEvent) || is(E : MouseButtonEvent) || is(E : MousePressedEvent)) { //.... }On 05/01/16 5:37 PM, Straivers wrote:Okay, maybe I didn't write enough. I have multiple subtypes like: static if (E == UserInputEvent || E == MouseEvent || E == MouseMovementEvent) { //MouseMovementEvent is a subclass of MouseEvent mmeListeners[mmePtr] = listener; mmePtr++; } static if (E == UserInputEvent || E == MouseEvent || E == MouseButtonEvent || E == MouseReleasedEvent) { //MouseEvent => MouseButtonEvent => MouseReleasedEvent mreListeners[mrePtr] = listener; mrePtr++; } static if (E == UserInputEvent || E == MouseEvent || E == MouseButtonEvent || E == MousePressedEvent) { //MouseEvent => MouseButtonEvent => MousePressedEvent mpeListeners[mpePtr] = listener; mpePtr++; } and I want to differentiate between them so that a UserInputEvent will cause all three blocks to be compiled, but a MouseMovementEvent will only cause the first block to be compiled. Sorry about that.Hello, I'm working on an event system, and I want to be able to check if an event is a subclass of another event. How might I go about this? In essence, I'm looking to compress this: static if (E == UserInputEvent || E == MouseEvent || E == MouseButtonEvent || E == MouseReleasedEvent) { //MouseEvent => MouseButtonEvent => MouseReleasedEvent mreListeners[mrePtr] = listener; mrePtr++; } into something like this: static if (isSuperclassOf!(MouseReleasedEvent, E)) { mreListeners[mrePtr] = listener; mrePtr++; } Thank you for your time. -Sis(E : UserInputEvent)
Jan 04 2016