Updating the changelog in the VERSION file, and version_sync.
[shapes.git] / source / astexprs.h
blob9e316c68427373b4985f354e245e0089d58301fc
1 /* This file is part of Shapes.
3 * Shapes is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * any later version.
8 * Shapes is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with Shapes. If not, see <http://www.gnu.org/licenses/>.
16 * Copyright 2008 Henrik Tidefelt
19 #pragma once
21 #include "Shapes_Lang_decls.h"
23 #include "astexpr.h"
25 namespace Shapes
27 namespace Ast
30 class NegExpr : public UnaryPrefixExpr
32 public:
33 NegExpr( const Ast::SourceLocation & loc, const Ast::SourceLocation & opLoc, Ast::Expression * expr ) : UnaryPrefixExpr( loc, opLoc, expr ) { }
34 NegExpr( const Ast::SourceLocation & opLoc, Ast::Expression * expr ) : UnaryPrefixExpr( opLoc, expr ) { }
35 UNARYCALLIMPL( CLASSTREE1_Float );
36 UNARYCALLIMPL( CLASSTREE1_Integer );
37 UNARYCALLIMPL( CLASSTREE1_Length );
38 UNARYCALLIMPL( CLASSTREE1_FloatPair );
39 UNARYCALLIMPL( CLASSTREE1_Coords2D );
40 UNARYCALLIMPL( CLASSTREE1_FloatTriple );
41 UNARYCALLIMPL( CLASSTREE1_Coords3D );
42 private:
43 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg, const Kernel::PassedDyn & dyn ) const;
44 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg, const Kernel::PassedDyn & dyn ) const;
45 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg, const Kernel::PassedDyn & dyn ) const;
46 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg, const Kernel::PassedDyn & dyn ) const;
47 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg, const Kernel::PassedDyn & dyn ) const;
48 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg, const Kernel::PassedDyn & dyn ) const;
49 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg, const Kernel::PassedDyn & dyn ) const;
52 class RelativeExpr : public UnaryPrefixExpr
54 public:
55 RelativeExpr( const Ast::SourceLocation & loc, const Ast::SourceLocation & opLoc, Ast::Expression * expr ) : UnaryPrefixExpr( loc, opLoc, expr ) { }
56 UNARYCALLIMPL( CLASSTREE1_Length );
57 UNARYCALLIMPL( CLASSTREE1_Coords2D );
58 UNARYCALLIMPL( CLASSTREE1_Coords3D );
59 private:
60 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg, const Kernel::PassedDyn & dyn ) const;
61 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg, const Kernel::PassedDyn & dyn ) const;
62 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg, const Kernel::PassedDyn & dyn ) const;
65 class NotExpr : public UnaryPrefixExpr
67 public:
68 NotExpr( const Ast::SourceLocation & opLoc, Ast::Expression * expr ) : UnaryPrefixExpr( opLoc, expr ) { }
69 UNARYCALLIMPL( CLASSTREE1_Boolean );
70 private:
71 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Boolean ) arg, const Kernel::PassedDyn & dyn ) const;
74 class CycleExpr : public UnaryPostfixExpr
76 public:
77 CycleExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr ) : UnaryPostfixExpr( _opLoc, _expr ) { }
78 UNARYCALLIMPL( CLASSTREE1_PathPoint2D );
79 UNARYCALLIMPL( CLASSTREE1_Path2D );
80 UNARYCALLIMPL( CLASSTREE1_PathPoint3D );
81 UNARYCALLIMPL( CLASSTREE1_Path3D );
82 private:
83 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint2D ) arg, const Kernel::PassedDyn & dyn ) const;
84 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path2D ) arg, const Kernel::PassedDyn & dyn ) const;
85 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint3D ) arg, const Kernel::PassedDyn & dyn ) const;
86 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path3D ) arg, const Kernel::PassedDyn & dyn ) const;
89 class MinusMinusExpr : public BinaryInfixExpr
91 public:
92 MinusMinusExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
93 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
94 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
95 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Coords2D );
96 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_PathPoint2D );
97 CALLIMPL( CLASSTREE1_PathPoint2D, CLASSTREE2_Coords2D );
98 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Path2D );
99 CALLIMPL( CLASSTREE1_Path2D, CLASSTREE2_Coords2D );
100 CALLIMPL( CLASSTREE1_PathPoint2D, CLASSTREE2_PathPoint2D );
101 CALLIMPL( CLASSTREE1_PathPoint2D, CLASSTREE2_Path2D );
102 CALLIMPL( CLASSTREE1_Path2D, CLASSTREE2_PathPoint2D );
103 CALLIMPL( CLASSTREE1_Path2D, CLASSTREE2_Path2D );
104 CALLIMPL( CLASSTREE1_PathSlider2D, CLASSTREE2_PathSlider2D );
105 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Coords3D );
106 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_PathPoint3D );
107 CALLIMPL( CLASSTREE1_PathPoint3D, CLASSTREE2_Coords3D );
108 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Path3D );
109 CALLIMPL( CLASSTREE1_Path3D, CLASSTREE2_Coords3D );
110 CALLIMPL( CLASSTREE1_PathPoint3D, CLASSTREE2_PathPoint3D );
111 CALLIMPL( CLASSTREE1_PathPoint3D, CLASSTREE2_Path3D );
112 CALLIMPL( CLASSTREE1_Path3D, CLASSTREE2_PathPoint3D );
113 CALLIMPL( CLASSTREE1_Path3D, CLASSTREE2_Path3D );
114 CALLIMPL( CLASSTREE1_PathSlider3D, CLASSTREE2_PathSlider3D );
115 private:
116 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
117 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
118 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
119 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const;
120 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
121 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Path2D ) arg2, const Kernel::PassedDyn & dyn ) const;
122 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
123 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const;
124 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::Path2D ) arg2, const Kernel::PassedDyn & dyn ) const;
125 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path2D ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const;
126 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path2D ) arg1, DUMMYANDREF( const Lang::Path2D ) arg2, const Kernel::PassedDyn & dyn ) const;
127 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider2D ) arg1, DUMMYANDREF( const Lang::PathSlider2D ) arg2, const Kernel::PassedDyn & dyn ) const;
128 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
129 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::PathPoint3D ) arg2, const Kernel::PassedDyn & dyn ) const;
130 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
131 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Path3D ) arg2, const Kernel::PassedDyn & dyn ) const;
132 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
133 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint3D ) arg1, DUMMYANDREF( const Lang::PathPoint3D ) arg2, const Kernel::PassedDyn & dyn ) const;
134 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint3D ) arg1, DUMMYANDREF( const Lang::Path3D ) arg2, const Kernel::PassedDyn & dyn ) const;
135 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path3D ) arg1, DUMMYANDREF( const Lang::PathPoint3D ) arg2, const Kernel::PassedDyn & dyn ) const;
136 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path3D ) arg1, DUMMYANDREF( const Lang::Path3D ) arg2, const Kernel::PassedDyn & dyn ) const;
137 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider3D ) arg1, DUMMYANDREF( const Lang::PathSlider3D ) arg2, const Kernel::PassedDyn & dyn ) const;
140 class PlusPlusExpr : public BinaryInfixExpr
142 public:
143 PlusPlusExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
144 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
145 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
146 private:
147 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
148 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
151 class AmpersandExpr : public BinaryInfixExpr
153 public:
154 AmpersandExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
155 CALLIMPL( CLASSTREE1_Path2D, CLASSTREE2_Path2D );
156 CALLIMPL( CLASSTREE1_MultiPath2D, CLASSTREE2_Path2D );
157 CALLIMPL( CLASSTREE1_Path2D, CLASSTREE2_MultiPath2D );
158 CALLIMPL( CLASSTREE1_MultiPath2D, CLASSTREE2_MultiPath2D );
159 CALLIMPL( CLASSTREE1_Path3D, CLASSTREE2_Path3D );
160 CALLIMPL( CLASSTREE1_MultiPath3D, CLASSTREE2_Path3D );
161 CALLIMPL( CLASSTREE1_Path3D, CLASSTREE2_MultiPath3D );
162 CALLIMPL( CLASSTREE1_MultiPath3D, CLASSTREE2_MultiPath3D );
163 CALLIMPL( CLASSTREE1_DynamicBindings, CLASSTREE2_DynamicBindings );
164 CALLIMPL( CLASSTREE1_Drawable2D, CLASSTREE2_Drawable2D );
165 CALLIMPL( CLASSTREE1_Drawable3D, CLASSTREE2_Drawable3D );
166 private:
167 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path2D ) arg1, DUMMYANDREF( const Lang::Path2D ) arg2, const Kernel::PassedDyn & dyn ) const;
168 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::MultiPath2D ) arg1, DUMMYANDREF( const Lang::Path2D ) arg2, const Kernel::PassedDyn & dyn ) const;
169 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path2D ) arg1, DUMMYANDREF( const Lang::MultiPath2D ) arg2, const Kernel::PassedDyn & dyn ) const;
170 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::MultiPath2D ) arg1, DUMMYANDREF( const Lang::MultiPath2D ) arg2, const Kernel::PassedDyn & dyn ) const;
171 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path3D ) arg1, DUMMYANDREF( const Lang::Path3D ) arg2, const Kernel::PassedDyn & dyn ) const;
172 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::MultiPath3D ) arg1, DUMMYANDREF( const Lang::Path3D ) arg2, const Kernel::PassedDyn & dyn ) const;
173 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Path3D ) arg1, DUMMYANDREF( const Lang::MultiPath3D ) arg2, const Kernel::PassedDyn & dyn ) const;
174 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::MultiPath3D ) arg1, DUMMYANDREF( const Lang::MultiPath3D ) arg2, const Kernel::PassedDyn & dyn ) const;
175 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::DynamicBindings ) arg1, DUMMYANDREF( const Lang::DynamicBindings ) arg2, const Kernel::PassedDyn & dyn ) const;
176 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Drawable2D ) arg1, DUMMYANDREF( const Lang::Drawable2D ) arg2, const Kernel::PassedDyn & dyn ) const;
177 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Group2D ) arg1, DUMMYANDREF( const Lang::Drawable2D ) arg2, const Kernel::PassedDyn & dyn ) const;
178 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Drawable3D ) arg1, DUMMYANDREF( const Lang::Drawable3D ) arg2, const Kernel::PassedDyn & dyn ) const;
179 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Group3D ) arg1, DUMMYANDREF( const Lang::Drawable3D ) arg2, const Kernel::PassedDyn & dyn ) const;
182 class PlusExpr : public BinaryInfixExpr
184 public:
185 PlusExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
186 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
187 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
188 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
189 CALLIMPL( CLASSTREE1_FloatPair, CLASSTREE2_FloatPair );
190 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Coords2D );
191 CALLIMPL( CLASSTREE1_FloatTriple, CLASSTREE2_FloatTriple );
192 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Coords3D );
193 CALLIMPL( CLASSTREE1_String, CLASSTREE2_String );
194 CALLIMPL( CLASSTREE1_Dash, CLASSTREE2_Length );
195 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Dash );
196 CALLIMPL( CLASSTREE1_PathSlider2D, CLASSTREE2_Float );
197 CALLIMPL( CLASSTREE1_PathSlider2D, CLASSTREE2_Length );
198 CALLIMPL( CLASSTREE1_PathSlider3D, CLASSTREE2_Float );
199 CALLIMPL( CLASSTREE1_PathSlider3D, CLASSTREE2_Length );
200 CALLIMPL( CLASSTREE1_RGB, CLASSTREE2_RGB );
201 CALLIMPL( CLASSTREE1_Gray, CLASSTREE2_Gray );
202 CALLIMPL( CLASSTREE1_SpecularReflection, CLASSTREE2_SpecularReflection );
203 private:
204 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
205 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
206 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
207 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg1, DUMMYANDREF( const Lang::FloatPair ) arg2, const Kernel::PassedDyn & dyn ) const;
208 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
209 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg1, DUMMYANDREF( const Lang::FloatTriple ) arg2, const Kernel::PassedDyn & dyn ) const;
210 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
211 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::String ) arg1, DUMMYANDREF( const Lang::String ) arg2, const Kernel::PassedDyn & dyn ) const;
212 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Dash ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
213 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Dash ) arg2, const Kernel::PassedDyn & dyn ) const;
214 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider2D ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
215 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider2D ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
216 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider3D ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
217 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider3D ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
218 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::RGB ) arg1, DUMMYANDREF( const Lang::RGB ) arg2, const Kernel::PassedDyn & dyn ) const;
219 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Gray ) arg1, DUMMYANDREF( const Lang::Gray ) arg2, const Kernel::PassedDyn & dyn ) const;
220 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::SpecularReflection ) arg1, DUMMYANDREF( const Lang::SpecularReflection ) arg2, const Kernel::PassedDyn & dyn ) const;
223 class MinusExpr : public BinaryInfixExpr
225 public:
226 MinusExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
227 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
228 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
229 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
230 CALLIMPL( CLASSTREE1_FloatPair, CLASSTREE2_FloatPair );
231 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Coords2D );
232 CALLIMPL( CLASSTREE1_FloatTriple, CLASSTREE2_FloatTriple );
233 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Coords3D );
234 CALLIMPL( CLASSTREE1_PathSlider2D, CLASSTREE2_Float );
235 CALLIMPL( CLASSTREE1_PathSlider2D, CLASSTREE2_Length );
236 CALLIMPL( CLASSTREE1_PathSlider3D, CLASSTREE2_Float );
237 CALLIMPL( CLASSTREE1_PathSlider3D, CLASSTREE2_Length );
238 private:
239 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
240 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
241 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
242 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg1, DUMMYANDREF( const Lang::FloatPair ) arg2, const Kernel::PassedDyn & dyn ) const;
243 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
244 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg1, DUMMYANDREF( const Lang::FloatTriple ) arg2, const Kernel::PassedDyn & dyn ) const;
245 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
246 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider2D ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
247 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider2D ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
248 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider3D ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
249 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider3D ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
252 class AngleExpr : public BinaryInfixExpr
254 public:
255 AngleExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
256 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
257 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Length );
258 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Float );
259 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
260 CALLIMPL( CLASSTREE1_FloatPair, CLASSTREE2_FloatPair );
261 CALLIMPL( CLASSTREE1_FloatPair, CLASSTREE2_Coords2D );
262 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_FloatPair );
263 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Coords2D );
264 CALLIMPL( CLASSTREE1_FloatTriple, CLASSTREE2_FloatTriple );
265 CALLIMPL( CLASSTREE1_FloatTriple, CLASSTREE2_Coords3D );
266 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_FloatTriple );
267 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Coords3D );
268 private:
269 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
270 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
271 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
272 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
273 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg1, DUMMYANDREF( const Lang::FloatPair ) arg2, const Kernel::PassedDyn & dyn ) const;
274 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
275 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::FloatPair ) arg2, const Kernel::PassedDyn & dyn ) const;
276 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
277 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg1, DUMMYANDREF( const Lang::FloatTriple ) arg2, const Kernel::PassedDyn & dyn ) const;
278 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
279 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::FloatTriple ) arg2, const Kernel::PassedDyn & dyn ) const;
280 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
283 class AmpersandMoreExpr : public BinaryInfixExpr
285 public:
286 AmpersandMoreExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
287 CALLIMPL( CLASSTREE1_DynamicBindings, CLASSTREE2_DynamicBindings );
288 private:
289 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::DynamicBindings ) arg1, DUMMYANDREF( const Lang::DynamicBindings ) arg2, const Kernel::PassedDyn & dyn ) const;
292 class StarExpr : public BinaryInfixExpr
294 public:
295 StarExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
296 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
297 CALLIMPL( CLASSTREE1_FloatPair, CLASSTREE2_FloatPair );
298 CALLIMPL( CLASSTREE1_FloatPair, CLASSTREE2_Float );
299 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_FloatPair );
300 CALLIMPL( CLASSTREE1_FloatTriple, CLASSTREE2_FloatTriple );
301 CALLIMPL( CLASSTREE1_FloatTriple, CLASSTREE2_Float );
302 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_FloatTriple );
303 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Float );
304 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Length );
305 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Float );
306 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Coords2D );
307 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_FloatPair );
308 CALLIMPL( CLASSTREE1_FloatPair, CLASSTREE2_Coords2D );
309 CALLIMPL( CLASSTREE1_FloatPair, CLASSTREE2_Length );
310 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_FloatPair );
311 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Float );
312 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Coords3D );
313 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_FloatTriple );
314 CALLIMPL( CLASSTREE1_FloatTriple, CLASSTREE2_Coords3D );
315 CALLIMPL( CLASSTREE1_FloatTriple, CLASSTREE2_Length );
316 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_FloatTriple );
317 CALLIMPL( CLASSTREE1_Dash, CLASSTREE2_Float );
318 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Dash );
319 CALLIMPL( CLASSTREE1_Transform2D, CLASSTREE2_Transform2D );
320 CALLIMPL( CLASSTREE1_Transform3D, CLASSTREE2_Transform3D );
321 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_RGB );
322 CALLIMPL( CLASSTREE1_RGB, CLASSTREE2_Float );
323 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Gray );
324 CALLIMPL( CLASSTREE1_Gray, CLASSTREE2_Float );
325 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_SpecularReflection );
326 CALLIMPL( CLASSTREE1_SpecularReflection, CLASSTREE2_Float );
327 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
328 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Integer );
329 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Float );
330 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Integer );
331 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Length );
332 private:
333 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
334 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg1, DUMMYANDREF( const Lang::FloatPair ) arg2, const Kernel::PassedDyn & dyn ) const;
335 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
336 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::FloatPair ) arg2, const Kernel::PassedDyn & dyn ) const;
337 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg1, DUMMYANDREF( const Lang::FloatTriple ) arg2, const Kernel::PassedDyn & dyn ) const;
338 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
339 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::FloatTriple ) arg2, const Kernel::PassedDyn & dyn ) const;
340 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
341 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
342 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
343 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
344 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::FloatPair ) arg2, const Kernel::PassedDyn & dyn ) const;
345 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
346 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
347 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::FloatPair ) arg2, const Kernel::PassedDyn & dyn ) const;
348 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
349 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
350 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::FloatTriple ) arg2, const Kernel::PassedDyn & dyn ) const;
351 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
352 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
353 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::FloatTriple ) arg2, const Kernel::PassedDyn & dyn ) const;
354 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Dash ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
355 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Dash ) arg2, const Kernel::PassedDyn & dyn ) const;
356 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Transform2D ) arg1, DUMMYANDREF( const Lang::Transform2D ) arg2, const Kernel::PassedDyn & dyn ) const;
357 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Transform3D ) arg1, DUMMYANDREF( const Lang::Transform3D ) arg2, const Kernel::PassedDyn & dyn ) const;
358 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::RGB ) arg2, const Kernel::PassedDyn & dyn ) const;
359 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::RGB ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
360 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Gray ) arg2, const Kernel::PassedDyn & dyn ) const;
361 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Gray ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
362 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::SpecularReflection ) arg2, const Kernel::PassedDyn & dyn ) const;
363 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::SpecularReflection ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
364 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
365 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
366 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
367 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
368 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
371 class SlashExpr : public BinaryInfixExpr
373 public:
374 SlashExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
375 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
376 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
377 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Float );
378 CALLIMPL( CLASSTREE1_FloatPair, CLASSTREE2_Float );
379 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Length );
380 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Float );
381 CALLIMPL( CLASSTREE1_FloatTriple, CLASSTREE2_Float );
382 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Length );
383 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Float );
384 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
385 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Integer );
386 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Integer );
387 private:
388 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
389 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
390 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
391 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
392 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
393 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
394 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
395 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
396 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
397 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
398 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
399 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
402 class ProjectionExpr : public BinaryInfixExpr
404 public:
405 ProjectionExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
406 CALLIMPL( CLASSTREE1_FloatPair, CLASSTREE2_FloatPair );
407 CALLIMPL( CLASSTREE1_FloatPair, CLASSTREE2_Coords2D );
408 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_FloatPair );
409 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Coords2D );
410 CALLIMPL( CLASSTREE1_FloatTriple, CLASSTREE2_FloatTriple );
411 CALLIMPL( CLASSTREE1_FloatTriple, CLASSTREE2_Coords3D );
412 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_FloatTriple );
413 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Coords3D );
414 private:
415 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg1, DUMMYANDREF( const Lang::FloatPair ) arg2, const Kernel::PassedDyn & dyn ) const;
416 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatPair ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
417 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::FloatPair ) arg2, const Kernel::PassedDyn & dyn ) const;
418 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
419 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg1, DUMMYANDREF( const Lang::FloatTriple ) arg2, const Kernel::PassedDyn & dyn ) const;
420 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::FloatTriple ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
421 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::FloatTriple ) arg2, const Kernel::PassedDyn & dyn ) const;
422 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
425 class ComposeExpr : public BinaryInfixExpr
427 public:
428 ComposeExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
429 CALLIMPL( CLASSTREE1_Transform2D, CLASSTREE2_Transform2D );
430 CALLIMPL( CLASSTREE1_Transform3D, CLASSTREE2_Transform3D );
431 CALLIMPL( CLASSTREE1_Function, CLASSTREE2_Function );
432 private:
433 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Transform2D ) arg1, DUMMYANDREF( const Lang::Transform2D ) arg2, const Kernel::PassedDyn & dyn ) const;
434 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Transform3D ) arg1, DUMMYANDREF( const Lang::Transform3D ) arg2, const Kernel::PassedDyn & dyn ) const;
435 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Function ) arg1, DUMMYANDREF( const Lang::Function ) arg2, const Kernel::PassedDyn & dyn ) const;
438 class LessExpr : public BinaryInfixExpr
440 public:
441 LessExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
442 CALLIMPL( CLASSTREE1_Symbol, CLASSTREE2_Symbol );
443 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
444 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
445 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
446 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Coords2D );
447 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_PathPoint2D );
448 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_PathSlider2D );
449 CALLIMPL( CLASSTREE1_PolarHandleBase, CLASSTREE2_Coords2D );
450 CALLIMPL( CLASSTREE1_PolarHandleBase, CLASSTREE2_PathPoint2D );
451 CALLIMPL( CLASSTREE1_PolarHandleBase, CLASSTREE2_PathSlider2D );
452 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Coords3D );
453 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_PathPoint3D );
454 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_PathSlider3D );
455 private:
456 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
457 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
458 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
459 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
460 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
461 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const;
462 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::PathSlider2D ) arg2, const Kernel::PassedDyn & dyn ) const;
463 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PolarHandleBase ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
464 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PolarHandleBase ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const;
465 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PolarHandleBase ) arg1, DUMMYANDREF( const Lang::PathSlider2D ) arg2, const Kernel::PassedDyn & dyn ) const;
466 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::CornerCoords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
467 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::CornerCoords2D ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const;
468 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
469 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::PathPoint3D ) arg2, const Kernel::PassedDyn & dyn ) const;
470 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::PathSlider3D ) arg2, const Kernel::PassedDyn & dyn ) const;
473 class GreaterExpr : public BinaryInfixExpr
475 public:
476 GreaterExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
477 CALLIMPL( CLASSTREE1_Symbol, CLASSTREE2_Symbol );
478 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
479 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
480 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
481 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Coords2D );
482 CALLIMPL( CLASSTREE1_PathPoint2D, CLASSTREE2_Coords2D );
483 CALLIMPL( CLASSTREE1_PathSlider2D, CLASSTREE2_Coords2D );
484 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_PolarHandleBase );
485 CALLIMPL( CLASSTREE1_PathPoint2D, CLASSTREE2_PolarHandleBase );
486 CALLIMPL( CLASSTREE1_PathSlider2D, CLASSTREE2_PolarHandleBase );
487 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Coords3D );
488 CALLIMPL( CLASSTREE1_PathPoint3D, CLASSTREE2_Coords3D );
489 CALLIMPL( CLASSTREE1_PathSlider3D, CLASSTREE2_Coords3D );
490 private:
491 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
492 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
493 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
494 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
495 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
496 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
497 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
498 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::PolarHandleBase ) arg2, const Kernel::PassedDyn & dyn ) const;
499 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::PolarHandleBase ) arg2, const Kernel::PassedDyn & dyn ) const;
500 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider2D ) arg1, DUMMYANDREF( const Lang::PolarHandleBase ) arg2, const Kernel::PassedDyn & dyn ) const;
501 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::CornerCoords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
502 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::CornerCoords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
503 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
504 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
505 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
508 class EqualExpr : public BinaryInfixExpr
510 public:
511 EqualExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
512 CALLIMPL( CLASSTREE1_Symbol, CLASSTREE2_Symbol );
513 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
514 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
515 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
516 CALLIMPL( CLASSTREE1_Class, CLASSTREE2_Class );
517 private:
518 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
519 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
520 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
521 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
522 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Class ) arg1, DUMMYANDREF( const Lang::Class ) arg2, const Kernel::PassedDyn & dyn ) const;
525 class NotEqualExpr : public BinaryInfixExpr
527 public:
528 NotEqualExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
529 CALLIMPL( CLASSTREE1_Symbol, CLASSTREE2_Symbol );
530 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
531 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
532 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
533 CALLIMPL( CLASSTREE1_Class, CLASSTREE2_Class );
534 private:
535 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
536 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
537 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
538 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
539 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Class ) arg1, DUMMYANDREF( const Lang::Class ) arg2, const Kernel::PassedDyn & dyn ) const;
542 class LessEqualExpr : public BinaryInfixExpr
544 public:
545 LessEqualExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
546 CALLIMPL( CLASSTREE1_Symbol, CLASSTREE2_Symbol );
547 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
548 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
549 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
550 private:
551 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
552 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
553 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
554 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
557 class GreaterEqualExpr : public BinaryInfixExpr
559 public:
560 GreaterEqualExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
561 CALLIMPL( CLASSTREE1_Symbol, CLASSTREE2_Symbol );
562 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
563 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
564 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
565 private:
566 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
567 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
568 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
569 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
572 class AndExpr : public BinaryInfixExpr
574 public:
575 AndExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
576 CALLIMPL( CLASSTREE1_Boolean, CLASSTREE2_Boolean );
577 private:
578 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Boolean ) arg1, DUMMYANDREF( const Lang::Boolean ) arg2, const Kernel::PassedDyn & dyn ) const;
581 class OrExpr : public BinaryInfixExpr
583 public:
584 OrExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
585 CALLIMPL( CLASSTREE1_Boolean, CLASSTREE2_Boolean );
586 private:
587 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Boolean ) arg1, DUMMYANDREF( const Lang::Boolean ) arg2, const Kernel::PassedDyn & dyn ) const;
590 class XorExpr : public BinaryInfixExpr
592 public:
593 XorExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
594 CALLIMPL( CLASSTREE1_Boolean, CLASSTREE2_Boolean );
595 private:
596 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Boolean ) arg1, DUMMYANDREF( const Lang::Boolean ) arg2, const Kernel::PassedDyn & dyn ) const;