Mercurial > projects > dil
annotate trunk/src/dil/ast/Parameters.d @ 786:3b34f6a95a27
Added and revised documenation comments.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sun, 24 Feb 2008 02:41:11 +0100 |
parents | 00f872d949ea |
children | 5fe89bb8cbdd |
rev | line source |
---|---|
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
1 /++ |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
2 Author: Aziz Köksal |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
3 License: GPL3 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
4 +/ |
608
fac9e8b258fc
Moved dil.ast.Parameter to dil.ast.Parameters.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
605
diff
changeset
|
5 module dil.ast.Parameters; |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
6 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
7 import dil.ast.Node; |
701
65ad2f96df1f
Moved TypeNode to new module dil.ast.Type.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
668
diff
changeset
|
8 import dil.ast.Type; |
654
2a71e2f50e13
Moved class Declaration to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
635
diff
changeset
|
9 import dil.ast.Expression; |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
10 import dil.lexer.Identifier; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
11 import dil.Enums; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
12 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
13 /// A function or foreach parameter. |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
14 class Parameter : Node |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
15 { |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
16 StorageClass stc; /// The storage classes of the parameter. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
17 TypeNode type; /// The parameter's type. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
18 Identifier* name; /// The name of the parameter. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
19 Expression defValue; /// The default initialization value. |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
20 |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
654
diff
changeset
|
21 this(StorageClass stc, TypeNode type, Identifier* name, Expression defValue) |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
22 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
23 super(NodeCategory.Other); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
24 mixin(set_kind); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
25 // type can be null when param in foreach statement |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
26 addOptChild(type); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
27 addOptChild(defValue); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
28 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
29 this.stc = stc; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
30 this.type = type; |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
654
diff
changeset
|
31 this.name = name; |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
32 this.defValue = defValue; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
33 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
34 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
35 /// Returns true if this is a D-style variadic parameter. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
36 /// E.g.: func(int[] values ...) |
747
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
37 bool isDVariadic() |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
38 { |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
39 return isVariadic && !isCVariadic; |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
40 } |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
41 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
42 /// Returns true if this is a C-style variadic parameter. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
43 /// E.g.: func(...) |
747
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
44 bool isCVariadic() |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
45 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
46 return stc == StorageClass.Variadic && |
668
a1f8d8f2db38
Renamed some identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
654
diff
changeset
|
47 type is null && name is null; |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
48 } |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
49 |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
50 /// Returns true if this is a D- or C-style variadic parameter. |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
51 bool isVariadic() |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
52 { |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
53 return !!(stc & StorageClass.Variadic); |
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
54 } |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
55 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
56 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
57 /// Array of parameters. |
604
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
58 class Parameters : Node |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
59 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
60 this() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
61 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
62 super(NodeCategory.Other); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
63 mixin(set_kind); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
64 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
65 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
66 bool hasVariadic() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
67 { |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
68 if (children.length != 0) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
69 return items[$-1].isVariadic(); |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
70 return false; |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
71 } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
72 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
73 void opCatAssign(Parameter param) |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
74 { addChild(param); } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
75 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
76 Parameter[] items() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
77 { return cast(Parameter[])children; } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
78 |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
79 size_t length() |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
80 { return children.length; } |
87f09469d337
Moved class Parameter/s to module dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
81 } |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
82 |
747
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
83 /*~~~~~~~~~~~~~~~~~~~~~~ |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
84 ~ Template parameters: ~ |
00f872d949ea
Added method scanCommentText() to DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
701
diff
changeset
|
85 ~~~~~~~~~~~~~~~~~~~~~~*/ |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
86 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
87 /// Abstract base class for all template parameters. |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
88 abstract class TemplateParameter : Node |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
89 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
90 Identifier* ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
91 this(Identifier* ident) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
92 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
93 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
94 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
95 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
96 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
97 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
98 /// E.g.: (alias T) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
99 class TemplateAliasParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
100 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
101 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
102 this(Identifier* ident, TypeNode specType, TypeNode defType) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
103 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
104 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
105 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
106 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
107 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
108 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
109 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
110 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
111 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
112 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
113 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
114 /// E.g.: (T t) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
115 class TemplateTypeParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
116 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
117 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
118 this(Identifier* ident, TypeNode specType, TypeNode defType) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
119 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
120 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
121 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
122 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
123 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
124 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
125 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
126 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
127 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
128 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
129 |
635 | 130 // version(D2) |
131 // { | |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
132 /// E.g.: (this T) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
133 class TemplateThisParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
134 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
135 TypeNode specType, defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
136 this(Identifier* ident, TypeNode specType, TypeNode defType) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
137 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
138 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
139 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
140 addOptChild(specType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
141 addOptChild(defType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
142 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
143 this.specType = specType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
144 this.defType = defType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
145 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
146 } |
635 | 147 // } |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
148 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
149 /// E.g.: (T) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
150 class TemplateValueParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
151 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
152 TypeNode valueType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
153 Expression specValue, defValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
154 this(TypeNode valueType, Identifier* ident, Expression specValue, Expression defValue) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
155 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
156 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
157 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
158 addChild(valueType); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
159 addOptChild(specValue); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
160 addOptChild(defValue); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
161 this.valueType = valueType; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
162 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
163 this.specValue = specValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
164 this.defValue = defValue; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
165 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
166 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
167 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
168 /// E.g.: (T...) |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
169 class TemplateTupleParameter : TemplateParameter |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
170 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
171 this(Identifier* ident) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
172 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
173 super(ident); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
174 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
175 this.ident = ident; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
176 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
177 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
178 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
179 /// Array of template parameters. |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
180 class TemplateParameters : Node |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
181 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
182 this() |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
183 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
184 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
185 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
186 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
187 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
188 void opCatAssign(TemplateParameter parameter) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
189 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
190 addChild(parameter); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
191 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
192 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
193 TemplateParameter[] items() |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
194 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
195 return cast(TemplateParameter[])children; |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
196 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
197 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
198 |
786
3b34f6a95a27
Added and revised documenation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
747
diff
changeset
|
199 /// Array of template arguments. |
605
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
200 class TemplateArguments : Node |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
201 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
202 this() |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
203 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
204 super(NodeCategory.Other); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
205 mixin(set_kind); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
206 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
207 |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
208 void opCatAssign(Node argument) |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
209 { |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
210 addChild(argument); |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
211 } |
9daa6c34c45a
Moved template parameter classes to dil.ast.Parameter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
212 } |