Arcane  4.2.1.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 réel 2-dimensionnel.
Classe gérant une matrice 2x2 de réels.
Classe gérant un vecteur réel de 3 dimensions.
Classe gérant une matrice réelle 3x3.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Int32 Integer
Type représentant un entier.