138
|
1 module s;
|
|
2
|
|
3 interface Inter
|
|
4 {
|
|
5 void inter();
|
|
6 }
|
|
7
|
|
8 interface Inter2
|
|
9 {
|
|
10 void inter2();
|
|
11 }
|
|
12
|
|
13 interface InterOne : Inter
|
|
14 {
|
|
15 void interOne();
|
|
16 }
|
|
17
|
|
18 abstract class ClassAbstract : InterOne
|
|
19 {
|
|
20 abstract void inter();
|
|
21 abstract void interOne();
|
|
22 }
|
|
23
|
|
24 class TheClassOne : ClassAbstract
|
|
25 {
|
|
26 void inter()
|
|
27 {
|
|
28 }
|
|
29 void interOne()
|
|
30 {
|
|
31 }
|
|
32 }
|
|
33
|
|
34 class TheClassTwo : TheClassOne, Inter2
|
|
35 {
|
|
36 long l;
|
|
37 double d;
|
|
38
|
|
39 void inter2()
|
|
40 {
|
|
41 }
|
|
42 }
|
|
43
|
|
44 extern(C) int printf(char*, ...);
|
|
45
|
|
46 void main()
|
|
47 {
|
|
48 printf("classinfo test\n");
|
|
49 {
|
|
50 auto c = new TheClassOne;
|
|
51 {
|
|
52 auto ci = c.classinfo;
|
|
53 printf("ci = %.*s\n", ci.name.length, ci.name.ptr);
|
|
54 printf("ci.interfaces.length = %lu\n", ci.interfaces.length);
|
|
55 printf("i[0] = %.*s\n", ci.interfaces[0].classinfo.name.length, ci.interfaces[0].classinfo.name.ptr);
|
|
56 printf("i[1] = %.*s\n", ci.interfaces[1].classinfo.name.length, ci.interfaces[1].classinfo.name.ptr);
|
|
57 }
|
|
58 }
|
|
59 {
|
|
60 auto c = new TheClassTwo;
|
|
61 {
|
|
62 auto ci = c.classinfo;
|
|
63 printf("ci = %.*s\n", ci.name.length, ci.name.ptr);
|
|
64 printf("ci.interfaces.length = %lu\n", ci.interfaces.length);
|
|
65 printf("i[0] = %.*s\n", ci.interfaces[0].classinfo.name.length, ci.interfaces[0].classinfo.name.ptr);
|
|
66 printf("i[1] = %.*s\n", ci.interfaces[1].classinfo.name.length, ci.interfaces[1].classinfo.name.ptr);
|
|
67 printf("i[2] = %.*s\n", ci.interfaces[2].classinfo.name.length, ci.interfaces[2].classinfo.name.ptr);
|
|
68 }
|
|
69 auto i = cast(InterOne)c;
|
|
70 {
|
|
71 auto ci = i.classinfo;
|
|
72 printf("ci = %.*s\n", ci.name.length, ci.name.ptr);
|
|
73 }
|
|
74 auto i2 = cast(Inter2)i;
|
|
75 {
|
|
76 auto ci = i2.classinfo;
|
|
77 printf("ci = %.*s\n", ci.name.length, ci.name.ptr);
|
|
78 }
|
|
79 auto o = cast(Object)i2;
|
|
80 {
|
|
81 auto ci = o.classinfo;
|
|
82 printf("ci = %.*s\n", ci.name.length, ci.name.ptr);
|
|
83 }
|
|
84 }
|
|
85 }
|