12#ifndef ARCANE_EXPR_WHEREEXPRESSIONIMPL_H
13#define ARCANE_EXPR_WHEREEXPRESSIONIMPL_H
18#include "arcane/expr/BadOperandException.h"
19#include "arcane/expr/ExpressionImpl.h"
20#include "arcane/expr/ExpressionResult.h"
38class ARCANE_EXPR_EXPORT WhereExpressionImpl
39:
public ExpressionImpl
89 if (test->type() != ArrayVariant::TBool)
93 if (size != test->size())
96 if (iftrue->type() || iffalse->type())
100 res->allocate(iftrue->type());
104 test->value(test_val);
106 res->
data()->value(res_val);
108 iftrue->value(iftrue_val);
110 iffalse->value(iffalse_val);
114 for (
Integer i=0 ; i<size ; ++i)
115 test_val[i] ? res_val[i] = iftrue_val[true_i++]
116 : res_val[i] = iffalse_val[false_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.
Référence à une expression.
Interface pour les différentes implémentations d'une expression.
virtual Integer vectorSize() const
Nombre d'éléments du vecteur.
Expression m_iffalse
Expression évaluée lorsque le test est negatif.
Expression m_iftrue
Expression évaluée lorsque le test est positif.
Expression m_test
Expression de test.
Operateur generique pour les expressions conditionnnelle.
Int32 Integer
Type représentant un entier.
ConstArrayView< Integer > IntegerConstArrayView
Equivalent C d'un tableau à une dimension d'entiers.