Arcane  4.1.12.0
User documentation
Loading...
Searching...
No Matches
AbstractDataVisitor.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/* AbstractDataVisitor.h (C) 2000-2025 */
9/* */
10/* Abstract visitor for a data item. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ABSTRACTDATAVISITOR_H
13#define ARCANE_CORE_ABSTRACTDATAVISITOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/IDataVisitor.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28class IData;
29class IScalarData;
30class IArrayData;
31class IArray2Data;
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
36/*!
37 * \brief Abstract visitor for a scalar data item.
38 *
39 * This visitor raises an exception for every unimplemented applyVisitor() function.
40 */
41class ARCANE_CORE_EXPORT AbstractScalarDataVisitor
42: public IScalarDataVisitor
43{
44 public:
45
46 virtual void applyVisitor(IScalarDataT<Byte>* data);
47 virtual void applyVisitor(IScalarDataT<Real>* data);
48 virtual void applyVisitor(IScalarDataT<Int8>* data);
49 virtual void applyVisitor(IScalarDataT<Int16>* data);
50 virtual void applyVisitor(IScalarDataT<Int32>* data);
51 virtual void applyVisitor(IScalarDataT<Int64>* data);
52 virtual void applyVisitor(IScalarDataT<Real2>* data);
53 virtual void applyVisitor(IScalarDataT<Real3>* data);
54 virtual void applyVisitor(IScalarDataT<Real2x2>* data);
55 virtual void applyVisitor(IScalarDataT<Real3x3>* data);
56 virtual void applyVisitor(IScalarDataT<Float16>* data);
57 virtual void applyVisitor(IScalarDataT<BFloat16>* data);
58 virtual void applyVisitor(IScalarDataT<Float32>* data);
59 virtual void applyVisitor(IScalarDataT<String>* data);
60
61 protected:
62
63 void _throwException(eDataType dt);
64};
65
66/*---------------------------------------------------------------------------*/
67/*---------------------------------------------------------------------------*/
68
69/*!
70 * \brief Abstract visitor for an array data item.
71 *
72 * This visitor raises an exception for every unimplemented applyVisitor() function.
73 */
74class ARCANE_CORE_EXPORT AbstractArrayDataVisitor
75: public IArrayDataVisitor
76{
77 public:
78
79 virtual void applyVisitor(IArrayDataT<Byte>* data);
80 virtual void applyVisitor(IArrayDataT<Real>* data);
81 virtual void applyVisitor(IArrayDataT<Int8>* data);
82 virtual void applyVisitor(IArrayDataT<Int16>* data);
83 virtual void applyVisitor(IArrayDataT<Int32>* data);
84 virtual void applyVisitor(IArrayDataT<Int64>* data);
85 virtual void applyVisitor(IArrayDataT<Real2>* data);
86 virtual void applyVisitor(IArrayDataT<Real3>* data);
87 virtual void applyVisitor(IArrayDataT<Real2x2>* data);
88 virtual void applyVisitor(IArrayDataT<Real3x3>* data);
89 virtual void applyVisitor(IArrayDataT<Float16>* data);
90 virtual void applyVisitor(IArrayDataT<BFloat16>* data);
91 virtual void applyVisitor(IArrayDataT<Float32>* data);
92 virtual void applyVisitor(IArrayDataT<String>* data);
93
94 protected:
95
96 void _throwException(eDataType dt);
97};
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101
102/*!
103 * \brief Abstract visitor for a 2D array data item.
104 *
105 * This visitor raises an exception for every unimplemented applyVisitor() function.
106 */
107class ARCANE_CORE_EXPORT AbstractArray2DataVisitor
108: public IArray2DataVisitor
109{
110 public:
111
112 virtual void applyVisitor(IArray2DataT<Byte>* data);
113 virtual void applyVisitor(IArray2DataT<Real>* data);
114 virtual void applyVisitor(IArray2DataT<Int8>* data);
115 virtual void applyVisitor(IArray2DataT<Int16>* data);
116 virtual void applyVisitor(IArray2DataT<Int32>* data);
117 virtual void applyVisitor(IArray2DataT<Int64>* data);
118 virtual void applyVisitor(IArray2DataT<Real2>* data);
119 virtual void applyVisitor(IArray2DataT<Real3>* data);
120 virtual void applyVisitor(IArray2DataT<Real2x2>* data);
121 virtual void applyVisitor(IArray2DataT<Real3x3>* data);
122 virtual void applyVisitor(IArray2DataT<Float16>* data);
123 virtual void applyVisitor(IArray2DataT<BFloat16>* data);
124 virtual void applyVisitor(IArray2DataT<Float32>* data);
125
126 protected:
127
128 void _throwException(eDataType dt);
129};
130
131/*---------------------------------------------------------------------------*/
132/*---------------------------------------------------------------------------*/
133
134/*!
135 * \brief Abstract visitor for a variable-sized 2D array data item.
136 *
137 * This visitor raises an exception for every unimplemented applyVisitor() function.
138 */
139class ARCANE_CORE_EXPORT AbstractMultiArray2DataVisitor
141{
142 void _throwException(eDataType dt);
143};
144
145/*---------------------------------------------------------------------------*/
146/*---------------------------------------------------------------------------*/
147
148/*!
149 * \brief Abstract visitor for a data item.
150 *
151 * This visitor simply redirects to the relevant scalar, 1D array, or 2D array visitor.
152 */
153class ARCANE_CORE_EXPORT AbstractDataVisitor
158, public IDataVisitor
159{
160 public:
161
162 virtual void applyDataVisitor(IScalarData* data);
163 virtual void applyDataVisitor(IArrayData* data);
164 virtual void applyDataVisitor(IArray2Data* data);
165};
166
167/*---------------------------------------------------------------------------*/
168/*---------------------------------------------------------------------------*/
169
170} // namespace Arcane
171
172/*---------------------------------------------------------------------------*/
173/*---------------------------------------------------------------------------*/
174
175#endif
Abstract visitor for a 2D array data item.
Abstract visitor for an array data item.
Abstract visitor for a data item.
Abstract visitor for a variable-sized 2D array data item.
Abstract visitor for a scalar data item.
Interface of the visitor pattern for a 2D array data item.
Interface of a 2D array data item.
Definition IData.h:349
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 the visitor pattern for a variable-sized 2D array data item.
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 --
eDataType
Data type.
Definition DataTypes.h:41