annotate dmd/DotTemplateInstanceExp.d @ 178:e3afd1303184

Many small bugs fixed Made all classes derive from TObject to detect memory leaks (functionality is disabled for now) Began work on overriding backend memory allocations (to avoid memory leaks)
author korDen
date Sun, 17 Oct 2010 07:42:00 +0400
parents 60bb0fe4563e
children b0d41ff5e0df
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
1 module dmd.DotTemplateInstanceExp;
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
2
114
e28b18c23469 added a module dmd.common for commonly used stuff
Trass3r
parents: 72
diff changeset
3 import dmd.common;
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
4 import dmd.ArrayTypes;
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
5 import dmd.Expression;
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
6 import dmd.UnaExp;
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
7 import dmd.OutBuffer;
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
8 import dmd.Loc;
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
9 import dmd.Scope;
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
10 import dmd.TemplateInstance;
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
11 import dmd.HdrGenState;
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
12 import dmd.TOK;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
13 import dmd.PREC;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
14 import dmd.Declaration;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
15 import dmd.Global;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
16 import dmd.TypePointer;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
17 import dmd.TypeStruct;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
18 import dmd.TY;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
19 import dmd.ScopeExp;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
20 import dmd.DotExp;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
21 import dmd.Type;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
22 import dmd.Identifier;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
23 import dmd.ErrorExp;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
24 import dmd.DotVarExp;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
25 import dmd.TemplateDeclaration;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
26 import dmd.Dsymbol;
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
27 import dmd.DotTemplateExp;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
28 import dmd.DotIdExp;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
29 import dmd.TemplateExp;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
30 import dmd.DsymbolExp;
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
31
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
32 import dmd.expression.Util;
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
33
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
34 /* Things like:
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
35 * foo.bar!(args)
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
36 */
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
37 class DotTemplateInstanceExp : UnaExp
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
38 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
39 TemplateInstance ti;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
40
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
41 this(Loc loc, Expression e, Identifier name, Objects tiargs)
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
42 {
178
e3afd1303184 Many small bugs fixed
korDen
parents: 130
diff changeset
43 register();
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
44 super(loc, TOK.TOKdotti, DotTemplateInstanceExp.sizeof, e);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
45 //printf("DotTemplateInstanceExp()\n");
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
46 this.ti = new TemplateInstance(loc, name);
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
47 this.ti.tiargs = tiargs;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
48 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
49
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
50 override Expression syntaxCopy()
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
51 {
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
52 DotTemplateInstanceExp de = new DotTemplateInstanceExp(loc, e1.syntaxCopy(), ti.name, TemplateInstance.arraySyntaxCopy(ti.tiargs));
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
53 return de;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
54 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
55
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
56 TemplateDeclaration getTempdecl(Scope sc)
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
57 {
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
58 version(LOGSEMANTIC) {
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
59 printf("DotTemplateInstanceExp::getTempdecl('%s')\n", toChars());
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
60 }
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
61 if (!ti.tempdecl)
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
62 {
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
63 Expression e = new DotIdExp(loc, e1, ti.name);
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
64 e = e.semantic(sc);
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
65 if (e.op == TOKdottd)
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
66 {
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
67 auto dte = cast(DotTemplateExp)e;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
68 ti.tempdecl = dte.td;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
69 }
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
70 else if (e.op == TOKimport)
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
71 {
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
72 auto se = cast(ScopeExp)e;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
73 ti.tempdecl = se.sds.isTemplateDeclaration();
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
74 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
75 }
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
76 return ti.tempdecl;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
77 }
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
78
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
79 override Expression semantic(Scope sc)
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
80 {
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
81 version (LOGSEMANTIC) {
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
82 printf("DotTemplateInstanceExp.semantic('%s')\n", toChars());
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
83 }
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
84 Expression eleft;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
85 Expression e = new DotIdExp(loc, e1, ti.name);
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
86 L1:
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
87 e = e.semantic(sc);
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
88 if (e.op == TOKdottd)
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
89 {
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
90 DotTemplateExp dte = cast(DotTemplateExp )e;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
91 TemplateDeclaration td = dte.td;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
92 eleft = dte.e1;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
93 ti.tempdecl = td;
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
94 ti.semantic(sc);
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
95 Dsymbol s = ti.inst.toAlias();
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
96 Declaration v = s.isDeclaration();
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
97 if (v)
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
98 {
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
99 e = new DotVarExp(loc, eleft, v);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
100 e = e.semantic(sc);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
101 return e;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
102 }
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
103 e = new ScopeExp(loc, ti);
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
104 e = new DotExp(loc, eleft, e);
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
105 e = e.semantic(sc);
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
106 return e;
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
107 }
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
108 else if (e.op == TOKimport)
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
109 {
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
110 auto se = cast(ScopeExp)e;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
111 TemplateDeclaration td = se.sds.isTemplateDeclaration();
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
112 if (!td)
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
113 {
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
114 error("%s is not a template", e.toChars());
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
115 return new ErrorExp();
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
116 }
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
117 ti.tempdecl = td;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
118 e = new ScopeExp(loc, ti);
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
119 e = e.semantic(sc);
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
120 return e;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
121 }
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
122 else if (e.op == TOKdotexp)
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
123 {
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
124 DotExp de = cast(DotExp )e;
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
125
130
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
126 if (de.e2.op == TOKimport)
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
127 {
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
128 // This should *really* be moved to ScopeExp::semantic()
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
129 ScopeExp se = cast(ScopeExp )de.e2;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
130 de.e2 = new DsymbolExp(loc, se.sds);
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
131 de.e2 = de.e2.semantic(sc);
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
132 }
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
133
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
134 if (de.e2.op == TOKtemplate)
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
135 {
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
136 auto te = cast(TemplateExp) de.e2;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
137 e = new DotTemplateExp(loc,de.e1,te.td);
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
138 }
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
139 goto L1;
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
140 }
60bb0fe4563e dmdfe 2.037 first main iteration
Eldar Insafutdinov <e.insafutdinov@gmail.com>
parents: 114
diff changeset
141 error("%s isn't a template", e.toChars());
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
142 return new ErrorExp();
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
143 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
144
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
145 override void toCBuffer(OutBuffer buf, HdrGenState* hgs)
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
146 {
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
147 expToCBuffer(buf, hgs, e1, PREC.PREC_primary);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
148 buf.writeByte('.');
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
149 ti.toCBuffer(buf, hgs);
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
150 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
151
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 2
diff changeset
152 override void dump(int indent)
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
153 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
154 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
155 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
156 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
157