Arcane  v4.1.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
BaseTypes.h
Aller à la documentation de ce fichier.
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/* BaseTypes.h (C) 2000-2025 */
9/* */
10/* Définition des types de la composante 'base' de Arccore. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_BASE_BASETYPES_H
13#define ARCCORE_BASE_BASETYPES_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arccore/base/ArccoreGlobal.h"
18
19#include <cstddef>
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30/*!
31 * \file BaseTypes.h
32 *
33 * \brief Déclarations des types de la composante 'base' de %Arccore.
34 */
35
36template <typename T> class IterT;
37template <typename T> class ConstIterT;
38
39/*---------------------------------------------------------------------------*/
40/*---------------------------------------------------------------------------*/
41
42//! Type d'un octet
43typedef unsigned char Byte;
44//! Type d'un octet
45typedef signed char SByte;
46//! Type d'un caractère unicode
47typedef unsigned short UChar;
48//! Type d'un Int16 non signé
49typedef unsigned short UInt16;
50//! Type d'un réel simple précision
51typedef float Single;
52
53//! Constante pour indiquer que la dimension d'un tableau est dynamique
54inline constexpr Int32 DynExtent = -1;
55
56template <typename T> class ConstArrayView;
57template <typename T> class ArrayView;
58template <typename T> class ConstArray2View;
59template <typename T> class Array2View;
60template <typename T> class ConstArray3View;
61template <typename T> class Array3View;
62template <typename T> class ConstArray4View;
63template <typename T> class Array4View;
64template <typename T, typename SizeType, SizeType Extent = DynExtent> class SpanImpl;
65template <typename T, Int64 Extent = DynExtent> class Span;
66template <typename T, Int32 Extent = DynExtent> class SmallSpan;
67template <typename T, Int64 Extent = DynExtent> using LargeSpan = Span<T, Extent>;
68template <typename T, typename SizeType, SizeType Extent1 = DynExtent, SizeType Extent2 = DynExtent> class Span2Impl;
69template <typename T, Int64 Extent1 = DynExtent, Int64 Extent2 = DynExtent> class Span2;
70template <typename T, Int32 Extent1 = DynExtent, Int32 Extent2 = DynExtent> class SmallSpan2;
71template <typename Iterator_>
72class ArrayIterator;
73
74class StringImpl;
75class String;
76class StringVector;
77class StringBuilder;
80
81class IRangeFunctor;
82template<int RankValue> class IMDRangeFunctor;
83template<typename InstanceType> class RangeFunctorT;
84template<typename LambdaType> class LambdaRangeFunctorT;
85template<typename LambdaType, typename... Views> class LambdaRangeFunctorTVa;
87class ForLoopRange;
88template<int RankValue, typename IndexType_ = Int32> class SimpleForLoopRanges;
89template<int RankValue, typename IndexType_ = Int32> class ComplexForLoopRanges;
91class ForLoopRunInfo;
93
94class TraceInfo;
95class StackTrace;
96class Exception;
97class StackFrame;
100template <typename T>
101class CheckedPointer;
102template <class T>
104template <typename T>
105class ReferenceCounter;
112class TimeoutException;
113enum class eBasicDataType : unsigned char;
114class IFunctor;
115template <typename ArgType>
117template <typename ReturnType, typename Arg1, typename Arg2>
119template <typename T>
120class FunctorT;
121template <typename ClassType, typename ArgType>
123template <typename ArgType>
126template <typename InstanceType, class T = void>
127struct RefTraits;
128template <typename InstanceType, int ImplTagId = RefTraits<InstanceType>::TagId>
129class Ref;
130
131namespace impl
132{
133 template <typename InstanceType>
134 class ReferenceCounterWrapper;
135}
136
137/*---------------------------------------------------------------------------*/
138/*---------------------------------------------------------------------------*/
139
140// Ces classes sont internes à Arccore/Arcane
141template <typename T>
142class ArrayRange;
143namespace Impl
144{
145class BasicTranscoder;
146template <class DataType> class CoreArray;
147class ForLoopStatInfoList;
148class ForLoopStatInfoListImpl;
149class ForLoopCumulativeStat;
150}
151
152/*---------------------------------------------------------------------------*/
153/*---------------------------------------------------------------------------*/
154
155// Ces classes ne sont pas accessibles dans 'utils' mais il est possible
156// d'utiliser des pointeurs sur ces instances.
157// La définition est dans 'arcane_accelerator_core'
158namespace Accelerator
159{
160class Runner;
161class RunQueue;
162}
165
166/*---------------------------------------------------------------------------*/
167/*---------------------------------------------------------------------------*/
168
169class DefaultLayout;
170template<int RankValue> class RightLayoutN;
171template<int RankValue> class LeftLayoutN;
172template<int RankValue> class MDDimType;
173class ConstMemoryView;
175class IMemoryResourceMng;
176// TODO: Rendre obsolète
177using IMemoryRessourceMng = IMemoryResourceMng;
178template <typename IndexType_ = Int32, Int32... RankSize> class ExtentsV;
179template<class DataType,typename Extents,typename LayoutPolicy = DefaultLayout >
180class MDSpan;
181template<typename DataType,typename Extents,typename LayoutPolicy = DefaultLayout >
182using MDSpanBase ARCCORE_DEPRECATED_REASON("Use 'MDSpan' type instead") = MDSpan<DataType,Extents,LayoutPolicy>;
183template<typename ExtentType> class ArrayBounds;
184
185template<class DataType,typename Extents,typename LayoutType = DefaultLayout >
186class NumArray;
187template<typename DataType,typename Extents,typename LayoutPolicy = DefaultLayout >
188using NumArrayBase ARCCORE_DEPRECATED_REASON("Use 'NumArray' type instead") = NumArray<DataType,Extents,LayoutPolicy>;
189
190template<typename Extents,typename LayoutPolicy> class ArrayExtentsWithOffset;
191template<int RankValue, typename IndexType_ = Int32> class MDIndexBase;
192template<int RankValue, typename IndexType_ = Int32> class MDIndex;
193template<int RankValue, typename IndexType_ = Int32> using ArrayIndexBase = MDIndexBase<RankValue,IndexType_>;
194template<int RankValue, typename IndexType_ = Int32> using ArrayIndex = MDIndex<RankValue,IndexType_>;
195template<int RankValue> using ArrayBoundsIndexBase ARCCORE_DEPRECATED_REASON("Use 'MDIndexBase' type instead") = ArrayIndexBase<RankValue>;
196template<int RankValue> using ArrayBoundsIndex ARCCORE_DEPRECATED_REASON("Use 'MDIndex' type instead") = ArrayIndex<RankValue>;
197template<typename Extents> class ArrayExtentsBase;
198template<typename Extents> class ArrayExtents;
199template<int RankValue> class ArrayStridesBase;
200template<int RankValue> class IMDRangeFunctor;
201template<int RankValue> class ArrayExtentsValueDynamic;
202namespace impl
203{
204template<typename IndexType_, Int32... RankSize> class ArrayExtentsValue;
205}
206template <typename T, Int32 NbElement>
207class FixedArray;
208
209class IObservable;
210class IObserver;
211class Observable;
212class Observer;
213
214/*---------------------------------------------------------------------------*/
215/*---------------------------------------------------------------------------*/
216
217//! Equivalent C d'un tableau à une dimension de pointeurs
219//! Equivalent C d'un tableau à une dimension de caractères
221//! Equivalent C d'un tableau à une dimension de caractères unicode
223//! Equivalent C d'un tableau à une dimension d'entiers 64 bits
225//! Equivalent C d'un tableau à une dimension d'entiers 32 bits
227//! Equivalent C d'un tableau à une dimension d'entiers 16 bits
229//! Equivalent C d'un tableau à une dimension d'entiers
231//! Equivalent C d'un tableau à une dimension de réels
233//! Equivalent C d'un tableau à une dimension de booléens
235//! Equivalent C d'un tableau à une dimension d'entiers
237
238//! Equivalent C d'un tableau à une dimension de pointeurs
240//! Equivalent C d'un tableau à une dimension de caractères
242//! Equivalent C d'un tableau à une dimension de caractères unicode
244//! Equivalent C d'un tableau à une dimension d'entiers 64 bits
246//! Equivalent C d'un tableau à une dimension d'entiers 32 bits
248//! Equivalent C d'un tableau à une dimension d'entiers 16 bits
250//! Equivalent C d'un tableau à une dimension d'entiers
252//! Equivalent C d'un tableau à une dimension de réels
254//! Equivalent C d'un tableau à une dimension de booléens
256//! Equivalent C d'un tableau à une dimension d'entiers
258
259/*---------------------------------------------------------------------------*/
260/*---------------------------------------------------------------------------*/
261
262//! Equivalent C d'un tableau à une dimension de pointeurs
264//! Equivalent C d'un tableau à une dimension de caractères
266//! Equivalent C d'un tableau à une dimension de caractères unicode
267typedef Span<UChar> UCharSpan;
268//! Equivalent C d'un tableau à une dimension d'entiers 64 bits
269typedef Span<Int64> Int64Span;
270//! Equivalent C d'un tableau à une dimension d'entiers 32 bits
271typedef Span<Int32> Int32Span;
272//! Equivalent C d'un tableau à une dimension d'entiers 16 bits
273typedef Span<Int16> Int16Span;
274//! Equivalent C d'un tableau à une dimension d'entiers
276//! Equivalent C d'un tableau à une dimension de réels
277typedef Span<Real> RealSpan;
278//! Equivalent C d'un tableau à une dimension de booléens
279typedef Span<bool> BoolSpan;
280//! Equivalent C d'un tableau à une dimension d'entiers
282
283//! Equivalent C d'un tableau à une dimension de pointeurs
285//! Equivalent C d'un tableau à une dimension de caractères
287//! Equivalent C d'un tableau à une dimension de caractères unicode
289//! Equivalent C d'un tableau à une dimension d'entiers 64 bits
291//! Equivalent C d'un tableau à une dimension d'entiers 32 bits
293//! Equivalent C d'un tableau à une dimension d'entiers 16 bits
295//! Equivalent C d'un tableau à une dimension d'entiers
297//! Equivalent C d'un tableau à une dimension de réels
299//! Equivalent C d'un tableau à une dimension de booléens
301//! Equivalent C d'un tableau à une dimension d'entiers
303
304/*---------------------------------------------------------------------------*/
305/*---------------------------------------------------------------------------*/
306
307} // End namespace Arccore
308
309/*---------------------------------------------------------------------------*/
310/*---------------------------------------------------------------------------*/
311
312namespace Arccore
313{
325using Arcane::IterT;
328using Arcane::LargeSpan;
329using Arcane::Span;
330using Arcane::Span2;
332using Arcane::SpanImpl;
333using Arcane::StringImpl;
336
347using Arcane::Ref;
354
355using Arcane::IFunctor;
358using Arcane::FunctorT;
361
362using Arcane::Byte;
363using Arcane::SByte;
364using Arcane::Single;
365using Arcane::UChar;
366using Arcane::UInt16;
367
378
389
391using Arcane::ByteSpan;
397using Arcane::RealSpan;
398using Arcane::BoolSpan;
400
411
413
414// Ces classes sont internes à Arccore/Arcane
416}
417
418/*---------------------------------------------------------------------------*/
419/*---------------------------------------------------------------------------*/
420
421#endif
File d'exécution pour un accélérateur.
Gestionnaire d'exécution pour accélérateur.
Definition core/Runner.h:67
Exception lorsqu'un argument est invalide.
Vue modifiable pour un tableau 2D.
Classe pour conserver le nombre d'éléments dans chaque dimension.
Itérateur sur les classes tableau de Arccore.
Intervalle sur les classes tableau de Arccore.
Classe pour conserver le pas dans chaque dimension.
Vue modifiable d'un tableau d'un type T.
Encapsulation d'un pointeur.
Vue constante d'un tableau de type T.
Vue constante sur une zone mémoire contigue contenant des éléments de taille fixe.
Le layout par défaut est toujours RightLayout.
Classe de base d'une exception.
Exception lorsqu'une erreur fatale est survenue.
Classe pour gérer le profiling d'une seule exécution d'une boucle.
Intervalle d'itération pour une boucle.
Informations d'exécution d'une boucle.
Informations de trace pour une boucle 'for'.
Interface d'un fonctor avec 2 arguments et une valeur de retour.
Interface d'un fonctor avec argument mais sans valeur de retour.
Interface d'un fonctor sur un interval d'itération multi-dimensionnel de dimension RankValue.
Interface d'un fonctor sur un interval d'itération.
Exception lorsqu'une valeur n'est pas dans un intervalle donné.
Fonctor sur un interval d'itération instancié via une lambda fonction.
Fonctor sur un interval d'itération instancié via une lambda fonction.
Classe de base de la gestion des indices d'un tableau N-dimension.
Classe de base des vues multi-dimensionnelles.
Vue modifiable sur une zone mémoire contigue contenant des éléments de taille fixe.
Tableaux multi-dimensionnels pour les types numériques accessibles sur accélérateurs.
Classe de base d'un observable.
Options d'exécution d'une boucle parallèle en multi-thread.
Fonctor sur un interval d'itération.
Référence à une instance.
Accesseur des méthodes de gestion de compteurs de référence.
Implémentation thread-safe d'un compteur de référence.
Encapsulation d'un pointeur avec compteur de référence.
Vue pour un tableau 2D dont la taille est un 'Int32'.
Definition Span2.h:233
Vue d'un tableau d'éléments de type T.
Definition Span.h:774
Vue pour un tableau 2D.
Definition Span2.h:64
Vue pour un tableau 2D dont la taille est un 'Int64'.
Definition Span2.h:301
Vue d'un tableau d'éléments de type T.
Definition Span.h:176
Vue d'un tableau d'éléments de type T.
Definition Span.h:612
Constructeur de chaîne de caractère unicode.
Liste de 'String'.
Chaîne de caractères unicode.
Intervalle sur les classes tableau de Arccore.
Espace de nom pour l'utilisation des accélérateurs.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Span< const Real > RealConstSpan
Vue en lecture seule d'un tableau à une dimension de réels.
Definition UtilsTypes.h:576
ArrayView< Int64 > Int64ArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
Definition UtilsTypes.h:467
Span< Int64 > Int64Span
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
Definition UtilsTypes.h:536
Span< const UChar > UCharConstSpan
Vue en lecture seule d'un tableau à une dimension de caractères unicode.
Definition UtilsTypes.h:566
ArrayView< Byte > ByteArrayView
Equivalent C d'un tableau à une dimension de caractères.
Definition UtilsTypes.h:463
ArrayView< bool > BoolArrayView
Equivalent C d'un tableau à une dimension de booléens.
Definition UtilsTypes.h:477
Span< const Int64 > Int64ConstSpan
Vue en lecture seule d'un tableau à une dimension d'entiers 64 bits.
Definition UtilsTypes.h:568
Span< std::byte > ByteSpan
Equivalent C d'un tableau à une dimension de caractères.
Definition UtilsTypes.h:532
ArrayView< UChar > UCharArrayView
Equivalent C d'un tableau à une dimension de caractères unicode.
Definition UtilsTypes.h:465
constexpr Int32 DynExtent
Constante pour indiquer que la dimension d'un tableau est dynamique.
Definition BaseTypes.h:54
ConstArrayView< Pointer > PointerConstArrayView
Equivalent C d'un tableau à une dimension de pointeurs.
Definition UtilsTypes.h:490
ArrayView< Int16 > Int16ArrayView
Equivalent C d'un tableau à une dimension d'entiers 16 bits.
Definition UtilsTypes.h:471
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:498
ConstArrayView< bool > BoolConstArrayView
Equivalent C d'un tableau à une dimension de booléens.
Definition UtilsTypes.h:506
eBasicDataType
Type d'une donnée de base.
ArrayView< Integer > IntegerArrayView
Equivalent C d'un tableau à une dimension d'entiers.
Definition UtilsTypes.h:473
Span< UChar > UCharSpan
Equivalent C d'un tableau à une dimension de caractères unicode.
Definition UtilsTypes.h:534
Span< const bool > BoolConstSpan
Vue en lecture seule d'un tableau à une dimension de booléens.
Definition UtilsTypes.h:578
ConstArrayView< Int16 > Int16ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 16 bits.
Definition UtilsTypes.h:500
Span< const Pointer > PointerConstSpan
Vue en lecture seule d'un tableau à une dimension de pointeurs.
Definition UtilsTypes.h:562
ConstArrayView< Int64 > Int64ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
Definition UtilsTypes.h:496
Span< Integer > IntegerSpan
Equivalent C d'un tableau à une dimension d'entiers.
Definition UtilsTypes.h:542
float Single
Type d'un réel simple précision.
Definition BaseTypes.h:51
Span< bool > BoolSpan
Equivalent C d'un tableau à une dimension de booléens.
Definition UtilsTypes.h:546
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:469
Span< const Integer > IntegerConstSpan
Vue en lecture seule d'un tableau à une dimension d'entiers.
Definition UtilsTypes.h:574
Span< const std::byte > ByteConstSpan
Vue en lecture seule d'un tableau à une dimension de caractères.
Definition UtilsTypes.h:564
Span< Pointer > PointerSpan
Equivalent C d'un tableau à une dimension de pointeurs.
Definition UtilsTypes.h:530
ConstArrayView< UChar > UCharConstArrayView
Equivalent C d'un tableau à une dimension de caractères unicode.
Definition UtilsTypes.h:494
ConstArrayView< Byte > ByteConstArrayView
Equivalent C d'un tableau à une dimension de caractères.
Definition UtilsTypes.h:492
unsigned char Byte
Type d'un octet.
Definition BaseTypes.h:43
unsigned short UInt16
Type d'un Int16 non signé
Definition BaseTypes.h:49
Span< Int16 > Int16Span
Equivalent C d'un tableau à une dimension d'entiers 16 bits.
Definition UtilsTypes.h:540
Span< Real > RealSpan
Equivalent C d'un tableau à une dimension de réels.
Definition UtilsTypes.h:544
Span< Int32 > Int32Span
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:538
Span< const Int16 > Int16ConstSpan
Vue en lecture seule d'un tableau à une dimension d'entiers 16 bits.
Definition UtilsTypes.h:572
Span< const Int32 > Int32ConstSpan
Vue en lecture seule d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:570
unsigned short UChar
Type d'un caractère unicode.
Definition BaseTypes.h:47
ConstArrayView< Integer > IntegerConstArrayView
Equivalent C d'un tableau à une dimension d'entiers.
Definition UtilsTypes.h:502
signed char SByte
Type d'un octet.
Definition BaseTypes.h:45
ArrayView< Real > RealArrayView
Equivalent C d'un tableau à une dimension de réels.
Definition UtilsTypes.h:475
std::int32_t Int32
Type entier signé sur 32 bits.
ArrayView< Pointer > PointerArrayView
Equivalent C d'un tableau à une dimension de pointeurs.
Definition UtilsTypes.h:461
ConstArrayView< Real > RealConstArrayView
Equivalent C d'un tableau à une dimension de réels.
Definition UtilsTypes.h:504
Espace de nom de Arccore.
Caractéristiques pour gérer les compteurs de référence.
Structure servant à tagger les interfaces/classes qui utilisent un compteur de référence interne.