15#include "arcane/utils/ArcanePrecomp.h"
17#include "arcane/utils/Array.h"
18#include "arcane/utils/Iostream.h"
20#include "arcane/expr/Expression.h"
21#include "arcane/expr/ExpressionImpl.h"
22#include "arcane/expr/ExpressionResult.h"
23#include "arcane/expr/BinaryExpressionImpl.h"
24#include "arcane/expr/UnaryExpressionImpl.h"
25#include "arcane/expr/LitteralExpressionImpl.h"
26#include "arcane/expr/WhereExpressionImpl.h"
46 m_expression->addRef();
54 m_expression->addRef();
59: m_expression(expr.m_expression)
62 m_expression->addRef();
72 m_expression->removeRef();
80 m_expression->removeRef();
86 m_expression->assign(expr.m_expression);
92 m_expression->assign(expr.m_expression, indices);
99 m_expression->assign(expr.m_expression);
105 m_expression->apply(result);
111 m_expression->dumpIf(test_expr.m_expression,exprs);
117 UniqueArray<Expression> exprs;
118 m_expression->dumpIf(test_expr.m_expression,exprs);
122operator->()
const {
return m_expression;}
130 return new UnaryExpressionImpl(m_expression,
131 UnaryExpressionImpl::UnarySubstract);
137 return new UnaryExpressionImpl(m_expression,
138 UnaryExpressionImpl::Inverse);
147 return new UnaryExpressionImpl(m_expression,
148 UnaryExpressionImpl::Acos);
154 return new UnaryExpressionImpl(m_expression,
155 UnaryExpressionImpl::Asin);
161 return new UnaryExpressionImpl(m_expression,
162 UnaryExpressionImpl::Atan);
168 return new UnaryExpressionImpl(m_expression,
169 UnaryExpressionImpl::Ceil);
175 return new UnaryExpressionImpl(m_expression,
176 UnaryExpressionImpl::Cos);
182 return new UnaryExpressionImpl(m_expression,
183 UnaryExpressionImpl::Cosh);
189 return new UnaryExpressionImpl(m_expression,
190 UnaryExpressionImpl::Exp);
196 return new UnaryExpressionImpl(m_expression,
197 UnaryExpressionImpl::Fabs);
203 return new UnaryExpressionImpl(m_expression,
204 UnaryExpressionImpl::Floor);
210 return new UnaryExpressionImpl(m_expression,
211 UnaryExpressionImpl::Log);
217 return new UnaryExpressionImpl(m_expression,
218 UnaryExpressionImpl::Log10);
224 return new UnaryExpressionImpl(m_expression,
225 UnaryExpressionImpl::Sin);
231 return new UnaryExpressionImpl(m_expression,
232 UnaryExpressionImpl::Sinh);
238 return new UnaryExpressionImpl(m_expression,
239 UnaryExpressionImpl::Sqrt);
245 return new UnaryExpressionImpl(m_expression,
246 UnaryExpressionImpl::Tan);
252 return new UnaryExpressionImpl(m_expression,
253 UnaryExpressionImpl::Tanh);
262 return new BinaryExpressionImpl(m_expression,ex1. m_expression,
263 BinaryExpressionImpl::Add);
269 return new BinaryExpressionImpl(m_expression,ex1. m_expression,
270 BinaryExpressionImpl::Substract);
276 return new BinaryExpressionImpl(m_expression,ex1. m_expression,
277 BinaryExpressionImpl::Multiply);
283 return new BinaryExpressionImpl(m_expression,ex1. m_expression,
284 BinaryExpressionImpl::Divide);
290 return new BinaryExpressionImpl(m_expression,ex1. m_expression,
291 BinaryExpressionImpl::Equal);
297 return new BinaryExpressionImpl(m_expression,ex1. m_expression,
298 BinaryExpressionImpl::LessThan);
304 return new BinaryExpressionImpl(m_expression, ex1.m_expression,
305 BinaryExpressionImpl::GreaterThan);
311 return new BinaryExpressionImpl(m_expression, ex1.m_expression,
312 BinaryExpressionImpl::LessOrEqualThan);
318 return new BinaryExpressionImpl(m_expression, ex1.m_expression,
319 BinaryExpressionImpl::GreaterOrEqualThan);
324 return new BinaryExpressionImpl(m_expression, ex1.m_expression,
325 BinaryExpressionImpl::And);
330 return new BinaryExpressionImpl(m_expression, ex1.m_expression,
331 BinaryExpressionImpl::Or);
340 return new BinaryExpressionImpl(m_expression,
342 BinaryExpressionImpl::Minimum);
348 return new BinaryExpressionImpl(m_expression,
350 BinaryExpressionImpl::Maximum);
356 return new BinaryExpressionImpl(m_expression,
358 BinaryExpressionImpl::Pow);
367 return new WhereExpressionImpl(m_expression,
378 return new LitteralExpressionImpl(v);
387 m_expression->setTrace(v);
390unsigned long Expression::
393 return m_expression->vectorSize();
Tableau d'items de types quelconques.
Type de base polymorphe d'une expression.
Référence à une expression.
Expression()
Constructeur par défaut.
Interface pour les différentes implémentations d'une expression.
Implementation d'une expression litterale contenant un scalaire.
double Real
Type représentant un réel.