14#include "arcane/utils/ArcanePrecomp.h"
16#include "arcane/utils/Array.h"
17#include "arcane/utils/String.h"
18#include "arcane/utils/Real2.h"
19#include "arcane/utils/Real3.h"
20#include "arcane/utils/Real2x2.h"
21#include "arcane/utils/Real3x3.h"
23#include "arcane/datatype/ArrayVariant.h"
24#include "arcane/datatype/BadVariantTypeException.h"
35ArrayVariant(eType type,Integer asize)
43 m_allocated_array = v;
50 m_allocated_array = v;
57 m_allocated_array = v;
64 m_allocated_array = v;
71 m_allocated_array = v;
78 m_allocated_array = v;
85 m_allocated_array = v;
92 m_allocated_array = v;
99 m_allocated_array = v;
100 m_real3x3_value = *v;
104 throw BadVariantTypeException(
"ArrayVariant::ArrayVariant(eType,Integer)",type);
112ArrayVariant(ArrayView<Real> data)
113: VariantBase(1,TReal)
115, m_allocated_array(0)
123ArrayVariant(ArrayView<Real2> data)
124: VariantBase(1,TReal2)
126, m_allocated_array(0)
134ArrayVariant(ArrayView<Real3> data)
135: VariantBase(1, TReal3)
137, m_allocated_array(0)
145ArrayVariant(ArrayView<Real2x2> data)
146: VariantBase(1,TReal2x2)
147, m_real2x2_value(data)
148, m_allocated_array(0)
156ArrayVariant(ArrayView<Real3x3> data)
157: VariantBase(1,TReal3x3)
158, m_real3x3_value(data)
159, m_allocated_array(0)
167ArrayVariant(ArrayView<Int32> data)
168: VariantBase(1,TInt32)
170, m_allocated_array(0)
178ArrayVariant(ArrayView<Int64> data)
179: VariantBase(1,TInt64)
181, m_allocated_array(0)
189ArrayVariant(ArrayView<bool> data)
190: VariantBase(1,TBool)
192, m_allocated_array(0)
200ArrayVariant(ArrayView<String> data)
201: VariantBase(1,TString)
202, m_string_value(data)
203, m_allocated_array(0)
222 if (!m_allocated_array)
225 case TReal:
delete reinterpret_cast<RealArray*
>(m_allocated_array);
break;
226 case TReal2:
delete reinterpret_cast<Real2Array*
>(m_allocated_array);
break;
227 case TReal3:
delete reinterpret_cast<Real3Array*
>(m_allocated_array);
break;
228 case TReal2x2:
delete reinterpret_cast<Real2x2Array*
>(m_allocated_array);
break;
229 case TReal3x3:
delete reinterpret_cast<Real3x3Array*
>(m_allocated_array);
break;
230 case TInt64:
delete reinterpret_cast<Int64Array*
>(m_allocated_array);
break;
231 case TInt32:
delete reinterpret_cast<Int32Array*
>(m_allocated_array);
break;
232 case TBool:
delete reinterpret_cast<BoolArray*
>(m_allocated_array);
break;
233 case TString:
delete reinterpret_cast<StringArray*
>(m_allocated_array);
break;
247 return m_real_value.size();
249 return m_real2_value.size();
251 return m_real3_value.size();
253 return m_real2x2_value.size();
255 return m_real3x3_value.size();
257 return m_bool_value.size();
259 return m_string_value.size();
261 return m_int32_value.size();
263 return m_int64_value.size();
273extern "C++" ARCANE_DATATYPE_EXPORT std::ostream&
274operator<<(std::ostream& s,
const ArrayVariant& x)
276 s <<
"ArrayVariant [t="
283 case VariantBase::TReal:
284 s << x.asReal().data();
286 size = x.asReal().size();
287 for (Integer i=0 ; i<size ; ++i)
288 s << x.asReal()[i] <<
" ";
290 case VariantBase::TReal2:
291 s << x.asReal2().data();
293 size = x.asReal2().size();
294 for (Integer i=0 ; i<size ; ++i)
295 s << x.asReal2()[i] <<
" ";
297 case VariantBase::TReal3:
298 s << x.asReal3().data();
300 size = x.asReal3().size();
301 for (Integer i=0 ; i<size ; ++i)
302 s << x.asReal3()[i] <<
" ";
304 case VariantBase::TReal2x2:
305 s << x.asReal2().data();
307 size = x.asReal2().size();
308 for (Integer i=0 ; i<size ; ++i)
309 s << x.asReal2x2()[i] <<
" ";
311 case VariantBase::TReal3x3:
312 s << x.asReal3x3().data();
314 size = x.asReal3x3().size();
315 for (Integer i=0 ; i<size ; ++i)
316 s << x.asReal3x3()[i] <<
" ";
318 case VariantBase::TInt64:
319 s << x.asInt64().data();
321 size = x.asInt64().size();
322 for(Integer i=0 ; i<size ; ++i)
323 s << x.asInt64()[i] <<
" ";
325 case VariantBase::TInt32:
326 s << x.asInteger().data();
328 size = x.asInteger().size();
329 for (Integer i=0 ; i<size ; ++i)
330 s << x.asInteger()[i] <<
" ";
332 case VariantBase::TBool:
333 s << x.asBool().data();
335 size = x.asBool().size();
336 for (Integer i=0 ; i<size ; ++i)
337 s << x.asBool()[i] <<
" ";
339 case VariantBase::TString:
340 s << x.asString().data();
342 size = x.asString().size();
343 for (Integer i=0 ; i<size ; ++i)
344 s << x.asString()[i] <<
" ";
361 return m_int64_value;
363 return m_int32_value;
374 return m_int64_value;
376 return m_int32_value;
std::ostream & operator<<(std::ostream &o, eExecutionPolicy exec_policy)
Affiche le nom de la politique d'exécution.
Array< Real2 > Real2Array
Tableau dynamique à une dimension de vecteurs de rang 2.
UniqueArray< Real2x2 > Real2x2UniqueArray
Tableau dynamique à une dimension de tenseurs de rang 2.
Array< Int64 > Int64Array
Tableau dynamique à une dimension d'entiers 64 bits.
UniqueArray< Real3x3 > Real3x3UniqueArray
Tableau dynamique à une dimension de tenseurs de rang 3.
UniqueArray< Int64 > Int64UniqueArray
Tableau dynamique à une dimension d'entiers 64 bits.
Array< String > StringArray
Tableau dynamique à une dimension de chaînes de caractères.
ArrayView< Integer > IntegerArrayView
Equivalent C d'un tableau à une dimension d'entiers.
Array< bool > BoolArray
Tableau dynamique à une dimension de booléens.
Array< Real3x3 > Real3x3Array
Tableau dynamique à une dimension de tenseurs de rang 3.
UniqueArray< Real3 > Real3UniqueArray
Tableau dynamique à une dimension de vecteurs de rang 3.
UniqueArray< bool > BoolUniqueArray
Tableau dynamique à une dimension de booléens.
UniqueArray< Int32 > Int32UniqueArray
Tableau dynamique à une dimension d'entiers 32 bits.
UniqueArray< Real > RealUniqueArray
Tableau dynamique à une dimension de réels.
Array< Real2x2 > Real2x2Array
Tableau dynamique à une dimension de tenseurs de rang 2.
Array< Int32 > Int32Array
Tableau dynamique à une dimension d'entiers 32 bits.
Array< Real > RealArray
Tableau dynamique à une dimension de réels.
UniqueArray< String > StringUniqueArray
Tableau dynamique à une dimension de chaînes de caractères.
UniqueArray< Real2 > Real2UniqueArray
Tableau dynamique à une dimension de vecteurs de rang 2.
ConstArrayView< Integer > IntegerConstArrayView
Equivalent C d'un tableau à une dimension d'entiers.
Array< Real3 > Real3Array
Tableau dynamique à une dimension de vecteurs de rang 3.
Int32 Integer
Type représentant un entier.