Thread overview | |||||
---|---|---|---|---|---|
|
January 25, 2019 Converting a type to a char | ||||
---|---|---|---|---|
| ||||
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 Re: Converting a type to a char | ||||
---|---|---|---|---|
| ||||
Posted in reply to Thomas Gregory | 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 Re: Converting a type to a char | ||||
---|---|---|---|---|
| ||||
Posted in reply to Thomas Gregory | 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. |
Copyright © 1999-2021 by the D Language Foundation