Compile time mapping

Bogdan olar.bogdan.dev at gmail.com
Sun May 12 18:47:20 UTC 2019


On Sunday, 12 May 2019 at 17:53:56 UTC, Bastiaan Veelo wrote:
> If I understand your question correctly, you have two enums of 
> equal length, and you want to convert members across enums 
> according to their position, right?

My question was very vague, sorry about that.

In my use case I'd like to map SDL2 keyboard scan codes to my own 
game input keyboard codes. The two enums would look something 
like this:

```
enum SDL_Scancode
{
     SDL_SCANCODE_UNKNOWN = 0,
     SDL_SCANCODE_A = 4,
     SDL_SCANCODE_B = 5,
     SDL_SCANCODE_C = 6,
     SDL_SCANCODE_D = 7,
}

enum MY_Scancode
{
   KEY_A,
   KEY_B,
   KEY_C,
   KEY_D,
}
```

The two enums are not of equal length, so in the end I just 
decided to create an immutable array of type My_Scancode[] where 
the index is an SDL_Scancode and the value is the corresponding 
MY_Scancode enum member. I'm ok with using some memory for this, 
as long as it's as fast as possible.


More information about the Digitalmars-d-learn mailing list