Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
July 21, 2008 Identify enum | ||||
---|---|---|---|---|
| ||||
I have a global toString template function that is also used for various enums. If the toString is used for an unknown Type it's supposed to print out an error message at compile time (static assert). Now I face the problem that toString is used for some enum I haven't modified toString for, but I can't identify the the enums name. All I get is the base type int, which is pretty useless. I can search my entire codebase and make a list of all enum types it is used for. But that's pretty hard for some big templates engines. Is there a workaround? |
July 21, 2008 Re: Identify enum | ||||
---|---|---|---|---|
| ||||
Posted in reply to Moritz Warning | Reply to Moritz,
> I have a global toString template function that is also used for
> various
> enums.
> If the toString is used for an unknown Type it's supposed to print out
> an error message at compile time (static assert).
> Now I face the problem that toString is used for some enum I haven't
> modified toString for, but I can't identify the the enums name.
> All I get is the base type int, which is pretty useless.
> I can search my entire codebase and make a list of all enum types it
> is used for. But that's pretty hard for some big templates engines.
>
> Is there a workaround?
>
A little more info might be useful.
As a starting point I'll assume the toString is something like this:
char[] toString(T)(T arg)...
{
static if(is(T == type1)) {something}
else static if(is(T type2)) {something}
...
else static assert(false,"can't use "~T.stringof);
}
and that the assert is giving something useless.
Is that the case or are you taking a different approach?
|
July 21, 2008 Re: Identify enum | ||||
---|---|---|---|---|
| ||||
Posted in reply to BCS | On Mon, 21 Jul 2008 18:23:36 +0000, BCS wrote:
> Reply to Moritz,
>
>> I have a global toString template function that is also used for
>> various
>> enums.
>> If the toString is used for an unknown Type it's supposed to print out
>> an error message at compile time (static assert). Now I face the
>> problem that toString is used for some enum I haven't modified toString
>> for, but I can't identify the the enums name. All I get is the base
>> type int, which is pretty useless. I can search my entire codebase and
>> make a list of all enum types it is used for. But that's pretty hard
>> for some big templates engines.
>>
>> Is there a workaround?
>>
>>
> A little more info might be useful.
>
> As a starting point I'll assume the toString is something like this:
>
> char[] toString(T)(T arg)...
> {
>
> static if(is(T == type1)) {something} else static if(is(T type2))
> {something} ...
> else static assert(false,"can't use "~T.stringof);
>
> }
>
> and that the assert is giving something useless.
>
> Is that the case or are you taking a different approach?
^ Yes, that's the approach I use and the problem that gives me a headache.
|
July 21, 2008 Re: Identify enum | ||||
---|---|---|---|---|
| ||||
Posted in reply to Moritz Warning | Reply to Moritz,
> ^ Yes, that's the approach I use and the problem that gives me a
> headache.
>
Well I think you're toast: this test cases fails
enum Foo{a}
static assert("Foo" == Foo.stringof, "'Foo' == '"~Foo.stringof~"'");
Might be a bug, but it might already be reported.
|
July 21, 2008 Re: Identify enum | ||||
---|---|---|---|---|
| ||||
Posted in reply to BCS | On Mon, 21 Jul 2008 20:42:41 +0000, BCS wrote:
> Reply to Moritz,
>
>
>> ^ Yes, that's the approach I use and the problem that gives me a headache.
>>
>>
>
> Well I think you're toast: this test cases fails
>
> enum Foo{a}
> static assert("Foo" == Foo.stringof, "'Foo' == '"~Foo.stringof~"'");
>
> Might be a bug, but it might already be reported.
I'm pretty sure it was reported already. :F
|
July 22, 2008 Re: Identify enum | ||||
---|---|---|---|---|
| ||||
Posted in reply to Moritz Warning | Reply to Moritz,
> On Mon, 21 Jul 2008 20:42:41 +0000, BCS wrote:
>
>> Reply to Moritz,
>>
>>> ^ Yes, that's the approach I use and the problem that gives me a
>>> headache.
>>>
>> Well I think you're toast: this test cases fails
>>
>> enum Foo{a}
>> static assert("Foo" == Foo.stringof, "'Foo' == '"~Foo.stringof~"'");
>> Might be a bug, but it might already be reported.
>>
> I'm pretty sure it was reported already. :F
>
If you can find it you might add a comment in the hope that it will get fixed sooner.
|
July 22, 2008 Re: Identify enum | ||||
---|---|---|---|---|
| ||||
Posted in reply to BCS | On Tue, 22 Jul 2008 16:59:01 +0000, BCS wrote: > Reply to Moritz, > >> On Mon, 21 Jul 2008 20:42:41 +0000, BCS wrote: >> >>> Reply to Moritz, >>> >>>> ^ Yes, that's the approach I use and the problem that gives me a headache. >>>> >>> Well I think you're toast: this test cases fails >>> >>> enum Foo{a} >>> static assert("Foo" == Foo.stringof, "'Foo' == '"~Foo.stringof~"'"); >>> Might be a bug, but it might already be reported. >>> >> I'm pretty sure it was reported already. :F >> >> > If you can find it you might add a comment in the hope that it will get fixed sooner. Here it is: http://d.puremagic.com/issues/show_bug.cgi?id=1610 |
Copyright © 1999-2021 by the D Language Foundation