digitalmars.D - Mangled names
- Sjoerd van Leent (27/27) May 25 2006 Walter, others,
- Sjoerd van Leent (11/42) May 25 2006 In addition to my previous message, I'd like to have a possibility to
Walter, others,
Would it be possible to store the mangled name of a class/type in to the
classinfo/typeinfo. This would ease a lot of problems I'm experiencing.
Since I want to traverse through the classinfo class as follows:
public bool derivesFromIBase(in Interface iface) {
ClassInfo info = iface.classinfo;
if(info == IBase.classinfo) {
return true;
} else if(info.interfaces.length > 0) {
foreach(Interface base; info.interfaces) {
if(derivesFromIBase(base)) return true;
}
}
return false;
}
public char[] resolve(in ClassInfo clazz) {
foreach(Interface iface; clazz.interfaces) {
// should return the mangled name
if(derivesFromIBase(iface)) return iface.classinfo.name;
}
if(clazz.base != Object.classinfo) {
return resolve(clazz.base);
}
return null;
}
Regards,
Sjoerd
May 25 2006
In addition to my previous message, I'd like to have a possibility to
search for method names as well. I would welcome such a feature. What
I'm trying to do is to make some general class registry, more or less a
combination of COM and RMI. I try to make it in such a way that it is
easily portable (e.g.: not to much calls towards Win32 API).
Problem is that for this to work I need to be able to make interfaces
visible from the outside, together with their function specifications,
if possible.
Regards,
Sjoerd
Sjoerd van Leent schreef:
Walter, others,
Would it be possible to store the mangled name of a class/type in to the
classinfo/typeinfo. This would ease a lot of problems I'm experiencing.
Since I want to traverse through the classinfo class as follows:
public bool derivesFromIBase(in Interface iface) {
ClassInfo info = iface.classinfo;
if(info == IBase.classinfo) {
return true;
} else if(info.interfaces.length > 0) {
foreach(Interface base; info.interfaces) {
if(derivesFromIBase(base)) return true;
}
}
return false;
}
public char[] resolve(in ClassInfo clazz) {
foreach(Interface iface; clazz.interfaces) {
// should return the mangled name
if(derivesFromIBase(iface)) return iface.classinfo.name;
}
if(clazz.base != Object.classinfo) {
return resolve(clazz.base);
}
return null;
}
Regards,
Sjoerd
May 25 2006








Sjoerd van Leent <svanleent gmail.com>