www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - More Compile-Time Reflection

reply "Jonathan Marler" <johnnymarler gmail.com> writes:
It would be great to have more access to compile time data 
structures such as struct/class/interface definitions. Data 
structures for things like method definitions would need to be 
added.  Any thoughts on this?
Feb 28 2014
parent reply "Adam D. Ruppe" <destructionator gmail.com> writes:
What specifically are you looking for? You can get names, 
overloads, parameters, return values, and attributes of 
struct/class methods with reflection today. See 
__traits(allMembers), etc., and the phobos std.traits module.
Feb 28 2014
parent reply =?UTF-8?B?Ik5vcmRsw7Z3Ig==?= <per.nordlow gmail.com> writes:
On Friday, 28 February 2014 at 22:55:54 UTC, Adam D. Ruppe wrote:
 What specifically are you looking for? You can get names, 
 overloads, parameters, return values, and attributes of 
 struct/class methods with reflection today. See 
 __traits(allMembers), etc., and the phobos std.traits module.
See also x.tupleof property which returns a tuple of all the members of x, x being either a struct or class. Typical use foreach (member; structure_or_class.tupleof) { // perform some side-effect with member } /Per
Feb 28 2014
parent ted <foo bar.com> writes:
Nordlöw wrote:

 On Friday, 28 February 2014 at 22:55:54 UTC, Adam D. Ruppe wrote:
 What specifically are you looking for? You can get names,
 overloads, parameters, return values, and attributes of
 struct/class methods with reflection today. See
 __traits(allMembers), etc., and the phobos std.traits module.
See also x.tupleof property which returns a tuple of all the members of x, x being either a struct or class. Typical use foreach (member; structure_or_class.tupleof) { // perform some side-effect with member } /Per
For some examples of extra templates using tupleof, see https://github.com/jacob-carlborg/orange/blob/master/orange/util/Reflection.d
Feb 28 2014