Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
November 22, 2012 enum detection | ||||
---|---|---|---|---|
| ||||
How to detect enum member? struct A { enum id = 10; int b; char c; } foreach(ident; __traits(allMembers, A)) { // is ident enum or not? } |
November 22, 2012 Re: enum detection | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jack Applegame | On 11/22/12, Jack Applegame <japplegame@gmail.com> wrote:
> How to detect enum member?
>
> struct A {
> enum id = 10;
> int b;
> char c;
> }
> foreach(ident; __traits(allMembers, A)) {
> // is ident enum or not?
> }
That's not an enum, that's a manifest constant. This is an enum:
struct A {
enum id { x = 10 }
}
You can use:
struct A
{
enum id = 10;
int b;
char c;
}
template isEnum(alias symb)
{
static if (is(symb == enum))
enum bool isEnum = true;
else
enum bool isEnum = false;
}
void main()
{
foreach(ident; __traits(allMembers, A))
{
static if (isEnum!(__traits(getMember, A, ident)))
{
pragma(msg, ident, " yes");
}
}
}
|
November 22, 2012 Re: enum detection | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jack Applegame | Jack Applegame:
> How to detect enum member?
>
> struct A {
> enum id = 10;
> int b;
> char c;
> }
> foreach(ident; __traits(allMembers, A)) {
> // is ident enum or not?
> }
Have you tried is(ident == enum) ?
Bye,
bearophile
|
November 22, 2012 Re: enum detection | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jack Applegame | On Thursday, 22 November 2012 at 15:10:08 UTC, Jack Applegame wrote: > How to detect enum member? > > struct A { > enum id = 10; > int b; > char c; > } > foreach(ident; __traits(allMembers, A)) { > // is ident enum or not? > } Actual field might have `offsetof` builtin property. (not tested) static if (is(typeof(mixin("A."~ident~".offsetof")))) {} Kenji Hara |
November 22, 2012 Re: enum detection | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | > Have you tried is(ident == enum) ?
Sorry, ignore this answer, I was too much distracted.
Bye,
bearophile
|
November 23, 2012 Re: enum detection | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kenji Hara | On Thursday, 22 November 2012 at 17:36:03 UTC, Kenji Hara wrote:
> Actual field might have `offsetof` builtin property.
>
> (not tested)
> static if (is(typeof(mixin("A."~ident~".offsetof")))) {}
Yes, it works! Thanks.
|
November 23, 2012 Re: enum detection | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kenji Hara | On Thursday, 22 November 2012 at 17:36:03 UTC, Kenji Hara wrote:
> Actual field might have `offsetof` builtin property.
>
> (not tested)
> static if (is(typeof(mixin("A."~ident~".offsetof")))) {}
Yes, it works! Thanks.
|
Copyright © 1999-2021 by the D Language Foundation