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/Real2.h"
21#include "arcane/utils/Real3.h"
22#include "arcane/utils/Real2x2.h"
23#include "arcane/utils/Real3x3.h"
24#include "arcane/datatype/DataTypes.h"
26#include "arcane/hdf5/ArcaneHdf5Global.h"
37#if (H5_VERS_MAJOR<2) && (H5_VERS_MAJOR==1 && H5_VERS_MINOR<10)
38#error "This version of HDF5 is too old. Version 1.10+ is required"
42#define ARCANE_HDF5_1_6_AND_AFTER
43#define ARCANE_HDF5_1_8_AND_AFTER
65 ARCANE_HDF5_EXPORT herr_t _ArcaneHdf5UtilsGroupIterateMe(hid_t,
const char*,
void*);
84 static bool hasParallelHdf5();
94class ARCANE_HDF5_EXPORT
Hid
110 void _setId(hid_t
id) { m_id = id; }
111 void _setNullId() { m_id = -1; }
115 Hid& operator=(
const Hid& hid) =
delete;
119 hid_t id()
const {
return m_id; }
120 bool isBad()
const {
return m_id < 0; }
169 void create(hid_t cls_id);
170 void setId(hid_t new_id)
200 void createDatasetTransfertCollectiveMPIIO();
230 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
237 void openTruncate(
const String& var);
238 void openAppend(
const String& var);
239 void openRead(
const String& var);
240 void openTruncate(
const String& var, hid_t plist_id);
241 void openAppend(
const String& var, hid_t plist_id);
242 void openRead(
const String& var, hid_t plist_id);
259 : m_group_name(group_name)
263 herr_t iterateMe(
const char* member_name)
266 if (m_group_name==member_name)
301 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
308 void create(
const Hid& loc_id,
const String& group_name);
309 void openOrCreate(
const Hid& loc_id,
const String& group_name);
310 void recursiveCreate(
const Hid& loc_id,
const String& var);
312 void checkDelete(
const Hid& loc_id,
const String& var);
313 void recursiveOpen(
const Hid& loc_id,
const String& var);
314 void open(
const Hid& loc_id,
const String& var);
316 bool hasChildren(
const String& var);
318 static bool hasChildren(hid_t loc_id,
const String& var);
322 hid_t _checkOrCreate(hid_t loc_id,
const String& group_name);
323 hid_t _checkExist(hid_t loc_id,
const String& group_name);
362 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
369 void createSimple(
int nb, hsize_t dims[]);
370 void createSimple(
int nb, hsize_t dims[], hsize_t max_dims[]);
372 herr_t getDimensions(hsize_t dims[], hsize_t max_dims[]);
402 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
415 void create(
const Hid& loc_id,
const String& var, hid_t save_type,
const HSpace& space_id, hid_t plist);
416 void create(
const Hid& loc_id,
const String& var,hid_t save_type,
419 void recursiveCreate(
const Hid& loc_id,
const String& var, hid_t save_type,
const HSpace& space_id, hid_t plist);
420 void open(
const Hid& loc_id,
const String& var);
421 void openIfExists(
const Hid& loc_id,
const String& var);
422 herr_t write(hid_t native_type,
const void* array);
423 herr_t write(hid_t native_type,
const void* array,
const HSpace& memspace_id,
424 const HSpace& filespace_id, hid_t plist);
425 herr_t write(hid_t native_type,
const void* array,
const HSpace& memspace_id,
427 herr_t read(hid_t native_type,
void* array)
429 return H5Dread(
id(), native_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, array);
431 void readWithException(hid_t native_type,
void* array);
433 herr_t setExtent(
const hsize_t new_dims[]);
437 void _remove(hid_t hid,
const String& var);
471 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
478 void remove(
const Hid& loc_id,
const String& var)
480 _setId(H5Adelete(loc_id.id(), var.
localstr()));
482 void create(
const Hid& loc_id,
const String& var, hid_t save_type,
const HSpace& space_id)
484 _setId(H5Acreate2(loc_id.id(), var.
localstr(), save_type, space_id.id(), H5P_DEFAULT, H5P_DEFAULT));
486 void open(
const Hid& loc_id,
const String& var)
488 _setId(H5Aopen_name(loc_id.id(), var.
localstr()));
490 herr_t write(hid_t native_type,
void* array)
492 return H5Awrite(
id(), native_type, array);
494 herr_t read(hid_t native_type,
void* array)
496 return H5Aread(
id(), native_type, array);
500 return HSpace(H5Aget_space(
id()));
536 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
543 void setId(hid_t new_id)
575 ARCANE_DEPRECATED_REASON(
"Y2023: Copy constructor is deprecated. This class has unique ownership")
580 ARCANE_DEPRECATED_REASON(
"Y2023: Copy operator is deprecated. This class has unique ownership")
590 hid_t nativeType(
float)
const {
return H5T_NATIVE_FLOAT; }
591 hid_t nativeType(
double)
const {
return H5T_NATIVE_DOUBLE; }
592 hid_t nativeType(
Real2)
const {
return m_real2_id.id(); }
593 hid_t nativeType(
Real3)
const {
return m_real3_id.id(); }
594 hid_t nativeType(
Real2x2)
const {
return m_real2x2_id.id(); }
595 hid_t nativeType(
Real3x3)
const {
return m_real3x3_id.id(); }
596 hid_t nativeType(
long double)
const {
return H5T_NATIVE_LDOUBLE; }
597 hid_t nativeType(
unsigned int)
const {
return H5T_NATIVE_UINT; }
598 hid_t nativeType(
unsigned long)
const {
return H5T_NATIVE_ULONG; }
599 hid_t nativeType(
unsigned long long)
const {
return H5T_NATIVE_ULLONG; }
600 hid_t nativeType(
int)
const {
return H5T_NATIVE_INT; }
601 hid_t nativeType(
long long)
const {
return H5T_NATIVE_LLONG; }
602 hid_t nativeType(
long)
const {
return H5T_NATIVE_LONG; }
603 hid_t nativeType(
char)
const {
return H5T_NATIVE_CHAR; }
604 hid_t nativeType(
unsigned char)
const {
return H5T_NATIVE_UCHAR; }
605 hid_t nativeType(
signed char)
const {
return H5T_NATIVE_SCHAR; }
606 hid_t nativeType(
unsigned short)
const {
return H5T_NATIVE_USHORT; }
607 hid_t nativeType(
short)
const {
return H5T_NATIVE_SHORT; }
608#ifdef ARCANE_REAL_NOT_BUILTIN
609 hid_t nativeType(Real)
const;
615 hid_t saveType(
float)
const
617 return m_real_id.id();
619 hid_t saveType(
double)
const
621 return m_real_id.id();
623 hid_t saveType(
Real2)
const
625 return m_real2_id.id();
627 hid_t saveType(
Real3)
const
629 return m_real3_id.id();
633 return m_real2x2_id.id();
637 return m_real3x3_id.id();
639 hid_t saveType(
long double)
const
641 return m_real_id.id();
643 hid_t saveType(
short)
const
645 return m_short_id.id();
647 hid_t saveType(
unsigned short)
const
649 return m_ushort_id.id();
651 hid_t saveType(
unsigned int)
const
653 return m_uint_id.id();
655 hid_t saveType(
unsigned long)
const
657 return m_ulong_id.id();
659 hid_t saveType(
unsigned long long)
const
661 return m_ulong_id.id();
663 hid_t saveType(
int)
const
665 return m_int_id.id();
667 hid_t saveType(
long)
const
669 return m_long_id.id();
671 hid_t saveType(
long long)
const
673 return m_long_id.id();
675 hid_t saveType(
char)
const
677 return m_char_id.id();
679 hid_t saveType(
unsigned char)
const
681 return m_uchar_id.id();
683 hid_t saveType(
signed char)
const
685 return m_char_id.id();
687#ifdef ARCANE_REAL_NOT_BUILTIN
688 hid_t saveType(Real)
const
690 return m_real_id.id();
724 void _H5Tinsert(hid_t type,
const char* name, Integer offset, hid_t field_id);
748 void setIdsPath(
const String& ids_path);
751 virtual bool exists()
const;
755 void _write(
const void* buffer, Integer nb_element, hid_t save_type, hid_t native_type);
774template<
typename DataType>
785 bool operator<(
const ValueWithUid& rhs)
const
787 return m_uid < rhs.m_uid;
821template<
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_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_uchar_id
Identifiant HDF des caractères non-signés.
HType m_real2_id
Identifiant HDF pour les Real2.
HType m_char_id
Identifiant HDF des entiers signés.
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.
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.