14#include "arcane/utils/ArcanePrecomp.h"
16#include "arcane/utils/OStringStream.h"
17#include "arcane/utils/NotImplementedException.h"
19#include "arcane/expr/ExpressionResult.h"
20#include "arcane/expr/BadExpressionException.h"
23#include "arcane/IVariableAccessor.h"
36ExpressionResult(IVariable* v)
38 if (v->dimension() != 1)
39 throw BadExpressionException
40 (
"ExpressionResult::ExpressionResult(IVariablePrv* v)",
41 "Only variables of dimension 1 are dealt with in the expressions.");
43 throw NotImplementedException(A_FUNCINFO,
"building expression result after removing IVariableAccessor");
51 m_data =
new ArrayVariant(values);
57 m_data =
new ArrayVariant(values);
63 m_data =
new ArrayVariant(values);
69 m_data =
new ArrayVariant(values);
75 m_data =
new ArrayVariant(values);
81 m_data =
new ArrayVariant(values);
87 m_data =
new ArrayVariant(values);
92 String s = String(
"Type de variable (") + type +
") non supporté.\n";
93 throw BadExpressionException(
"ExpressionResult::ExpressionResult(IVariable* v)",s);
98 m_own_indices.resize(size);
99 for(Integer i=0 ; i<size ; ++i)
101 m_indices = m_own_indices.view();
111ExpressionResult(ArrayVariant* data)
115 m_own_indices.resize(size);
116 for( Integer i=0 ; i<size ; ++i)
117 m_own_indices[i] = i;
118 m_indices = m_own_indices.view();
125ExpressionResult(IntegerConstArrayView indices)
143void ExpressionResult::
144allocate(VariantBase::eType type)
147 m_data =
new ArrayVariant(type, m_indices.size());
149 else if (type != m_data->type()){
151 s() <<
"The result type of the expression ("
152 << m_data->typeName() <<
") "
153 <<
"is not compatible with the type of the variable ("
154 << VariantBase::typeName(type) <<
").\n";
155 throw BadExpressionException(
"ExpressionResult::allocate", s.str());
163operator<<(std::ostream& s,
const ExpressionResult& x)
165 s <<
"ExpressionResult [";
167 s <<
"data=" << *x.m_data <<
", ";
169 Integer size = x.m_indices.size();
170 for( Integer i=0 ; i<size ; ++i )
171 s << x.m_indices[i] <<
" ";
std::ostream & operator<<(std::ostream &o, eExecutionPolicy exec_policy)
Affiche le nom de la politique d'exécution.
ArrayView< Real2x2 > Real2x2ArrayView
Equivalent C d'un tableau à une dimension de Real2x2.
ArrayView< Real3 > Real3ArrayView
Equivalent C d'un tableau à une dimension de Real3.
ArrayView< Real3x3 > Real3x3ArrayView
Equivalent C d'un tableau à une dimension de Real3x3.
ArrayView< Int64 > Int64ArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
ArrayView< Real2 > Real2ArrayView
Equivalent C d'un tableau à une dimension de Real2.
eDataType
Type d'une donnée.
@ DT_Real2x2
Donnée de type tenseur 3x3.
@ DT_Real3x3
Donnée de type tenseur 3x3.
@ DT_Int32
Donnée de type entier 32 bits.
@ DT_Real3
Donnée de type vecteur 3.
@ DT_Int64
Donnée de type entier 64 bits.
@ DT_Real2
Donnée de type vecteur 2.
@ DT_Real
Donnée de type réel.
ArrayView< Real > RealArrayView
Equivalent C d'un tableau à une dimension de réels.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Int32 Integer
Type représentant un entier.