www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Get class name of C++ class at runtime

reply Jacob Carlborg <doob me.com> writes:
Is it possible to get the name of a C++ class, "extern(C++) class Foo 
{}", at runtime just as it's possible to do the same for a D class, like 
"object.classinfo.name"?

-- 
/Jacob Carlborg
Jul 07 2016
parent reply Namespace <rswhite4 gmail.com> writes:
On Thursday, 7 July 2016 at 09:59:23 UTC, Jacob Carlborg wrote:
 Is it possible to get the name of a C++ class, "extern(C++) 
 class Foo {}", at runtime just as it's possible to do the same 
 for a D class, like "object.classinfo.name"?
Maybe with a template? ---- void class_name(T)(T obj) if (is(T == class)) { writeln(T.stringof); } ----
Jul 07 2016
parent reply Jacob Carlborg <doob me.com> writes:
On 07/07/16 12:31, Namespace wrote:

 Maybe with a template?

 ----
 void class_name(T)(T obj) if (is(T == class)) {
      writeln(T.stringof);
 }
 ----
I want the string of the runtime type, the most derived type. -- /Jacob Carlborg
Jul 07 2016
parent reply Steven Schveighoffer <schveiguy yahoo.com> writes:
On 7/7/16 9:02 AM, Jacob Carlborg wrote:
 On 07/07/16 12:31, Namespace wrote:

 Maybe with a template?

 ----
 void class_name(T)(T obj) if (is(T == class)) {
      writeln(T.stringof);
 }
 ----
I want the string of the runtime type, the most derived type.
Is this what you are looking for? I don't think you can do this in D-land, but you can probably hook it from C++: http://en.cppreference.com/w/cpp/language/typeid -Steve
Jul 07 2016
parent Jacob Carlborg <doob me.com> writes:
On 07/07/16 15:19, Steven Schveighoffer wrote:

 Is this what you are looking for? I don't think you can do this in
 D-land, but you can probably hook it from C++:

 http://en.cppreference.com/w/cpp/language/typeid
Yeah, that works, thanks. -- /Jacob Carlborg
Jul 07 2016