Mercurial > projects > ddmd
comparison dmd/Import.d @ 128:e6e542f37b94
Some more Array -> Vector conversions
author | Eldar Insafutdinov <e.insafutdinov@gmail.com> |
---|---|
date | Sat, 04 Sep 2010 01:33:05 +0100 |
parents | e28b18c23469 |
children | e7769d53e750 |
comparison
equal
deleted
inserted
replaced
127:9ee9b55452cb | 128:e6e542f37b94 |
---|---|
1 module dmd.Import; | 1 module dmd.Import; |
2 | 2 |
3 import dmd.common; | 3 import dmd.common; |
4 import dmd.Dsymbol; | 4 import dmd.Dsymbol; |
5 import dmd.Array; | 5 import dmd.Array; |
6 import dmd.ArrayTypes; | |
6 import dmd.DsymbolTable; | 7 import dmd.DsymbolTable; |
7 import dmd.PROT; | 8 import dmd.PROT; |
8 import dmd.Identifier; | 9 import dmd.Identifier; |
9 import dmd.Module; | 10 import dmd.Module; |
10 import dmd.Package; | 11 import dmd.Package; |
39 } | 40 } |
40 } | 41 } |
41 | 42 |
42 class Import : Dsymbol | 43 class Import : Dsymbol |
43 { | 44 { |
44 Array packages; // array of Identifier's representing packages | 45 Identifiers packages; // array of Identifier's representing packages |
45 Identifier id; // module Identifier | 46 Identifier id; // module Identifier |
46 Identifier aliasId; | 47 Identifier aliasId; |
47 int isstatic; // !=0 if static import | 48 int isstatic; // !=0 if static import |
48 | 49 |
49 // Pairs of alias=name to bind into current namespace | 50 // Pairs of alias=name to bind into current namespace |
53 Array aliasdecls; // AliasDeclarations for names/aliases | 54 Array aliasdecls; // AliasDeclarations for names/aliases |
54 | 55 |
55 Module mod; | 56 Module mod; |
56 Package pkg; // leftmost package/module | 57 Package pkg; // leftmost package/module |
57 | 58 |
58 this(Loc loc, Array packages, Identifier id, Identifier aliasId, int isstatic) | 59 this(Loc loc, Identifiers packages, Identifier id, Identifier aliasId, int isstatic) |
59 { | 60 { |
60 super(id); | 61 super(id); |
61 | 62 |
62 names = new Array(); | 63 names = new Array(); |
63 aliases = new Array(); | 64 aliases = new Array(); |
72 | 73 |
73 if (aliasId) | 74 if (aliasId) |
74 this.ident = aliasId; | 75 this.ident = aliasId; |
75 // Kludge to change Import identifier to first package | 76 // Kludge to change Import identifier to first package |
76 else if (packages && packages.dim) | 77 else if (packages && packages.dim) |
77 this.ident = cast(Identifier)packages.data[0]; | 78 this.ident = packages[0]; |
78 } | 79 } |
79 | 80 |
80 void addAlias(Identifier name, Identifier alias_) | 81 void addAlias(Identifier name, Identifier alias_) |
81 { | 82 { |
82 if (isstatic) | 83 if (isstatic) |
245 StorageClassDeclaration.stcToCBuffer(ob, STC.STCstatic); | 246 StorageClassDeclaration.stcToCBuffer(ob, STC.STCstatic); |
246 ob.writestring(": "); | 247 ob.writestring(": "); |
247 | 248 |
248 if (packages) | 249 if (packages) |
249 { | 250 { |
250 for (size_t i = 0; i < packages.dim; i++) | 251 foreach (pid; packages) |
251 { | 252 { |
252 Identifier pid = cast(Identifier)packages.data[i]; | |
253 ob.printf("%s.", pid.toChars()); | 253 ob.printf("%s.", pid.toChars()); |
254 } | 254 } |
255 } | 255 } |
256 | 256 |
257 ob.writestring(id.toChars()); | 257 ob.writestring(id.toChars()); |