lindquist@138: module s; lindquist@138: lindquist@138: interface Inter lindquist@138: { lindquist@138: void inter(); lindquist@138: } lindquist@138: lindquist@138: interface Inter2 lindquist@138: { lindquist@138: void inter2(); lindquist@138: } lindquist@138: lindquist@138: interface InterOne : Inter lindquist@138: { lindquist@138: void interOne(); lindquist@138: } lindquist@138: lindquist@138: abstract class ClassAbstract : InterOne lindquist@138: { lindquist@138: abstract void inter(); lindquist@138: abstract void interOne(); lindquist@138: } lindquist@138: lindquist@138: class TheClassOne : ClassAbstract lindquist@138: { lindquist@138: void inter() lindquist@138: { lindquist@138: } lindquist@138: void interOne() lindquist@138: { lindquist@138: } lindquist@138: } lindquist@138: lindquist@138: class TheClassTwo : TheClassOne, Inter2 lindquist@138: { lindquist@138: long l; lindquist@138: double d; lindquist@138: lindquist@138: void inter2() lindquist@138: { lindquist@138: } lindquist@138: } lindquist@138: lindquist@138: extern(C) int printf(char*, ...); lindquist@138: lindquist@138: void main() lindquist@138: { lindquist@138: printf("classinfo test\n"); lindquist@138: { lindquist@138: auto c = new TheClassOne; lindquist@138: { lindquist@138: auto ci = c.classinfo; lindquist@138: printf("ci = %.*s\n", ci.name.length, ci.name.ptr); lindquist@138: printf("ci.interfaces.length = %lu\n", ci.interfaces.length); lindquist@138: printf("i[0] = %.*s\n", ci.interfaces[0].classinfo.name.length, ci.interfaces[0].classinfo.name.ptr); lindquist@138: printf("i[1] = %.*s\n", ci.interfaces[1].classinfo.name.length, ci.interfaces[1].classinfo.name.ptr); lindquist@138: } lindquist@138: } lindquist@138: { lindquist@138: auto c = new TheClassTwo; lindquist@138: { lindquist@138: auto ci = c.classinfo; lindquist@138: printf("ci = %.*s\n", ci.name.length, ci.name.ptr); lindquist@138: printf("ci.interfaces.length = %lu\n", ci.interfaces.length); lindquist@138: printf("i[0] = %.*s\n", ci.interfaces[0].classinfo.name.length, ci.interfaces[0].classinfo.name.ptr); lindquist@138: printf("i[1] = %.*s\n", ci.interfaces[1].classinfo.name.length, ci.interfaces[1].classinfo.name.ptr); lindquist@138: printf("i[2] = %.*s\n", ci.interfaces[2].classinfo.name.length, ci.interfaces[2].classinfo.name.ptr); lindquist@138: } lindquist@138: auto i = cast(InterOne)c; lindquist@138: { lindquist@138: auto ci = i.classinfo; lindquist@138: printf("ci = %.*s\n", ci.name.length, ci.name.ptr); lindquist@138: } lindquist@138: auto i2 = cast(Inter2)i; lindquist@138: { lindquist@138: auto ci = i2.classinfo; lindquist@138: printf("ci = %.*s\n", ci.name.length, ci.name.ptr); lindquist@138: } lindquist@138: auto o = cast(Object)i2; lindquist@138: { lindquist@138: auto ci = o.classinfo; lindquist@138: printf("ci = %.*s\n", ci.name.length, ci.name.ptr); lindquist@138: } lindquist@138: } lindquist@138: }