www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to get the name of an object's class at compile time?

reply Nathan S. <no.public.email example.com> writes:
What I want is something like this:

----
string className(in Object obj) {
     return obj is null ? "null" : typeid(obj).name;
}
----

...except I want it to work in CTFE. What is the way to do this 
in D?
Feb 16 2020
parent reply Steven Schveighoffer <schveiguy gmail.com> writes:
On 2/17/20 2:28 AM, Nathan S. wrote:
 What I want is something like this:
 
 ----
 string className(in Object obj) {
      return obj is null ? "null" : typeid(obj).name;
 }
 ----
 
 ...except I want it to work in CTFE. What is the way to do this in D?
https://issues.dlang.org/show_bug.cgi?id=7147 It's not doable. It really should be. -Steve
Feb 17 2020
parent reply Stefan Koch <uplink.coder googlemail.com> writes:
On Monday, 17 February 2020 at 18:49:55 UTC, Steven Schveighoffer 
wrote:
 On 2/17/20 2:28 AM, Nathan S. wrote:
 What I want is something like this:
 
 ----
 string className(in Object obj) {
      return obj is null ? "null" : typeid(obj).name;
 }
 ----
 
 ...except I want it to work in CTFE. What is the way to do 
 this in D?
https://issues.dlang.org/show_bug.cgi?id=7147 It's not doable. It really should be. -Steve
Upon seeing this I just implemented typeid(stuff).name; https://github.com/dlang/dmd/pull/10796 With any luck this will be possible in the next release ;)
Feb 17 2020
parent reply Basile B. <b2.temp gmx.com> writes:
On Monday, 17 February 2020 at 22:34:31 UTC, Stefan Koch wrote:
 Upon seeing this I just implemented typeid(stuff).name;

 https://github.com/dlang/dmd/pull/10796

 With any luck this will be possible in the next release ;)
Can this work using `stuff.classinfo.name` too ? This is the same as `typeid(stuff).name`
Feb 17 2020
parent Stefan Koch <uplink.coder googlemail.com> writes:
On Tuesday, 18 February 2020 at 03:33:21 UTC, Basile B. wrote:
 On Monday, 17 February 2020 at 22:34:31 UTC, Stefan Koch wrote:
 Upon seeing this I just implemented typeid(stuff).name;

 https://github.com/dlang/dmd/pull/10796

 With any luck this will be possible in the next release ;)
Can this work using `stuff.classinfo.name` too ? This is the same as `typeid(stuff).name
Currently no. It's represented differently in the end tree.
Feb 18 2020