Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
DataTypes.h
Aller à la documentation de ce fichier.
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* DataTypes.h (C) 2000-2024 */
9/* */
10/* Définition des types liées aux données. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_DATATYPES_DATATYPES_H
13#define ARCANE_CORE_DATATYPES_DATATYPES_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include <iosfwd>
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27// NOTE: Swig 4.2.0 ne gère pas bien le 'Int32´.
28// (cela fonctionne avec Swig 4.1.1)
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31/*!
32 * \brief Type d'une donnée.
33 */
34#ifndef SWIG
35enum eDataType : Int32
36#else
37enum eDataType
38#endif
39{
40 DT_Byte = 0, //!< Donnée de type octet
41 DT_Real, //!< Donnée de type réel
42 DT_Int16, //!< Donnée de type entier 16 bits
43 DT_Int32, //!< Donnée de type entier 32 bits
44 DT_Int64, //!< Donnée de type entier 64 bits
45 DT_String, //!< Donnée de type chaîne de caractère UTF-8
46 DT_Real2, //!< Donnée de type vecteur 2
47 DT_Real3, //!< Donnée de type vecteur 3
48 DT_Real2x2, //!< Donnée de type tenseur 3x3
49 DT_Real3x3, //!< Donnée de type tenseur 3x3
50 DT_BFloat16, //!< Donnée de type 'BFloat16'
51 DT_Float16, //!< Donnée de type 'Float16'
52 DT_Float32, //!< Donnée de type 'Float32'
53 DT_Int8, //!< Donnée de type entier sur 8 bits
54 DT_Unknown //!< Donnée de type inconnue ou non initialisée
55};
56
57//! Nombre de valeurs de eDataType
58static constexpr Int32 NB_ARCANE_DATA_TYPE = 15;
59
60/*---------------------------------------------------------------------------*/
61/*---------------------------------------------------------------------------*/
62/*!
63 * \brief Liste des noms pour eDataType.
64 */
66{
67 public:
68 static constexpr const char* N_BYTE = "Byte";
69 static constexpr const char* N_REAL = "Real";
70 static constexpr const char* N_INT16 = "Int16";
71 static constexpr const char* N_INT32 = "Int32";
72 static constexpr const char* N_INT64 = "Int64";
73 static constexpr const char* N_STRING = "String";
74 static constexpr const char* N_REAL2 = "Real2";
75 static constexpr const char* N_REAL3 = "Real3";
76 static constexpr const char* N_REAL2x2 = "Real2x2";
77 static constexpr const char* N_REAL3x3 = "Real3x3";
78 static constexpr const char* N_BFLOAT16 = "BFloat16";
79 static constexpr const char* N_FLOAT16 = "Float16";
80 static constexpr const char* N_FLOAT32 = "Float32";
81 static constexpr const char* N_INT8 = "Int8";
82 static constexpr const char* N_UNKNOWN = "Unknown";
83};
84
85/*---------------------------------------------------------------------------*/
86/*---------------------------------------------------------------------------*/
87
88//! Nom du type de donnée.
89extern "C++" ARCANE_CORE_EXPORT const char*
91
92//! Trouve le type associé à \a name
93extern "C++" ARCANE_CORE_EXPORT eDataType
94dataTypeFromName(const char* name,bool& has_error);
95
96//! Trouve le type associé à \a name. Envoie une exception en cas d'erreur
97extern "C++" ARCANE_CORE_EXPORT eDataType
98dataTypeFromName(const char* name);
99
100//! Taille du type de donnée \a type (qui doit être différent de \a DT_String)
101extern "C++" ARCANE_CORE_EXPORT Integer
103
104//! Opérateur de sortie sur un flot
105extern "C++" ARCANE_CORE_EXPORT std::ostream&
106operator<< (std::ostream& ostr,eDataType data_type);
107
108//! Opérateur d'entrée depuis un flot
109extern "C++" ARCANE_CORE_EXPORT std::istream&
110operator>> (std::istream& istr,eDataType& data_type);
111
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115/*!
116 * \brief Type de politique d'initialisation possible pour une donnée.
117 *
118 * Par défaut, pour des raisons historiques, il s'agit de DIP_Legacy.
119 *
120 * La politique d'initialisation est prise en compte pour
121 * l'initialisation des variables Arcane. Cette valeur peut être
122 * positionnée/récupérée via les fonctions
123 * setGlobalDataInitialisationPolicy() et getGlobalDataInitialisationPolicy().
124 *
125 */
127{
128 //! Pas d'initialisation forcée
130 /*!
131 * \brief Initialisation avec le constructeur par défaut.
132 *
133 * Pour les entiers, il s'agit de la valeurs 0. Pour les réels, il
134 * s'agit de la valeur 0.0.
135 */
137 /*!
138 * \brief Initialisation avec des NaN (Not a Number)
139 *
140 * Ce mode permet d'initialiser les données de type Real et dérivés (Real2, Real3, ...)
141 * avec des valeurs NaN qui déclenchent une exception lorsqu'elles
142 * sont utilisées.
143 */
145 /*!
146 * \brief Initialisation en mode historique.
147 *
148 * Ce mode est conservé pour compatibilité avec les versions d'Arcane inférieurs
149 * à la version 2.0 où c'était le mode par défaut.
150 * Dans ce mode, les variables sur les entités du maillage étaient
151 * toujours initialisées avec le constructeur par défaut lors de
152 * leur première allocation, quelle que soit la valeur de
153 * getGlobalDataInitialisationPolicy(). La politique d'initialisation n'était
154 * prise en compte que lors d'un changement du nomnbre d'éléments (resize())
155 * où pour les variables qui n'étaient pas des variables du maillage.
156 */
158 /*!
159 * \brief Initialisation avec des NaN pour à la création et le constructeur
160 * par défaut ensuite.
161 *
162 * Ce mode est identique à DIP_InitWithNan pour la création des variables
163 * et à DIP_InitWithDefault lorsqu'on la taille de la variable évolue
164 * (en géneral via un appel à IVariable::resize() ou IVariable::resizeFromGroup()).
165 */
168
169/*---------------------------------------------------------------------------*/
170/*---------------------------------------------------------------------------*/
171
172//! Positionne la politique d'initialisation des variables.
173extern "C++" ARCANE_CORE_EXPORT void
175
176//! Récupère la politique d'initialisation des variables.
177extern "C++" ARCANE_CORE_EXPORT eDataInitialisationPolicy
179
180/*---------------------------------------------------------------------------*/
181/*---------------------------------------------------------------------------*/
182//! Type de trace possible
184{
185 TT_None = 0,
186 TT_Read = 1,
187 TT_Write = 2
188};
189
190/*---------------------------------------------------------------------------*/
191/*---------------------------------------------------------------------------*/
192
193} // End namespace Arcane
194
195/*---------------------------------------------------------------------------*/
196/*---------------------------------------------------------------------------*/
197
198#endif
Déclarations des types utilisés dans Arcane.
Liste des noms pour eDataType.
Definition DataTypes.h:66
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ARCANE_DATATYPE_EXPORT Integer dataTypeSize(eDataType type)
Taille du type de donnée type (qui doit être différent de DT_String)
Definition DataTypes.cc:109
void setGlobalDataInitialisationPolicy(eDataInitialisationPolicy init_policy)
Positionne la politique d'initialisation des variables.
Definition DataTypes.cc:156
eDataInitialisationPolicy
Type de politique d'initialisation possible pour une donnée.
Definition DataTypes.h:127
@ DIP_InitInitialWithNanResizeWithDefault
Initialisation avec des NaN pour à la création et le constructeur par défaut ensuite.
Definition DataTypes.h:166
@ DIP_Legacy
Initialisation en mode historique.
Definition DataTypes.h:157
@ DIP_None
Pas d'initialisation forcée.
Definition DataTypes.h:129
@ DIP_InitWithNan
Initialisation avec des NaN (Not a Number)
Definition DataTypes.h:144
@ DIP_InitWithDefault
Initialisation avec le constructeur par défaut.
Definition DataTypes.h:136
eDataInitialisationPolicy getGlobalDataInitialisationPolicy()
Récupère la politique d'initialisation des variables.
Definition DataTypes.cc:162
eTraceType
Type de trace possible.
Definition DataTypes.h:184
std::istream & operator>>(std::istream &istr, eItemKind &item_kind)
Opérateur d'entrée depuis un flot.
eDataType
Type d'une donnée.
Definition DataTypes.h:39
@ DT_Float32
Donnée de type 'Float32'.
Definition DataTypes.h:52
@ DT_Real2x2
Donnée de type tenseur 3x3.
Definition DataTypes.h:48
@ DT_Int16
Donnée de type entier 16 bits.
Definition DataTypes.h:42
@ DT_Int8
Donnée de type entier sur 8 bits.
Definition DataTypes.h:53
@ DT_Real3x3
Donnée de type tenseur 3x3.
Definition DataTypes.h:49
@ DT_Int32
Donnée de type entier 32 bits.
Definition DataTypes.h:43
@ DT_Real3
Donnée de type vecteur 3.
Definition DataTypes.h:47
@ DT_Float16
Donnée de type 'Float16'.
Definition DataTypes.h:51
@ DT_Int64
Donnée de type entier 64 bits.
Definition DataTypes.h:44
@ DT_Unknown
Donnée de type inconnue ou non initialisée.
Definition DataTypes.h:54
@ DT_String
Donnée de type chaîne de caractère UTF-8.
Definition DataTypes.h:45
@ DT_BFloat16
Donnée de type 'BFloat16'.
Definition DataTypes.h:50
@ DT_Real2
Donnée de type vecteur 2.
Definition DataTypes.h:46
@ DT_Real
Donnée de type réel.
Definition DataTypes.h:41
@ DT_Byte
Donnée de type octet.
Definition DataTypes.h:40
std::ostream & operator<<(std::ostream &ostr, eItemKind item_kind)
Opérateur de sortie sur un flot.
ARCANE_DATATYPE_EXPORT eDataType dataTypeFromName(const char *name, bool &has_error)
Trouve le type associé à name.
Definition DataTypes.cc:92
const char * dataTypeName(eDataType type)
Nom du type de donnée.
Definition DataTypes.cc:70