comparison dmd/TypeInfoEnumDeclaration.d @ 174:af724d3510d7

lot os toCBuffer methods implemented moved shared Type.* stuff into Global
author korDen
date Sun, 10 Oct 2010 03:47:23 +0400
parents e28b18c23469
children e3afd1303184
comparison
equal deleted inserted replaced
173:d237b38b5858 174:af724d3510d7
3 import dmd.common; 3 import dmd.common;
4 import dmd.TY; 4 import dmd.TY;
5 import dmd.Type; 5 import dmd.Type;
6 import dmd.Loc; 6 import dmd.Loc;
7 import dmd.TypeEnum; 7 import dmd.TypeEnum;
8 import dmd.Type;
9 import dmd.Global;
8 import dmd.EnumDeclaration; 10 import dmd.EnumDeclaration;
9 import dmd.TypeInfoDeclaration; 11 import dmd.TypeInfoDeclaration;
10 import dmd.backend.dt_t; 12 import dmd.backend.dt_t;
11 import dmd.backend.Util; 13 import dmd.backend.Util;
12 import dmd.backend.TYM; 14 import dmd.backend.TYM;
16 class TypeInfoEnumDeclaration : TypeInfoDeclaration 18 class TypeInfoEnumDeclaration : TypeInfoDeclaration
17 { 19 {
18 this(Type tinfo) 20 this(Type tinfo)
19 { 21 {
20 super(tinfo, 0); 22 super(tinfo, 0);
21 type = Type.typeinfoenum.type; 23 type = global.typeinfoenum.type;
22 } 24 }
23 25
24 override void toDt(dt_t** pdt) 26 override void toDt(dt_t** pdt)
25 { 27 {
26 //printf("TypeInfoEnumDeclaration::toDt()\n"); 28 //printf("TypeInfoEnumDeclaration::toDt()\n");
27 dtxoff(pdt, Type.typeinfoenum.toVtblSymbol(), 0, TYnptr); // vtbl for TypeInfo_Enum 29 dtxoff(pdt, global.typeinfoenum.toVtblSymbol(), 0, TYnptr); // vtbl for TypeInfo_Enum
28 dtdword(pdt, 0); // monitor 30 dtdword(pdt, 0); // monitor
29 31
30 assert(tinfo.ty == Tenum); 32 assert(tinfo.ty == Tenum);
31 33
32 TypeEnum tc = cast(TypeEnum)tinfo; 34 TypeEnum tc = cast(TypeEnum)tinfo;
37 * char[] name; 39 * char[] name;
38 * void[] m_init; 40 * void[] m_init;
39 */ 41 */
40 42
41 if (sd.memtype) 43 if (sd.memtype)
42 { 44 {
43 sd.memtype.getTypeInfo(null); 45 sd.memtype.getTypeInfo(null);
44 dtxoff(pdt, sd.memtype.vtinfo.toSymbol(), 0, TYnptr); // TypeInfo for enum members 46 dtxoff(pdt, sd.memtype.vtinfo.toSymbol(), 0, TYnptr); // TypeInfo for enum members
45 } 47 }
46 else 48 else
47 dtdword(pdt, 0); 49 dtdword(pdt, 0);
51 dtdword(pdt, namelen); 53 dtdword(pdt, namelen);
52 dtabytes(pdt, TYnptr, 0, namelen + 1, toStringz(name)); 54 dtabytes(pdt, TYnptr, 0, namelen + 1, toStringz(name));
53 55
54 // void[] init; 56 // void[] init;
55 if (!sd.defaultval || tinfo.isZeroInit(Loc(0))) 57 if (!sd.defaultval || tinfo.isZeroInit(Loc(0)))
56 { 58 {
57 // 0 initializer, or the same as the base type 59 // 0 initializer, or the same as the base type
58 dtdword(pdt, 0); // init.length 60 dtdword(pdt, 0); // init.length
59 dtdword(pdt, 0); // init.ptr 61 dtdword(pdt, 0); // init.ptr
60 } 62 }
61 else 63 else