12#ifndef ARCANE_EXPR_UNARYEXPRESSIONIMPL_H
13#define ARCANE_EXPR_UNARYEXPRESSIONIMPL_H
17#include "arcane/utils/Convert.h"
18#include "arcane/expr/ExpressionImpl.h"
19#include "arcane/expr/Expression.h"
20#include "arcane/expr/ExpressionResult.h"
21#include "arcane/expr/BadOperandException.h"
39class ARCANE_EXPR_EXPORT UnaryExpressionImpl
40:
public ExpressionImpl
68 eOperationType operation);
75 String operationName()
const {
return operationName(m_operation); }
76 static String operationName(eOperationType type);
80 eOperationType m_operation;
111 if (size != a->size())
115 res->allocate(a->type());
119 res->
data()->value(res_val);
124 evaluate(res_val, a_val);
131#define DEFAULT_UNARY_OP(classname,expression) \
133class classname : public DefaultUnaryOperator<T> \
136 virtual void evaluate(ExpressionResult* res, ArrayVariant* a) \
137 { DefaultUnaryOperator<T>::evaluate(res,a); } \
139 virtual void evaluate(ArrayView<T> res, \
142 Integer size=res.size(); \
143 for (Integer i=0 ; i<size ; ++i) \
150DEFAULT_UNARY_OP(UnarySubstractOperator,res[i]=-a[i])
151DEFAULT_UNARY_OP(InverseOperator,res[i]=1/a[i])
Type de base polymorphe pour les tableaux (dimension 1).
Vue modifiable d'un tableau d'un type T.
constexpr const_pointer data() const noexcept
Pointeur sur le début de la vue.
Exception sur les opérandes des opérations des expressions.
Type de base polymorphe d'une expression.
Interface pour les différentes implémentations d'une expression.
Chaîne de caractères unicode.
virtual Integer vectorSize() const
Nombre d'éléments du vecteur.
Operateur unaire generique pour les expressions.
double toDouble(Real r)
Converti un Real en double.
Int32 Integer
Type représentant un entier.
ConstArrayView< Integer > IntegerConstArrayView
Equivalent C d'un tableau à une dimension d'entiers.