comparison dmd/TypeInfoClassDeclaration.d @ 0:10317f0c89a5

Initial commit
author korDen
date Sat, 24 Oct 2009 08:42:06 +0400
parents
children 2e2a5c3f943a
comparison
equal deleted inserted replaced
-1:000000000000 0:10317f0c89a5
1 module dmd.TypeInfoClassDeclaration;
2
3 import dmd.Type;
4 import dmd.TypeInfoDeclaration;
5 import dmd.ClassInfoDeclaration;
6 import dmd.TypeClass;
7 import dmd.TY;
8 import dmd.Util;
9 import dmd.backend.dt_t;
10 import dmd.backend.Util;
11 import dmd.backend.TYM;
12 import dmd.backend.Symbol;
13
14 class TypeInfoClassDeclaration : TypeInfoDeclaration
15 {
16 this(Type tinfo)
17 {
18 super(tinfo, 0);
19 }
20
21 void toDt(dt_t** pdt)
22 {
23 //printf("TypeInfoClassDeclaration::toDt() %s\n", tinfo->toChars());
24 dtxoff(pdt, Type.typeinfoclass.toVtblSymbol(), 0, TYnptr); // vtbl for TypeInfoClass
25 dtdword(pdt, 0); // monitor
26
27 assert(tinfo.ty == Tclass);
28
29 TypeClass tc = cast(TypeClass)tinfo;
30
31 if (!tc.sym.vclassinfo)
32 tc.sym.vclassinfo = new ClassInfoDeclaration(tc.sym);
33
34 Symbol* s = tc.sym.vclassinfo.toSymbol();
35 assert(s.Sxtrnnum == 0);
36
37 dtxoff(pdt, s, 0, TYnptr); // ClassInfo for tinfo
38 }
39 }
40