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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
130 // version(D2)
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
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
b2fc028d8b55 Added class Visitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 608
diff changeset
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 }