Arcane  v3.16.8.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ArrayVariant.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ArrayVariant.h (C) 2000-2025 */
9/* */
10/* Type de base polymorphe pour les tableaux mono-dim (dimension 1). */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_DATATYPE_ARRAYVARIANT_H
13#define ARCANE_CORE_DATATYPE_ARRAYVARIANT_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/ArrayView.h"
18#include "arcane/utils/Iostream.h"
19
20#include "arcane/core/datatype/VariantBase.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31class Real2;
32class Real3;
33class Real2x2;
34class Real3x3;
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
44class ARCANE_DATATYPE_EXPORT ArrayVariant
45: public VariantBase
46{
47 public:
48 ArrayVariant(eType type,Integer size);
49 ArrayVariant(ArrayView<Real> data);
50 ArrayVariant(ArrayView<Real2> data);
51 ArrayVariant(ArrayView<Real3> data);
52 ArrayVariant(ArrayView<Real2x2> data);
53 ArrayVariant(ArrayView<Real3x3> data);
54 ArrayVariant(ArrayView<Int32> data);
55 ArrayVariant(ArrayView<Int64> data);
56 ArrayVariant(ArrayView<bool> data);
57 ArrayVariant(ArrayView<String> data);
58 ~ArrayVariant();
59
60 public:
61
62 Integer size() const;
63
64 void value(ArrayView<Real>& v) const { v = m_real_value; }
65 void value(ArrayView<Real2>& v) const { v = m_real2_value; }
66 void value(ArrayView<Real3>& v) const { v = m_real3_value; }
67 void value(ArrayView<Real2x2>& v) const { v = m_real2x2_value; }
68 void value(ArrayView<Real3x3>& v) const { v = m_real3x3_value; }
69 void value(ArrayView<Int32>& v) const { v = m_int32_value; }
70 void value(ArrayView<Int64>& v) const { v = m_int64_value; }
71 void value(ArrayView<bool>& v) const { v = m_bool_value; }
72 void value(ArrayView<String>& v) const { v = m_string_value; }
73
74 ArrayView<Real> asReal() { return m_real_value; }
75 ArrayView<Real2> asReal2() { return m_real2_value; }
76 ArrayView<Real3> asReal3() { return m_real3_value; }
77 ArrayView<Real2x2> asReal2x2() { return m_real2x2_value; }
78 ArrayView<Real3x3> asReal3x3() { return m_real3x3_value; }
79 ArrayView<Integer> asInteger();
80 ArrayView<Int32> asInt32() { return m_int32_value; }
81 ArrayView<bool> asBool() { return m_bool_value; }
82 ArrayView<String> asString() { return m_string_value; }
83
84 ConstArrayView<Real> asReal() const { return m_real_value; }
85 ConstArrayView<Real2> asReal2() const { return m_real2_value; }
86 ConstArrayView<Real3> asReal3() const { return m_real3_value; }
87 ConstArrayView<Real2x2> asReal2x2() const { return m_real2x2_value; }
88 ConstArrayView<Real3x3> asReal3x3() const { return m_real3x3_value; }
89 ConstArrayView<Integer> asInteger() const;
90 ConstArrayView<Int32> asInt32() const { return m_int32_value; }
91 ConstArrayView<Int64> asInt64() const { return m_int64_value; }
92 ConstArrayView<bool> asBool() const { return m_bool_value; }
93 ConstArrayView<String> asString() const { return m_string_value; }
94
95 public:
96
97
98 private:
109
110 void _destroy();
111};
112
113ARCANE_DATATYPE_EXPORT std::ostream&
114operator<<(std::ostream& s, const ArrayVariant& x);
115
116/*---------------------------------------------------------------------------*/
117/*---------------------------------------------------------------------------*/
118
119}
120
121/*---------------------------------------------------------------------------*/
122/*---------------------------------------------------------------------------*/
123
124#endif
Type de base polymorphe pour les tableaux (dimension 1).
ArrayView< bool > m_bool_value
Valeur de type tableau de booleens.
ArrayView< Real2 > m_real2_value
Valeur de type tableau de Real2.
ArrayView< Int64 > m_int64_value
Valeur de type tableau d'entiers 64 bits.
ArrayView< Real2x2 > m_real2x2_value
Valeur de type tableau de Real2x2.
ArrayView< Int32 > m_int32_value
Valeur de type tableau d'entiers 32 bits.
ArrayView< String > m_string_value
Valeur de type tableau de chaines.
ArrayView< Real3 > m_real3_value
Valeur de type tableau de Real3.
ArrayView< Real > m_real_value
Valeur de type tableau de reels.
void * m_allocated_array
Non nul si tableau alloué par le variant.
ArrayView< Real3x3 > m_real3x3_value
Valeur de type tableau de Real3x3.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Classe gérant un vecteur de réel de dimension 2.
Definition Real2.h:121
Classe gérant une matrice de réel de dimension 2x2.
Definition Real2x2.h:53
Classe gérant un vecteur de réel de dimension 3.
Definition Real3.h:132
Classe gérant une matrice de réel de dimension 3x3.
Definition Real3x3.h:66
std::ostream & operator<<(std::ostream &o, eExecutionPolicy exec_policy)
Affiche le nom de la politique d'exécution.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.