Update suitable examples and tests to use blank mode
[shapes.git] / source / astexpr_relational.cc
blob68d1235e6cd7b1f5e91066e201a60bc311d509db
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 #include <cmath>
21 #include "astexprs.h"
22 #include "shapesexceptions.h"
23 #include "lighttypes.h"
25 using namespace Shapes;
26 using namespace std;
29 RefCountPtr< const Lang::Value >
30 Ast::LessExpr::impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const
32 return RefCountPtr< const Lang::Value >( new Lang::Boolean( *arg1 < *arg2 ) );
35 RefCountPtr< const Lang::Value >
36 Ast::LessExpr::impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const
38 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ < arg2->val_ ) );
41 RefCountPtr< const Lang::Value >
42 Ast::LessExpr::impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const
44 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ < arg2->val_ ) );
47 RefCountPtr< const Lang::Value >
48 Ast::LessExpr::impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const
50 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ < arg2->val_ ) );
53 RefCountPtr< const Lang::Value >
54 Ast::LessExpr::impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const
56 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->get( ) < arg2->get( ) ) );
59 RefCountPtr< const Lang::Value >
60 Ast::LessExpr::impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const
62 Lang::PathPoint2D * res = new Lang::PathPoint2D( arg2 );
63 res->rear_ = arg1;
64 return Kernel::ValueRef( res );
67 RefCountPtr< const Lang::Value >
68 Ast::LessExpr::impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const
70 Lang::PathPoint2D * res = new Lang::PathPoint2D( *arg2 );
71 if( res->rear_.getPtr( ) != 0 )
73 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Pathpoint already has a rear handle" ) );
75 res->rear_ = arg1;
76 return Kernel::ValueRef( res );
79 RefCountPtr< const Lang::Value >
80 Ast::LessExpr::impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::PathSlider2D ) arg2, const Kernel::PassedDyn & dyn ) const
82 if( arg2->getRear( ) != NullPtr< const Lang::Value >( ) )
84 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Slider already has a rear handle" ) );
86 return Kernel::ValueRef( new Lang::PathSlider2D_rear( *arg2, arg1 ) );
89 RefCountPtr< const Lang::Value >
90 Ast::LessExpr::impl( DUMMYANDREF( const Lang::PolarHandleBase ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const
92 Lang::PathPoint2D * res = new Lang::PathPoint2D( arg2 );
93 res->rear_ = arg1;
94 return Kernel::ValueRef( res );
97 RefCountPtr< const Lang::Value >
98 Ast::LessExpr::impl( DUMMYANDREF( const Lang::PolarHandleBase ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const
100 Lang::PathPoint2D * res = new Lang::PathPoint2D( *arg2 );
101 if( res->rear_.getPtr( ) != 0 )
103 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Pathpoint already has a rear handle" ) );
105 res->rear_ = arg1;
106 return Kernel::ValueRef( res );
109 RefCountPtr< const Lang::Value >
110 Ast::LessExpr::impl( DUMMYANDREF( const Lang::PolarHandleBase ) arg1, DUMMYANDREF( const Lang::PathSlider2D ) arg2, const Kernel::PassedDyn & dyn ) const
112 if( arg2->getRear( ) != NullPtr< const Lang::Value >( ) )
114 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Slider already has a rear handle" ) );
116 return Kernel::ValueRef( new Lang::PathSlider2D_rear( *arg2, arg1 ) );
119 RefCountPtr< const Lang::Value >
120 Ast::LessExpr::impl( DUMMYANDREF( const Lang::CornerCoords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const
122 throw Exceptions::MiscellaneousRequirement( strrefdup( "A handle mustn't have a default angle." ) );
125 RefCountPtr< const Lang::Value >
126 Ast::LessExpr::impl( DUMMYANDREF( const Lang::CornerCoords2D ) arg1, DUMMYANDREF( const Lang::PathPoint2D ) arg2, const Kernel::PassedDyn & dyn ) const
128 throw Exceptions::MiscellaneousRequirement( strrefdup( "A handle mustn't have a default angle." ) );
131 RefCountPtr< const Lang::Value >
132 Ast::LessExpr::impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const
134 Lang::PathPoint3D * res = new Lang::PathPoint3D( arg2 );
135 res->rear_ = arg1;
136 return Kernel::ValueRef( res );
139 RefCountPtr< const Lang::Value >
140 Ast::LessExpr::impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::PathPoint3D ) arg2, const Kernel::PassedDyn & dyn ) const
142 Lang::PathPoint3D * res = new Lang::PathPoint3D( *arg2 );
143 if( res->rear_.getPtr( ) != 0 )
145 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Pathpoint already has a rear handle" ) );
147 res->rear_ = arg1;
148 return Kernel::ValueRef( res );
151 RefCountPtr< const Lang::Value >
152 Ast::LessExpr::impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::PathSlider3D ) arg2, const Kernel::PassedDyn & dyn ) const
154 if( arg2->getRear( ) != NullPtr< const Lang::Value >( ) )
156 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Slider already has a rear handle" ) );
158 return Kernel::ValueRef( new Lang::PathSlider3D_rear( *arg2, arg1 ) );
162 RefCountPtr< const Lang::Value >
163 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const
165 return RefCountPtr< const Lang::Value >( new Lang::Boolean( *arg1 > *arg2 ) );
168 RefCountPtr< const Lang::Value >
169 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const
171 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ > arg2->val_ ) );
174 RefCountPtr< const Lang::Value >
175 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const
177 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ > arg2->val_ ) );
180 RefCountPtr< const Lang::Value >
181 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const
183 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ > arg2->val_ ) );
186 RefCountPtr< const Lang::Value >
187 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const
189 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->get( ) > arg2->get( ) ) );
192 RefCountPtr< const Lang::Value >
193 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const
195 Lang::PathPoint2D * res = new Lang::PathPoint2D( arg1 );
196 res->front_ = arg2;
197 return Kernel::ValueRef( res );
200 RefCountPtr< const Lang::Value >
201 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const
203 Lang::PathPoint2D * res = new Lang::PathPoint2D( *arg1 );
204 if( res->front_.getPtr( ) != 0 )
206 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Pathpoint already has a front handle" ) );
208 res->front_ = arg2;
209 return Kernel::ValueRef( res );
212 RefCountPtr< const Lang::Value >
213 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::PathSlider2D ) arg1, DUMMYANDREF( const Lang::Coords2D ) arg2, const Kernel::PassedDyn & dyn ) const
215 if( arg1->getFront( ) != NullPtr< const Lang::Value >( ) )
217 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Slider already has a front handle" ) );
219 return Kernel::ValueRef( new Lang::PathSlider2D_front( *arg1, arg2 ) );
222 RefCountPtr< const Lang::Value >
223 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::PolarHandleBase ) arg2, const Kernel::PassedDyn & dyn ) const
225 Lang::PathPoint2D * res = new Lang::PathPoint2D( arg1 );
226 res->front_ = arg2;
227 return Kernel::ValueRef( res );
230 RefCountPtr< const Lang::Value >
231 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::PolarHandleBase ) arg2, const Kernel::PassedDyn & dyn ) const
233 Lang::PathPoint2D * res = new Lang::PathPoint2D( *arg1 );
234 if( res->front_.getPtr( ) != 0 )
236 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Pathpoint already has a front handle" ) );
238 res->front_ = arg2;
239 return Kernel::ValueRef( res );
242 RefCountPtr< const Lang::Value >
243 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::PathSlider2D ) arg1, DUMMYANDREF( const Lang::PolarHandleBase ) arg2, const Kernel::PassedDyn & dyn ) const
245 if( arg1->getFront( ) != NullPtr< const Lang::Value >( ) )
247 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Slider already has a front handle" ) );
249 return Kernel::ValueRef( new Lang::PathSlider2D_front( *arg1, arg2 ) );
252 RefCountPtr< const Lang::Value >
253 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::Coords2D ) arg1, DUMMYANDREF( const Lang::CornerCoords2D ) arg2, const Kernel::PassedDyn & dyn ) const
255 throw Exceptions::MiscellaneousRequirement( strrefdup( "A handle mustn't have a default angle." ) );
258 RefCountPtr< const Lang::Value >
259 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::PathPoint2D ) arg1, DUMMYANDREF( const Lang::CornerCoords2D ) arg2, const Kernel::PassedDyn & dyn ) const
261 throw Exceptions::MiscellaneousRequirement( strrefdup( "A handle mustn't have a default angle." ) );
264 RefCountPtr< const Lang::Value >
265 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::Coords3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const
267 Lang::PathPoint3D * res = new Lang::PathPoint3D( arg1 );
268 res->front_ = arg2;
269 return Kernel::ValueRef( res );
272 RefCountPtr< const Lang::Value >
273 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::PathPoint3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const
275 Lang::PathPoint3D * res = new Lang::PathPoint3D( *arg1 );
276 if( res->front_.getPtr( ) != 0 )
278 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Pathpoint already has a front handle" ) );
280 res->front_ = arg2;
281 return Kernel::ValueRef( res );
284 RefCountPtr< const Lang::Value >
285 Ast::GreaterExpr::impl( DUMMYANDREF( const Lang::PathSlider3D ) arg1, DUMMYANDREF( const Lang::Coords3D ) arg2, const Kernel::PassedDyn & dyn ) const
287 if( arg1->getFront( ) != NullPtr< const Lang::Value >( ) )
289 throw Exceptions::OutOfRange( this->loc( ), strrefdup( "Slider already has a front handle" ) );
291 return Kernel::ValueRef( new Lang::PathSlider3D_front( *arg1, arg2 ) );
295 RefCountPtr< const Lang::Value >
296 Ast::EqualExpr::impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const
298 return RefCountPtr< const Lang::Value >( new Lang::Boolean( *arg1 == *arg2 ) );
301 RefCountPtr< const Lang::Value >
302 Ast::EqualExpr::impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const
304 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ == arg2->val_ ) );
307 RefCountPtr< const Lang::Value >
308 Ast::EqualExpr::impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const
310 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ == arg2->val_ ) );
313 RefCountPtr< const Lang::Value >
314 Ast::EqualExpr::impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const
316 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ == arg2->val_ ) );
319 RefCountPtr< const Lang::Value >
320 Ast::EqualExpr::impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const
322 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->get( ) == arg2->get( ) ) );
325 RefCountPtr< const Lang::Value >
326 Ast::EqualExpr::impl( DUMMYANDREF( const Lang::Class ) arg1, DUMMYANDREF( const Lang::Class ) arg2, const Kernel::PassedDyn & dyn ) const
328 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1 == arg2 ) );
331 RefCountPtr< const Lang::Value >
332 Ast::EqualExpr::impl( DUMMYANDREF( const Lang::Function ) arg1, DUMMYANDREF( const Lang::Function ) arg2, const Kernel::PassedDyn & dyn ) const
334 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1 == arg2 ) ); /* Compare pointers (!). */
338 RefCountPtr< const Lang::Value >
339 Ast::NotEqualExpr::impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const
341 return RefCountPtr< const Lang::Value >( new Lang::Boolean( *arg1 != *arg2 ) );
344 RefCountPtr< const Lang::Value >
345 Ast::NotEqualExpr::impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const
347 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ != arg2->val_ ) );
350 RefCountPtr< const Lang::Value >
351 Ast::NotEqualExpr::impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const
353 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ != arg2->val_ ) );
356 RefCountPtr< const Lang::Value >
357 Ast::NotEqualExpr::impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const
359 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ != arg2->val_ ) );
362 RefCountPtr< const Lang::Value >
363 Ast::NotEqualExpr::impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const
365 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->get( ) != arg2->get( ) ) );
368 RefCountPtr< const Lang::Value >
369 Ast::NotEqualExpr::impl( DUMMYANDREF( const Lang::Class ) arg1, DUMMYANDREF( const Lang::Class ) arg2, const Kernel::PassedDyn & dyn ) const
371 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1 != arg2 ) );
374 RefCountPtr< const Lang::Value >
375 Ast::NotEqualExpr::impl( DUMMYANDREF( const Lang::Function ) arg1, DUMMYANDREF( const Lang::Function ) arg2, const Kernel::PassedDyn & dyn ) const
377 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1 != arg2 ) ); /* Compare pointers (!). */
381 RefCountPtr< const Lang::Value >
382 Ast::LessEqualExpr::impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const
384 return RefCountPtr< const Lang::Value >( new Lang::Boolean( *arg1 <= *arg2 ) );
387 RefCountPtr< const Lang::Value >
388 Ast::LessEqualExpr::impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const
390 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ <= arg2->val_ ) );
393 RefCountPtr< const Lang::Value >
394 Ast::LessEqualExpr::impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const
396 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ <= arg2->val_ ) );
399 RefCountPtr< const Lang::Value >
400 Ast::LessEqualExpr::impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const
402 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ <= arg2->val_ ) );
405 RefCountPtr< const Lang::Value >
406 Ast::LessEqualExpr::impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const
408 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->get( ) <= arg2->get( ) ) );
412 RefCountPtr< const Lang::Value >
413 Ast::GreaterEqualExpr::impl( DUMMYANDREF( const Lang::Symbol ) arg1, DUMMYANDREF( const Lang::Symbol ) arg2, const Kernel::PassedDyn & dyn ) const
415 return RefCountPtr< const Lang::Value >( new Lang::Boolean( *arg1 >= *arg2 ) );
418 RefCountPtr< const Lang::Value >
419 Ast::GreaterEqualExpr::impl( DUMMYANDREF( const Lang::Float ) arg1, DUMMYANDREF( const Lang::Float ) arg2, const Kernel::PassedDyn & dyn ) const
421 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ >= arg2->val_ ) );
424 RefCountPtr< const Lang::Value >
425 Ast::GreaterEqualExpr::impl( DUMMYANDREF( const Lang::Integer ) arg1, DUMMYANDREF( const Lang::Integer ) arg2, const Kernel::PassedDyn & dyn ) const
427 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ >= arg2->val_ ) );
430 RefCountPtr< const Lang::Value >
431 Ast::GreaterEqualExpr::impl( DUMMYANDREF( const Lang::Character ) arg1, DUMMYANDREF( const Lang::Character ) arg2, const Kernel::PassedDyn & dyn ) const
433 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ >= arg2->val_ ) );
436 RefCountPtr< const Lang::Value >
437 Ast::GreaterEqualExpr::impl( DUMMYANDREF( const Lang::Length ) arg1, DUMMYANDREF( const Lang::Length ) arg2, const Kernel::PassedDyn & dyn ) const
439 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->get( ) >= arg2->get( ) ) );
443 RefCountPtr< const Lang::Value >
444 Ast::AndExpr::impl( DUMMYANDREF( const Lang::Boolean ) arg1, DUMMYANDREF( const Lang::Boolean ) arg2, const Kernel::PassedDyn & dyn ) const
446 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ && arg2->val_ ) );
450 RefCountPtr< const Lang::Value >
451 Ast::OrExpr::impl( DUMMYANDREF( const Lang::Boolean ) arg1, DUMMYANDREF( const Lang::Boolean ) arg2, const Kernel::PassedDyn & dyn ) const
453 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ || arg2->val_ ) );
457 RefCountPtr< const Lang::Value >
458 Ast::XorExpr::impl( DUMMYANDREF( const Lang::Boolean ) arg1, DUMMYANDREF( const Lang::Boolean ) arg2, const Kernel::PassedDyn & dyn ) const
460 return RefCountPtr< const Lang::Value >( new Lang::Boolean( arg1->val_ ^ arg2->val_ ) );