Metaprogramming get type and field at compile time

bioinfornatics via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Oct 27 15:34:12 PDT 2015


Dear,

I use FieldTypeTuple and FieldNameTuple to get type and 
correponding field name but I fail to loop over these tuple.

As example:

struct Person{
     private string name;
     private ushort age;
     private bool   isMale;

     this(string name, ushort age, bool   isMale){
         this.name    = name;
         this.age     = age;
         this.isMale  = isMale;
     }
}

I would like to print with pragma msg:
  string name
  ushort age
  bool   isMale

for this I tried:

template getDeclarationFields( FieldTypeName...){
     enum typeIndex  = 0;
     enum nameIndex  = FieldTypeName.length / 2;
     enum  res       = FieldTypeName[typeIndex] ~ ' ' ~ 
FieldTypeName[nameIndex] ~';';
     static if( FieldTypeName.length == 1)
         enum getDeclarationFields = res;
     else
         enum getDeclarationFields = res ~ getDeclarationFields!( 
FieldTypeName[typeIndex+1..nameIndex] ~ 
FieldTypeName[nameIndex+1..$] );
}

but that don't build

I though that orange lib should do this somewhere but the lib usi 
his self trait method

thanks for your help




More information about the Digitalmars-d-learn mailing list