Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
ArrayVariant.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* Polymorphic base type for mono-dimensional arrays (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
45class ARCANE_DATATYPE_EXPORT ArrayVariant
46: public VariantBase
47{
48 public:
49
50 ArrayVariant(eType type, Integer size);
51 ArrayVariant(ArrayView<Real> data);
52 ArrayVariant(ArrayView<Real2> data);
53 ArrayVariant(ArrayView<Real3> data);
54 ArrayVariant(ArrayView<Real2x2> data);
55 ArrayVariant(ArrayView<Real3x3> data);
56 ArrayVariant(ArrayView<Int32> data);
57 ArrayVariant(ArrayView<Int64> data);
58 ArrayVariant(ArrayView<bool> data);
59 ArrayVariant(ArrayView<String> data);
60 ~ArrayVariant();
61
62 public:
63
64 Integer size() const;
65
66 void value(ArrayView<Real>& v) const { v = m_real_value; }
67 void value(ArrayView<Real2>& v) const { v = m_real2_value; }
68 void value(ArrayView<Real3>& v) const { v = m_real3_value; }
69 void value(ArrayView<Real2x2>& v) const { v = m_real2x2_value; }
70 void value(ArrayView<Real3x3>& v) const { v = m_real3x3_value; }
71 void value(ArrayView<Int32>& v) const { v = m_int32_value; }
72 void value(ArrayView<Int64>& v) const { v = m_int64_value; }
73 void value(ArrayView<bool>& v) const { v = m_bool_value; }
74 void value(ArrayView<String>& v) const { v = m_string_value; }
75
76 ArrayView<Real> asReal() { return m_real_value; }
77 ArrayView<Real2> asReal2() { return m_real2_value; }
78 ArrayView<Real3> asReal3() { return m_real3_value; }
79 ArrayView<Real2x2> asReal2x2() { return m_real2x2_value; }
80 ArrayView<Real3x3> asReal3x3() { return m_real3x3_value; }
81 ArrayView<Integer> asInteger();
82 ArrayView<Int32> asInt32() { return m_int32_value; }
83 ArrayView<bool> asBool() { return m_bool_value; }
84 ArrayView<String> asString() { return m_string_value; }
85
86 ConstArrayView<Real> asReal() const { return m_real_value; }
87 ConstArrayView<Real2> asReal2() const { return m_real2_value; }
88 ConstArrayView<Real3> asReal3() const { return m_real3_value; }
89 ConstArrayView<Real2x2> asReal2x2() const { return m_real2x2_value; }
90 ConstArrayView<Real3x3> asReal3x3() const { return m_real3x3_value; }
91 ConstArrayView<Integer> asInteger() const;
92 ConstArrayView<Int32> asInt32() const { return m_int32_value; }
93 ConstArrayView<Int64> asInt64() const { return m_int64_value; }
94 ConstArrayView<bool> asBool() const { return m_bool_value; }
95 ConstArrayView<String> asString() const { return m_string_value; }
96
97 public:
98 private:
99
110
111 void _destroy();
112};
113
114ARCANE_DATATYPE_EXPORT std::ostream&
115operator<<(std::ostream& s, const ArrayVariant& x);
116
117/*---------------------------------------------------------------------------*/
118/*---------------------------------------------------------------------------*/
119
120} // namespace Arcane
121
122/*---------------------------------------------------------------------------*/
123/*---------------------------------------------------------------------------*/
124
125#endif
Polymorphic base type for arrays (dimension 1).
ArrayView< bool > m_bool_value
Value of array type of booleans.
ArrayView< Real2 > m_real2_value
Value of array type of Real2.
ArrayView< Int64 > m_int64_value
Value of array type of 64-bit integers.
ArrayView< Real2x2 > m_real2x2_value
Value of array type of Real2x2.
ArrayView< Int32 > m_int32_value
Value of array type of 32-bit integers.
ArrayView< String > m_string_value
Value of array type of strings.
ArrayView< Real3 > m_real3_value
Value of array type of Real3.
ArrayView< Real > m_real_value
Value of array type of reals.
void * m_allocated_array
Non-null if array allocated by the variant.
ArrayView< Real3x3 > m_real3x3_value
Value of array type of Real3x3.
Modifiable view of an array of type T.
Constant view of an array of type T.
Class managing a 2-dimensional real vector.
Definition Real2.h:122
Class managing a 2x2 matrix of reals.
Definition Real2x2.h:55
Class managing a 3-dimensional real vector.
Definition Real3.h:132
Class managing a 3x3 real matrix.
Definition Real3x3.h:67
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Int32 Integer
Type representing an integer.