www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - how do I get only static member of a class?

reply Marc <jckj33 gmail.com> writes:
I found no way with __traits() on std.traits. I found 
isStaticFunction and isStaticArray but nothing about a member. Is 
this by desgin?

Give a class like:

 class C { static int a, b, c; int d; }
I'd like to get a, b and c. I'm using this:
 __traits(allMembers, C)
Jan 03
parent reply =?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
On 01/03/2018 03:48 PM, Marc wrote:
 I found no way with __traits() on std.traits. I found isStaticFunction 
 and isStaticArray but nothing about a member. Is this by desgin?
 
 Give a class like:
 
 class C { static int a, b, c; int d; }
I'd like to get a, b and c. I'm using this:
 __traits(allMembers, C)
class C { static int a, b, c; int d; } string[] staticMembers(T)() { string[] statics; foreach (m; __traits(derivedMembers, T)) { import std.traits : hasStaticMember; static if (hasStaticMember!(T, m)) { statics ~= m; } } return statics; } void main() { pragma(msg, staticMembers!C); } Ali
Jan 03
parent Marc <jckj33 gmail.com> writes:
On Thursday, 4 January 2018 at 00:02:24 UTC, Ali Çehreli wrote:
 On 01/03/2018 03:48 PM, Marc wrote:
 I found no way with __traits() on std.traits. I found 
 isStaticFunction and isStaticArray but nothing about a member. 
 Is this by desgin?
 
 Give a class like:
 
 class C { static int a, b, c; int d; }
I'd like to get a, b and c. I'm using this:
 __traits(allMembers, C)
class C { static int a, b, c; int d; } string[] staticMembers(T)() { string[] statics; foreach (m; __traits(derivedMembers, T)) { import std.traits : hasStaticMember; static if (hasStaticMember!(T, m)) { statics ~= m; } } return statics; } void main() { pragma(msg, staticMembers!C); } Ali
Thanks again, Ali
Jan 04