12#ifndef ARCANE_HDF5_HDF5UTILS_H
13#define ARCANE_HDF5_HDF5UTILS_H
18#include "arcane/utils/String.h"
19#include "arcane/utils/Array.h"
20#include "arcane/utils/NumericTypes.h"
22#include "arcane/datatype/DataTypes.h"
24#include "arcane/hdf5/ArcaneHdf5Global.h"
35#if (H5_VERS_MAJOR<2) && (H5_VERS_MAJOR==1 && H5_VERS_MINOR<10)
36#error "This version of HDF5 is too old. Version 1.10+ is required"
40#define ARCANE_HDF5_1_6_AND_AFTER
41#define ARCANE_HDF5_1_8_AND_AFTER
63 ARCANE_HDF5_EXPORT herr_t _ArcaneHdf5UtilsGroupIterateMe(hid_t,
const char*,
void*);
82 static bool hasParallelHdf5();
92class ARCANE_HDF5_EXPORT
Hid
108 void _setId(hid_t
id) { m_id = id; }
109 void _setNullId() { m_id = -1; }
113 Hid& operator=(
const Hid& hid) =
delete;
117 hid_t id()
const {
return m_id; }
118 bool isBad()
const {
return m_id < 0; }
167 void create(hid_t cls_id);
168 void setId(hid_t new_id)
198 void createDatasetTransfertCollectiveMPIIO();
228 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
235 void openTruncate(
const String& var);
236 void openAppend(
const String& var);
237 void openRead(
const String& var);
238 void openTruncate(
const String& var, hid_t plist_id);
239 void openAppend(
const String& var, hid_t plist_id);
240 void openRead(
const String& var, hid_t plist_id);
257 : m_group_name(group_name)
261 herr_t iterateMe(
const char* member_name)
264 if (m_group_name==member_name)
299 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
306 void create(
const Hid& loc_id,
const String& group_name);
307 void openOrCreate(
const Hid& loc_id,
const String& group_name);
308 void recursiveCreate(
const Hid& loc_id,
const String& var);
310 void checkDelete(
const Hid& loc_id,
const String& var);
311 void recursiveOpen(
const Hid& loc_id,
const String& var);
312 void open(
const Hid& loc_id,
const String& var);
314 bool hasChildren(
const String& var);
316 static bool hasChildren(hid_t loc_id,
const String& var);
320 hid_t _checkOrCreate(hid_t loc_id,
const String& group_name);
321 hid_t _checkExist(hid_t loc_id,
const String& group_name);
360 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
367 void createSimple(
int nb, hsize_t dims[]);
368 void createSimple(
int nb, hsize_t dims[], hsize_t max_dims[]);
370 herr_t getDimensions(hsize_t dims[], hsize_t max_dims[]);
400 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
413 void create(
const Hid& loc_id,
const String& var, hid_t save_type,
const HSpace& space_id, hid_t plist);
414 void create(
const Hid& loc_id,
const String& var,hid_t save_type,
417 void recursiveCreate(
const Hid& loc_id,
const String& var, hid_t save_type,
const HSpace& space_id, hid_t plist);
418 void open(
const Hid& loc_id,
const String& var);
419 void openIfExists(
const Hid& loc_id,
const String& var);
420 herr_t write(hid_t native_type,
const void* array);
421 herr_t write(hid_t native_type,
const void* array,
const HSpace& memspace_id,
422 const HSpace& filespace_id, hid_t plist);
423 herr_t write(hid_t native_type,
const void* array,
const HSpace& memspace_id,
425 herr_t read(hid_t native_type,
void* array)
427 return H5Dread(
id(), native_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, array);
429 void readWithException(hid_t native_type,
void* array);
431 herr_t setExtent(
const hsize_t new_dims[]);
435 void _remove(hid_t hid,
const String& var);
469 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
476 void remove(
const Hid& loc_id,
const String& var)
478 _setId(H5Adelete(loc_id.id(), var.
localstr()));
480 void create(
const Hid& loc_id,
const String& var, hid_t save_type,
const HSpace& space_id)
482 _setId(H5Acreate2(loc_id.id(), var.
localstr(), save_type, space_id.id(), H5P_DEFAULT, H5P_DEFAULT));
484 void open(
const Hid& loc_id,
const String& var)
486 _setId(H5Aopen_name(loc_id.id(), var.
localstr()));
488 herr_t write(hid_t native_type,
void* array)
490 return H5Awrite(
id(), native_type, array);
492 herr_t read(hid_t native_type,
void* array)
494 return H5Aread(
id(), native_type, array);
498 return HSpace(H5Aget_space(
id()));
534 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
541 void setId(hid_t new_id)
573 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
587 hid_t nativeType(
float)
const {
return H5T_NATIVE_FLOAT; }
588 hid_t nativeType(
double)
const {
return H5T_NATIVE_DOUBLE; }
589 hid_t nativeType(
Real2)
const {
return m_real2_id.id(); }
590 hid_t nativeType(
Real3)
const {
return m_real3_id.id(); }
591 hid_t nativeType(
Real2x2)
const {
return m_real2x2_id.id(); }
592 hid_t nativeType(
Real3x3)
const {
return m_real3x3_id.id(); }
593 hid_t nativeType(
long double)
const {
return H5T_NATIVE_LDOUBLE; }
594 hid_t nativeType(
unsigned int)
const {
return H5T_NATIVE_UINT; }
595 hid_t nativeType(
unsigned long)
const {
return H5T_NATIVE_ULONG; }
596 hid_t nativeType(
unsigned long long)
const {
return H5T_NATIVE_ULLONG; }
597 hid_t nativeType(
int)
const {
return H5T_NATIVE_INT; }
598 hid_t nativeType(
long long)
const {
return H5T_NATIVE_LLONG; }
599 hid_t nativeType(
long)
const {
return H5T_NATIVE_LONG; }
600 hid_t nativeType(
char)
const {
return H5T_NATIVE_CHAR; }
601 hid_t nativeType(
unsigned char)
const {
return H5T_NATIVE_UCHAR; }
602 hid_t nativeType(
signed char)
const {
return H5T_NATIVE_SCHAR; }
603 hid_t nativeType(
unsigned short)
const {
return H5T_NATIVE_USHORT; }
604 hid_t nativeType(
short)
const {
return H5T_NATIVE_SHORT; }
605#ifdef ARCANE_REAL_NOT_BUILTIN
606 hid_t nativeType(Real)
const;
609 hid_t nativeType(
BFloat16)
const {
return m_bfloat16_id.id(); }
610 hid_t nativeType(
Float16)
const {
return m_float16_id.id(); }
614 hid_t saveType(
float)
const
616 return m_float32_id.id();
618 hid_t saveType(
double)
const
620 return m_real_id.id();
622 hid_t saveType(
Real2)
const
624 return m_real2_id.id();
626 hid_t saveType(
Real3)
const
628 return m_real3_id.id();
632 return m_real2x2_id.id();
636 return m_real3x3_id.id();
638 hid_t saveType(
long double)
const
640 return m_real_id.id();
642 hid_t saveType(
short)
const
644 return m_short_id.id();
646 hid_t saveType(
unsigned short)
const
648 return m_ushort_id.id();
650 hid_t saveType(
unsigned int)
const
652 return m_uint_id.id();
654 hid_t saveType(
unsigned long)
const
656 return m_ulong_id.id();
658 hid_t saveType(
unsigned long long)
const
660 return m_ulong_id.id();
662 hid_t saveType(
int)
const
664 return m_int_id.id();
666 hid_t saveType(
long)
const
668 return m_long_id.id();
670 hid_t saveType(
long long)
const
672 return m_long_id.id();
674 hid_t saveType(
char)
const
676 return m_char_id.id();
678 hid_t saveType(
unsigned char)
const
680 return m_uchar_id.id();
682 hid_t saveType(
signed char)
const
684 return m_schar_id.id();
688 return m_bfloat16_id.id();
692 return m_float16_id.id();
694#ifdef ARCANE_REAL_NOT_BUILTIN
695 hid_t saveType(Real)
const
697 return m_real_id.id();
735 void _H5Tinsert(hid_t type,
const char* name, Integer offset, hid_t field_id);
759 void setIdsPath(
const String& ids_path);
762 virtual bool exists()
const;
766 void _write(
const void* buffer, Integer nb_element, hid_t save_type, hid_t native_type);
785template<
typename DataType>
796 bool operator<(
const ValueWithUid& rhs)
const
798 return m_uid < rhs.m_uid;
832template<
typename DataType>
Déclarations des types utilisés dans Arcane.
Encapsule un hid_t pour un attribute.
Encapsule un hid_t pour un dataset.
Encapsule un hid_t pour un fichier.
Classe d'aide pour rechercher un groupe.
Encapsule un hid_t pour un groupe.
Classe servant d'initialiseur pour HDF.
Encapsule un hid_t pour une propriété (H5P*).
Encapsule un hid_t pour un dataspace.
Encapsule un hid_t pour un type.
Encapsule un dataset simple d'un fichier HDF5 qui représente un tableau.
Encapsule un dataset simple d'un fichier HDF5 qui représente un tableau.
Encapsule un dataset simple d'un fichier HDF5 qui représente un scalaire (éventuellement String).
StandardScalarT(hid_t hfile, const String &hpath)
Constructeur.
Définition des types standards Arcane pour hdf5.
HType m_bfloat16_id
Identifiant HDF pour les BFloat16.
HType m_real2x2_id
Identifiant HDF pour les Real2x2.
HType m_long_id
Identifiant HDF des entiers long signés.
HType m_int_id
Identifiant HDF des entiers signés.
HType m_short_id
Identifiant HDF des entiers signés.
HType m_real3x3_id
Identifiant HDF pour les Real3x3.
HType m_real_id
Identifiant HDF des réels.
HType m_ushort_id
Identifiant HDF des entiers long signés.
HType m_ulong_id
Identifiant HDF des entiers long non signés.
HType m_schar_id
Identifiant HDF des caractères signés.
HType m_uchar_id
Identifiant HDF des caractères non-signés.
HType m_real2_id
Identifiant HDF pour les Real2.
HType m_float32_id
Identifiant HDF pour les Float16.
HType m_float16_id
Identifiant HDF pour les Float16.
HType m_char_id
Identifiant HDF des charactères.
HType m_uint_id
Identifiant HDF des entiers non signés.
HType m_real3_id
Identifiant HDF pour les Real3.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Classe gérant un vecteur de réel de dimension 2.
Classe gérant une matrice de réel de dimension 2x2.
Classe gérant un vecteur de réel de dimension 3.
Classe gérant une matrice de réel de dimension 3x3.
Vue modifiable d'un tableau d'un type T.
Classe de base des vecteurs 1D de données.
Vue constante d'un tableau de type T.
Type flottant demi-précision.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
const char * localstr() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
bool operator<(const Item &item1, const Item &item2)
Compare deux entités.
eDataType
Type d'une donnée.