On Tuesday, 10 June 2014 at 16:10:09 UTC, Nordlöw wrote:
Is there a way to iterate over the symbolic names of the data members of a class instance?

I'm currently using .tupleof to get its values (and in turn types) to implement pretty printing to multiple backends (currently testing HTML) using as much of D's compile time reflection as possible:

https://github.com/nordlow/justd/blob/master/pprint.d

I've currently defined mappings from InputRanges of Aggregates (tuples, structs, and classes) to HTML tables where

- the aggregate members are mapped to table columns (and their types in turn two column headers) and
- range elements to rows

and I would like to perfect the output by also propagating the member names to the column headings.

I'm aware of __traits(allMembers, Type) but those return more than .tupleof does.

Help please.

I am not sure I understand the question. Does this help?

struct A
{
        int x;
        double y;
}

void main()
{
        foreach (idx, elem; A.init.tupleof)
        {
                pragma(msg, __traits(identifier, A.tupleof[idx]));
        }
}

// output:
// x
// y

Reply via email to