On 2013-01-06 23:33, Philippe Sigaud wrote:
Good thinking. It's not pretty but it works. Thanks.
Maybe it can be hidden inside a template?
Yeah, I'll see what I can do.
--
/Jacob Carlborg
On Monday, 7 January 2013 at 10:19:45 UTC, Jacob Carlborg wrote:
On 2013-01-06 23:33, Philippe Sigaud wrote:
Good thinking. It's not pretty but it works. Thanks.
Maybe it can be hidden inside a template?
Yeah, I'll see what I can do.
in which context does private fail? I'm using
On 2013-01-07 12:59, Tove wrote:
in which context does private fail? I'm using something like this:
struct my_struct
{
private:
@(1) int t1;
@(2) int t2;
@(3) int t3;
}
foreach(m; __traits(allMembers, my_struct))
with(my_struct.init)
pragma(msg, __traits(getAttributes,
On Monday, 7 January 2013 at 13:36:47 UTC, Jacob Carlborg wrote:
On 2013-01-07 12:59, Tove wrote:
in which context does private fail? I'm using something like
this:
struct my_struct
{
private:
@(1) int t1;
@(2) int t2;
@(3) int t3;
}
foreach(m; __traits(allMembers, my_struct))
On Monday, 7 January 2013 at 15:37:48 UTC, Tove wrote:
but this seems to work too?
import std.traits;
struct my_struct
{
private:
@(1) int t1;
@(2) int t2;
@(3) int t3;
}
void main()
{
foreach(m; __traits(allMembers, my_struct))
pragma(msg, __traits(getAttributes,
I'm trying to adapt my serialization library, Orange, to use the new
UDA's. Currently I have one template, NonSerialized, that I want to
transfer to an UDA. This template works like:
class Foo
{
int a;
int b;
mixin NonSerialized!(b);
}
When serializing Foo b will not be
The problem is that to access a UDA attached to a field I need to pass a
symbol to the __traits(getAttributes). With tupleof I can get the name,
type and value of a field but I cannot get a symbol.
__traits(getMember) can be used to get the symbol but that will only work
for public fields.
You can use a string mixin:
class Foo
{
int a;
@(3) private int b;
}
void main()
{
writeln(mixin(__traits(getAttributes, ~ Foo.tupleof[1].stringof ~
))); // - 3
}
Hmm
This works only when main is in the same file (and therefor module) as Foo.
Regards
- Puneet
On Sun, Jan 6, 2013 at 7:46 PM, d coder dlang.co...@gmail.com wrote:
You can use a string mixin:
class Foo
{
int a;
@(3) private int b;
}
void main()
{
writeln(mixin(__traits(getAttributes, ~ Foo.tupleof[1].stringof ~
))); // - 3
}
Hmm
This works only when
On 2013-01-06 18:29, Philippe Sigaud wrote:
You can use a string mixin:
class Foo
{
int a;
@(3) private int b;
}
void main()
{
writeln(mixin(__traits(getAttributes, ~ Foo.tupleof[1].stringof
~ ))); // - 3
}
Good thinking. It's not pretty but it works. Thanks.
--
/Jacob
10 matches
Mail list logo