Thread overview
Converting a type to a char
Jan 25, 2019
Thomas Gregory
Jan 25, 2019
Paul Backus
Feb 05, 2019
Murilo
January 25, 2019
I would like to check that a char (unknown at compile time) matches a particular type but I would like to do so without if statements or a hash map as I would like it to be as fast as possible.

Ideally I would choose something like this:

enum typeIndex{
byte = 0,
ubyte,
short,
ushort,
int,
uint
}

char[6] typechars="cCsSiI";

bool check(T)(char c){
   return typechars[typeIndex(typeof(T))]==c;
}

Though I know this is implementation is not remotely correct D.
January 25, 2019
On Friday, 25 January 2019 at 15:53:10 UTC, Thomas Gregory wrote:
> I would like to check that a char (unknown at compile time) matches a particular type but I would like to do so without if statements or a hash map as I would like it to be as fast as possible.
>
> Ideally I would choose something like this:
>
> enum typeIndex{
> byte = 0,
> ubyte,
> short,
> ushort,
> int,
> uint
> }
>
> char[6] typechars="cCsSiI";
>
> bool check(T)(char c){
>    return typechars[typeIndex(typeof(T))]==c;
> }
>
> Though I know this is implementation is not remotely correct D.

You can do this with AliasSeq and staticIndexOf:

import std.meta;

alias Types = AliasSeq!(byte, ubyte, short, ushort, int, uint);
enum typeIndex(T) = staticIndexOf!(T, Types);
char[6] typechars="cCsSiI";

bool check(T)(char c) {
    return typechars[typeIndex!T] == c;
}

Runnable version: https://run.dlang.io/is/Tps38K
February 05, 2019
On Friday, 25 January 2019 at 15:53:10 UTC, Thomas Gregory wrote:
> I would like to check that a char (unknown at compile time) matches a particular type but I would like to do so without if statements or a hash map as I would like it to be as fast as possible.
>
> Ideally I would choose something like this:
>
> enum typeIndex{
> byte = 0,
> ubyte,
> short,
> ushort,
> int,
> uint
> }
>
> char[6] typechars="cCsSiI";
>
> bool check(T)(char c){
>    return typechars[typeIndex(typeof(T))]==c;
> }
>
> Though I know this is implementation is not remotely correct D.

Join this group https://www.facebook.com/groups/662119670846705/ , it is the D lang facebook group, there we can help you out with any doubts.