Update suitable examples and tests to use blank mode
[shapes.git] / source / astexprs.h
blobe40612876bf555c632bf05fa3c444c941a750a10
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_Character, CLASSTREE2_Character );
446 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
447 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Coords2D );
448 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_PathPoint2D );
449 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_PathSlider2D );
450 CALLIMPL( CLASSTREE1_PolarHandleBase, CLASSTREE2_Coords2D );
451 CALLIMPL( CLASSTREE1_PolarHandleBase, CLASSTREE2_PathPoint2D );
452 CALLIMPL( CLASSTREE1_PolarHandleBase, CLASSTREE2_PathSlider2D );
453 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Coords3D );
454 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_PathPoint3D );
455 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_PathSlider3D );
456 private:
457 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
458 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
459 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
460 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const;
461 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
462 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
463 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const;
464 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::PathSlider2D ) arg2, const Kernel::PassedDyn & dyn ) const;
465 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PolarHandleBase ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
466 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PolarHandleBase ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const;
467 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PolarHandleBase ) arg1, DUMMYANDREF( const Lang::PathSlider2D ) arg2, const Kernel::PassedDyn & dyn ) const;
468 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::CornerCoords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
469 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::CornerCoords2D ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const;
470 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
471 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::PathPoint3D ) arg2, const Kernel::PassedDyn & dyn ) const;
472 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::PathSlider3D ) arg2, const Kernel::PassedDyn & dyn ) const;
475 class GreaterExpr : public BinaryInfixExpr
477 public:
478 GreaterExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
479 CALLIMPL( CLASSTREE1_Symbol, CLASSTREE2_Symbol );
480 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
481 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
482 CALLIMPL( CLASSTREE1_Character, CLASSTREE2_Character );
483 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
484 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_Coords2D );
485 CALLIMPL( CLASSTREE1_PathPoint2D, CLASSTREE2_Coords2D );
486 CALLIMPL( CLASSTREE1_PathSlider2D, CLASSTREE2_Coords2D );
487 CALLIMPL( CLASSTREE1_Coords2D, CLASSTREE2_PolarHandleBase );
488 CALLIMPL( CLASSTREE1_PathPoint2D, CLASSTREE2_PolarHandleBase );
489 CALLIMPL( CLASSTREE1_PathSlider2D, CLASSTREE2_PolarHandleBase );
490 CALLIMPL( CLASSTREE1_Coords3D, CLASSTREE2_Coords3D );
491 CALLIMPL( CLASSTREE1_PathPoint3D, CLASSTREE2_Coords3D );
492 CALLIMPL( CLASSTREE1_PathSlider3D, CLASSTREE2_Coords3D );
493 private:
494 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
495 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
496 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
497 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const;
498 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
499 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
500 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
501 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
502 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::PolarHandleBase ) arg2, const Kernel::PassedDyn & dyn ) const;
503 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::PolarHandleBase ) arg2, const Kernel::PassedDyn & dyn ) const;
504 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider2D ) arg1, DUMMYANDREF( const Lang::PolarHandleBase ) arg2, const Kernel::PassedDyn & dyn ) const;
505 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::CornerCoords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
506 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::CornerCoords2D ) arg2, const Kernel::PassedDyn & dyn ) const;
507 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
508 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathPoint3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
509 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::PathSlider3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const;
512 class EqualExpr : public BinaryInfixExpr
514 public:
515 EqualExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
516 CALLIMPL( CLASSTREE1_Symbol, CLASSTREE2_Symbol );
517 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
518 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
519 CALLIMPL( CLASSTREE1_Character, CLASSTREE2_Character );
520 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
521 CALLIMPL( CLASSTREE1_Class, CLASSTREE2_Class );
522 CALLIMPL( CLASSTREE1_Function, CLASSTREE2_Function );
523 private:
524 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
525 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
526 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
527 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const;
528 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
529 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Class ) arg1, DUMMYANDREF( const Lang::Class ) arg2, const Kernel::PassedDyn & dyn ) const;
530 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Function ) arg1, DUMMYANDREF( const Lang::Function ) arg2, const Kernel::PassedDyn & dyn ) const;
533 class NotEqualExpr : public BinaryInfixExpr
535 public:
536 NotEqualExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
537 CALLIMPL( CLASSTREE1_Symbol, CLASSTREE2_Symbol );
538 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
539 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
540 CALLIMPL( CLASSTREE1_Character, CLASSTREE2_Character );
541 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
542 CALLIMPL( CLASSTREE1_Class, CLASSTREE2_Class );
543 CALLIMPL( CLASSTREE1_Function, CLASSTREE2_Function );
544 private:
545 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
546 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
547 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
548 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const;
549 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
550 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Class ) arg1, DUMMYANDREF( const Lang::Class ) arg2, const Kernel::PassedDyn & dyn ) const;
551 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Function ) arg1, DUMMYANDREF( const Lang::Function ) arg2, const Kernel::PassedDyn & dyn ) const;
554 class LessEqualExpr : public BinaryInfixExpr
556 public:
557 LessEqualExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
558 CALLIMPL( CLASSTREE1_Symbol, CLASSTREE2_Symbol );
559 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
560 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
561 CALLIMPL( CLASSTREE1_Character, CLASSTREE2_Character );
562 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
563 private:
564 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
565 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
566 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
567 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const;
568 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
571 class GreaterEqualExpr : public BinaryInfixExpr
573 public:
574 GreaterEqualExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
575 CALLIMPL( CLASSTREE1_Symbol, CLASSTREE2_Symbol );
576 CALLIMPL( CLASSTREE1_Float, CLASSTREE2_Float );
577 CALLIMPL( CLASSTREE1_Integer, CLASSTREE2_Integer );
578 CALLIMPL( CLASSTREE1_Character, CLASSTREE2_Character );
579 CALLIMPL( CLASSTREE1_Length, CLASSTREE2_Length );
580 private:
581 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const;
582 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const;
583 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const;
584 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const;
585 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const;
588 class AndExpr : public BinaryInfixExpr
590 public:
591 AndExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
592 CALLIMPL( CLASSTREE1_Boolean, CLASSTREE2_Boolean );
593 private:
594 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Boolean ) arg1, DUMMYANDREF( const Lang::Boolean ) arg2, const Kernel::PassedDyn & dyn ) const;
597 class OrExpr : public BinaryInfixExpr
599 public:
600 OrExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
601 CALLIMPL( CLASSTREE1_Boolean, CLASSTREE2_Boolean );
602 private:
603 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Boolean ) arg1, DUMMYANDREF( const Lang::Boolean ) arg2, const Kernel::PassedDyn & dyn ) const;
606 class XorExpr : public BinaryInfixExpr
608 public:
609 XorExpr( const Ast::SourceLocation & _opLoc, Ast::Expression * _expr1, Ast::Expression * _expr2 ) : BinaryInfixExpr( _opLoc, _expr1, _expr2 ) { }
610 CALLIMPL( CLASSTREE1_Boolean, CLASSTREE2_Boolean );
611 private:
612 RefCountPtr< const Lang::Value > impl( DUMMYANDREF( const Lang::Boolean ) arg1, DUMMYANDREF( const Lang::Boolean ) arg2, const Kernel::PassedDyn & dyn ) const;