Arcane  v3.16.8.0
Documentation utilisateur
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/*---------------------------------------------------------------------------*/
38/*!
39 * \internal
40 *
41 * \brief Type de base polymorphe pour les tableaux (dimension 1).
42 *
43 */
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:
99 ArrayView<Real> m_real_value; //!< Valeur de type tableau de reels
100 ArrayView<Real2> m_real2_value; //!< Valeur de type tableau de Real2
101 ArrayView<Real3> m_real3_value; //!< Valeur de type tableau de Real3
102 ArrayView<Real2x2> m_real2x2_value; //!< Valeur de type tableau de Real2x2
103 ArrayView<Real3x3> m_real3x3_value; //!< Valeur de type tableau de Real3x3
104 ArrayView<Int32> m_int32_value; //!< Valeur de type tableau d'entiers 32 bits
105 ArrayView<Int64> m_int64_value; //!< Valeur de type tableau d'entiers 64 bits
106 ArrayView<bool> m_bool_value; //!< Valeur de type tableau de booleens
107 ArrayView<String> m_string_value; //!< Valeur de type tableau de chaines
108 void* m_allocated_array; //!< Non nul si tableau alloué par le variant
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
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
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
std::ostream & operator<<(std::ostream &ostr, eItemKind item_kind)
Opérateur de sortie sur un flot.