digitalmars.D.learn - Identify enum
- Moritz Warning (10/10) Jul 21 2008 I have a global toString template function that is also used for various...
- BCS (12/25) Jul 21 2008 A little more info might be useful.
- Moritz Warning (2/34) Jul 21 2008 ^ Yes, that's the approach I use and the problem that gives me a headach...
- BCS (5/8) Jul 21 2008 Well I think you're toast: this test cases fails
- Moritz Warning (2/16) Jul 21 2008 I'm pretty sure it was reported already. :F
- BCS (3/18) Jul 22 2008 If you can find it you might add a comment in the hope that it will get ...
- Moritz Warning (3/23) Jul 22 2008 Here it is:
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?
Jul 21 2008
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?
Jul 21 2008
On Mon, 21 Jul 2008 18:23:36 +0000, BCS wrote:Reply to Moritz,^ Yes, that's the approach I use and the problem that gives me a headache.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?
Jul 21 2008
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.
Jul 21 2008
On Mon, 21 Jul 2008 20:42:41 +0000, BCS wrote:Reply to Moritz,I'm pretty sure it was reported already. :F^ 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.
Jul 21 2008
Reply to Moritz,On Mon, 21 Jul 2008 20:42:41 +0000, BCS wrote:If you can find it you might add a comment in the hope that it will get fixed sooner.Reply to Moritz,I'm pretty sure it was reported already. :F^ 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.
Jul 22 2008
On Tue, 22 Jul 2008 16:59:01 +0000, BCS wrote:Reply to Moritz,Here it is: http://d.puremagic.com/issues/show_bug.cgi?id=1610On Mon, 21 Jul 2008 20:42:41 +0000, BCS wrote:If you can find it you might add a comment in the hope that it will get fixed sooner.Reply to Moritz,I'm pretty sure it was reported already. :F^ 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.
Jul 22 2008