How to get the name of member function through an alias of that function
    Peter Particle 
    ParticlePeter at gmx.de
       
    Wed Dec 12 08:16:03 UTC 2018
    
    
  
I prefer that all the members marked with myUDA are process in 
the order thy appear in Foo. This happens automatically when I 
iterate with through 'getMemberByUDA'.
// Reduced example code
enum myUDA;
struct Foo {
public:
   @myUDA void  bar(float f) { baz = 1 / f; }
   @myUDA float bar() { return 1 / baz; }
   float baz;
}
import std.traits;
string getMemberFuncName(T)(ref T foo) {
   static foreach(member; getSymbolsByUDA!(T, myUDA)) {
     static if(isSomeFunction!member) {
       // Error: function `Test.Foo.bar(float f)` is not callable 
using argument types `()`
       // pragma(msg, member.stringof);
       // Don't want the fully qualified name, just the func name
       pragma(msg, fullyQualifiedName!member);
       // return the name of the first found member function
       //return name;
     }
   }
   return "";
}
void main() {
   Foo foo;
   string name = getMemberFuncName(foo);
}
    
    
More information about the Digitalmars-d-learn
mailing list