Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
IDataVisitor.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/* IDataVisitor.h (C) 2000-2024 */
9/* */
10/* Interface of the visitor pattern for a data item. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_IDATAVISITOR_H
13#define ARCANE_CORE_IDATAVISITOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28class IData;
29class IScalarData;
30class IArrayData;
31class IArray2Data;
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
43class ARCANE_CORE_EXPORT IDataVisitor
44{
45 public:
46
47 virtual ~IDataVisitor() {}
48
49 public:
50
51 virtual void applyDataVisitor(IScalarData* data) = 0;
52 virtual void applyDataVisitor(IArrayData* data) = 0;
53 virtual void applyDataVisitor(IArray2Data* data) = 0;
54 // No longer used. Throw NotSupportedException
55 virtual void applyDataVisitor(IMultiArray2Data*);
56};
57
58/*---------------------------------------------------------------------------*/
59/*---------------------------------------------------------------------------*/
60
64class ARCANE_CORE_EXPORT IScalarDataVisitor
65{
66 public:
67
68 virtual ~IScalarDataVisitor() {}
69
70 public:
71
72 virtual void applyVisitor(IScalarDataT<Byte>* data) = 0;
73 virtual void applyVisitor(IScalarDataT<Real>* data) = 0;
74 virtual void applyVisitor(IScalarDataT<Int8>* data) = 0;
75 virtual void applyVisitor(IScalarDataT<Int16>* data) = 0;
76 virtual void applyVisitor(IScalarDataT<Int32>* data) = 0;
77 virtual void applyVisitor(IScalarDataT<Int64>* data) = 0;
78 virtual void applyVisitor(IScalarDataT<Real2>* data) = 0;
79 virtual void applyVisitor(IScalarDataT<Real3>* data) = 0;
80 virtual void applyVisitor(IScalarDataT<Real2x2>* data) = 0;
81 virtual void applyVisitor(IScalarDataT<Real3x3>* data) = 0;
82 virtual void applyVisitor(IScalarDataT<Float16>* data) = 0;
83 virtual void applyVisitor(IScalarDataT<BFloat16>* data) = 0;
84 virtual void applyVisitor(IScalarDataT<Float32>* data) = 0;
85 virtual void applyVisitor(IScalarDataT<String>* data) = 0;
86};
87
88/*---------------------------------------------------------------------------*/
89/*---------------------------------------------------------------------------*/
90
94class ARCANE_CORE_EXPORT IArrayDataVisitor
95{
96 public:
97
98 virtual ~IArrayDataVisitor() {}
99
100 public:
101
102 virtual void applyVisitor(IArrayDataT<Byte>* data) = 0;
103 virtual void applyVisitor(IArrayDataT<Real>* data) = 0;
104 virtual void applyVisitor(IArrayDataT<Int8>* data) = 0;
105 virtual void applyVisitor(IArrayDataT<Int16>* data) = 0;
106 virtual void applyVisitor(IArrayDataT<Int32>* data) = 0;
107 virtual void applyVisitor(IArrayDataT<Int64>* data) = 0;
108 virtual void applyVisitor(IArrayDataT<Real2>* data) = 0;
109 virtual void applyVisitor(IArrayDataT<Real3>* data) = 0;
110 virtual void applyVisitor(IArrayDataT<Real2x2>* data) = 0;
111 virtual void applyVisitor(IArrayDataT<Real3x3>* data) = 0;
112 virtual void applyVisitor(IArrayDataT<Float16>* data) = 0;
113 virtual void applyVisitor(IArrayDataT<BFloat16>* data) = 0;
114 virtual void applyVisitor(IArrayDataT<Float32>* data) = 0;
115 virtual void applyVisitor(IArrayDataT<String>* data) = 0;
116};
117
118/*---------------------------------------------------------------------------*/
119/*---------------------------------------------------------------------------*/
120
124class ARCANE_CORE_EXPORT IArray2DataVisitor
125{
126 public:
127
128 virtual ~IArray2DataVisitor() {}
129
130 public:
131
132 virtual void applyVisitor(IArray2DataT<Byte>* data) = 0;
133 virtual void applyVisitor(IArray2DataT<Real>* data) = 0;
134 virtual void applyVisitor(IArray2DataT<Int8>* data) = 0;
135 virtual void applyVisitor(IArray2DataT<Int16>* data) = 0;
136 virtual void applyVisitor(IArray2DataT<Int32>* data) = 0;
137 virtual void applyVisitor(IArray2DataT<Int64>* data) = 0;
138 virtual void applyVisitor(IArray2DataT<Real2>* data) = 0;
139 virtual void applyVisitor(IArray2DataT<Real3>* data) = 0;
140 virtual void applyVisitor(IArray2DataT<Real2x2>* data) = 0;
141 virtual void applyVisitor(IArray2DataT<Real3x3>* data) = 0;
142 virtual void applyVisitor(IArray2DataT<Float16>* data) = 0;
143 virtual void applyVisitor(IArray2DataT<BFloat16>* data) = 0;
144 virtual void applyVisitor(IArray2DataT<Float32>* data) = 0;
145};
146
147/*---------------------------------------------------------------------------*/
148/*---------------------------------------------------------------------------*/
149
155class ARCANE_CORE_EXPORT IMultiArray2DataVisitor
156{
157 public:
158
159 virtual ~IMultiArray2DataVisitor() {}
160
161 public:
162
163 virtual void applyVisitor(IMultiArray2DataT<Byte>*) {}
164 virtual void applyVisitor(IMultiArray2DataT<Real>*) {}
165 virtual void applyVisitor(IMultiArray2DataT<Int16>*) {}
166 virtual void applyVisitor(IMultiArray2DataT<Int32>*) {}
167 virtual void applyVisitor(IMultiArray2DataT<Int64>*) {}
168 virtual void applyVisitor(IMultiArray2DataT<Real2>*) {}
169 virtual void applyVisitor(IMultiArray2DataT<Real3>*) {}
170 virtual void applyVisitor(IMultiArray2DataT<Real2x2>*) {}
171 virtual void applyVisitor(IMultiArray2DataT<Real3x3>*) {}
172};
173
174/*---------------------------------------------------------------------------*/
175/*---------------------------------------------------------------------------*/
176
177} // namespace Arcane
178
179/*---------------------------------------------------------------------------*/
180/*---------------------------------------------------------------------------*/
181
182#endif
Declarations of Arcane's general types.
Interface of a bi-dimensional array data item of type T.
Definition IData.h:374
Interface of the visitor pattern for a 2D array data item.
Interface of a 2D array data item.
Definition IData.h:349
Interface of a 1D array data item of type T.
Definition IData.h:300
Interface of the visitor pattern for an array data item.
Interface of a 1D array data item.
Definition IData.h:282
Interface of the visitor pattern for a data item.
Interface of a data item.
Definition IData.h:34
Interface of a multi-sized 2D array data item of type T.
Definition IData.h:424
Interface of the visitor pattern for a variable-sized 2D array data item.
Interface of a multi 2D array data item.
Definition IData.h:361
Interface of a scalar data item of type T.
Definition IData.h:246
Interface of the visitor pattern for a scalar data item.
Interface of a scalar data item.
Definition IData.h:228
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --