Nektar++
H5.cpp
Go to the documentation of this file.
1////////////////////////////////////////////////////////////////////////////////
2//
3// File: H5.cpp
4//
5// For more information, please see: http://www.nektar.info/
6//
7// The MIT License
8//
9// Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10// Department of Aeronautics, Imperial College London (UK), and Scientific
11// Computing and Imaging Institute, University of Utah (USA).
12//
13// Permission is hereby granted, free of charge, to any person obtaining a
14// copy of this software and associated documentation files (the "Software"),
15// to deal in the Software without restriction, including without limitation
16// the rights to use, copy, modify, merge, publish, distribute, sublicense,
17// and/or sell copies of the Software, and to permit persons to whom the
18// Software is furnished to do so, subject to the following conditions:
19//
20// The above copyright notice and this permission notice shall be included
21// in all copies or substantial portions of the Software.
22//
23// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29// DEALINGS IN THE SOFTWARE.
30//
31// Description: Minimal HDF5 wrapper
32//
33////////////////////////////////////////////////////////////////////////////////
34
37
38#ifdef NEKTAR_USE_MPI
40#endif
41
43{
44
45Object::Object() : m_Id(H5I_INVALID_HID)
46{
47}
48Object::Object(hid_t id) : m_Id(id)
49{
50}
52{
53}
54
55PList::PList() : Object(H5P_DEFAULT)
56{
57}
58PList::PList(hid_t cls) : Object()
59{
60 H5_CONSTRUCT(m_Id, H5Pcreate, (cls));
61}
63{
64 Close();
65}
67{
68 H5_CALL(H5Pclose, (m_Id));
69 m_Id = H5I_INVALID_HID;
70}
71
72/// Default options
74{
75 return PListSharedPtr(new PList());
76}
77
78/// Properties for object creation
80{
81 return PListSharedPtr(new PList(H5P_OBJECT_CREATE));
82}
83
84/// Properties for file creation
86{
87 return PListSharedPtr(new PList(H5P_FILE_CREATE));
88}
89
90/// Properties for file access
92{
93 return PListSharedPtr(new PList(H5P_FILE_ACCESS));
94}
95
96/// Properties for dataset creation
98{
99 return PListSharedPtr(new PList(H5P_DATASET_CREATE));
100}
101
102/// Properties for dataset access
104{
105 return PListSharedPtr(new PList(H5P_DATASET_ACCESS));
106}
107
108/// Properties for raw data transfer
110{
111 return PListSharedPtr(new PList(H5P_DATASET_XFER));
112}
113
114/// Properties for file mounting
116{
117 return PListSharedPtr(new PList(H5P_FILE_MOUNT));
118}
119
120/// Properties for group creation
122{
123 return PListSharedPtr(new PList(H5P_GROUP_CREATE));
124}
125
126/// Properties for group access
128{
129 return PListSharedPtr(new PList(H5P_GROUP_ACCESS));
130}
131
132/// Properties for datatype creation
134{
135 return PListSharedPtr(new PList(H5P_DATATYPE_CREATE));
136}
137
138/// Properties for datatype access
140{
141 return PListSharedPtr(new PList(H5P_DATATYPE_ACCESS));
142}
143
144/// Properties for character encoding when encoding strings or object names
146{
147 return PListSharedPtr(new PList(H5P_STRING_CREATE));
148}
149
150/// Properties for attribute creation
152{
153 return PListSharedPtr(new PList(H5P_ATTRIBUTE_CREATE));
154}
155
156/// Properties governing the object copying process
158{
159 return PListSharedPtr(new PList(H5P_OBJECT_COPY));
160}
161
162/// Properties governing link creation
164{
165 return PListSharedPtr(new PList(H5P_LINK_CREATE));
166}
167
168/// Properties governing link traversal when accessing objects
170{
171 return PListSharedPtr(new PList(H5P_LINK_ACCESS));
172}
173void PList::SetChunk(const std::vector<hsize_t> &dims)
174{
175 H5_CALL(H5Pset_chunk, (m_Id, dims.size(), &dims[0]));
176}
177void PList::SetDeflate(const unsigned level)
178{
179 H5_CALL(H5Pset_deflate, (m_Id, level));
180}
181#ifdef NEKTAR_USE_MPI
183{
184 H5_CALL(H5Pset_dxpl_mpio, (m_Id, H5FD_MPIO_COLLECTIVE));
185}
187{
188 H5_CALL(H5Pset_dxpl_mpio, (m_Id, H5FD_MPIO_INDEPENDENT));
189}
191{
192 CommMpiSharedPtr mpi_comm = std::dynamic_pointer_cast<CommMpi>(comm);
193 ASSERTL0(mpi_comm, "Can't convert communicator to MPI communicator.")
194 // TODO: accept hints
195 MPI_Info info = MPI_INFO_NULL;
196 H5_CALL(H5Pset_fapl_mpio, (m_Id, mpi_comm->GetComm(), info));
197}
198#else
200{
201 ASSERTL0(false, "Trying to use parallel HDF5 without MPI!");
202}
204{
205 ASSERTL0(false, "Trying to use parallel HDF5 without MPI!");
206}
208{
209 ASSERTL0(false, "Trying to use parallel HDF5 without MPI!");
210}
211#endif
212
214 PListSharedPtr createPL,
215 PListSharedPtr accessPL)
216{
217 hid_t grp;
218 H5_CONSTRUCT(grp, H5Gcreate2,
219 (m_Id, name.c_str(), H5P_DEFAULT, createPL->GetId(),
220 accessPL->GetId()));
221 GroupSharedPtr ans(new Group(grp));
222 return ans;
223}
224
227 DataSpaceSharedPtr space,
228 PListSharedPtr createPL,
229 PListSharedPtr accessPL)
230{
231 hid_t ds;
232 H5_CONSTRUCT(ds, H5Dcreate2,
233 (m_Id, name.c_str(), type->GetId(), space->GetId(),
234 H5P_DEFAULT, createPL->GetId(), accessPL->GetId()));
235
236 DataSetSharedPtr ans(new DataSet(ds));
237 return ans;
238}
239
240// Open an existing group.
241// The accessPL can be omitted to use the defaults
243 PListSharedPtr accessPL) const
244{
245 hid_t grp;
246 H5_CONSTRUCT(grp, H5Gopen2, (m_Id, name.c_str(), accessPL->GetId()));
247 GroupSharedPtr ans(new Group(grp));
248 return ans;
249}
250
251// Open an existing dataset
252// The accessPL can be omitted to use the defaults
254 const std::string &name, PListSharedPtr accessPL) const
255{
256 hid_t ds;
257 H5_CONSTRUCT(ds, H5Dopen2, (m_Id, name.c_str(), accessPL->GetId()));
258 DataSetSharedPtr ans(new DataSet(ds));
259 return ans;
260}
261
263{
264 for (auto it = begin(); it != end(); ++it)
265 {
266 if (it.GetName() == nm)
267 {
268 return true;
269 }
270 }
271 return false;
272}
273
275{
276 // Have to use dynamic because of virtual inheritance
278 std::dynamic_pointer_cast<CanHaveGroupsDataSets>(shared_from_this());
280}
281
283{
284 // Have to use dynamic because of virtual inheritance
286 std::dynamic_pointer_cast<CanHaveGroupsDataSets>(shared_from_this());
287 return CanHaveGroupsDataSets::LinkIterator(thisSh, GetNumElements());
288}
289
291 CanHaveGroupsDataSetsSharedPtr grp, hsize_t idx)
292 : m_grp(grp), m_idx(-1), m_next(idx), m_size(grp->GetNumElements())
293{
294 ++*this;
295}
296
298{
299 return m_currentName;
300}
303{
304 m_idx = m_next;
305 if (m_idx < m_size)
306 {
307 H5_CALL(H5Literate, (m_grp->GetId(), H5_INDEX_NAME, H5_ITER_NATIVE,
308 &m_next, LinkIterator::helper, this));
309 }
310 return *this;
311}
313 const CanHaveGroupsDataSets::LinkIterator &other) const
314{
315 return (m_grp == other.m_grp && m_idx == other.m_idx);
316}
318 [[maybe_unused]] hid_t g_id, const char *name,
319 [[maybe_unused]] const H5L_info_t *info, void *op_data)
320{
322 static_cast<CanHaveGroupsDataSets::LinkIterator *>(op_data);
323 iter->m_currentName = name;
324 return 1;
325}
326
329 DataSpaceSharedPtr space)
330{
331 return Attribute::Create(m_Id, name, type, space);
332}
333
335{
336 return Attribute::Open(m_Id, name);
337}
338
340{
341 H5O_info_t info;
342 H5_CALL(H5Oget_info, (m_Id, &info));
343 return info.num_attrs;
344}
345
347{
348 // Have to use dynamic because of virtual inheritance
350 std::dynamic_pointer_cast<CanHaveAttributes>(shared_from_this());
351 return CanHaveAttributes::AttrIterator(thisSh);
352}
354{
355 // Have to use dynamic because of virtual inheritance
357 std::dynamic_pointer_cast<CanHaveAttributes>(shared_from_this());
358 return CanHaveAttributes::AttrIterator(thisSh, GetNumAttr());
359}
360
362 hsize_t idx)
363 : m_obj(obj), m_idx(-1), m_next(idx), m_size(obj->GetNumAttr())
364{
365 ++*this;
366}
367
369{
370 return m_currentName;
371}
373{
374 m_idx = m_next;
375 if (m_next < m_size)
376 {
377 H5_CALL(H5Aiterate2, (m_obj->GetId(), H5_INDEX_CRT_ORDER, H5_ITER_INC,
378 &m_next, AttrIterator::helper, this));
379 }
380 return *this;
381}
383 const CanHaveAttributes::AttrIterator &other) const
384{
385 return m_obj == other.m_obj && m_idx == other.m_idx;
386}
387
389 [[maybe_unused]] hid_t g_id, const char *name,
390 [[maybe_unused]] const H5A_info_t *info, void *op_data)
391{
393 static_cast<CanHaveAttributes::AttrIterator *>(op_data);
394 iter->m_currentName = name;
395 return 1;
396}
397
399{
401 H5_CONSTRUCT(ans->m_Id, H5Screate, (H5S_NULL));
402 return ans;
403}
404
406{
408 H5_CONSTRUCT(ans->m_Id, H5Screate, (H5S_SCALAR));
409 return ans;
410}
412{
414 H5_CONSTRUCT(ans->m_Id, H5Screate_simple, (1, &size, nullptr));
415 return ans;
416}
417
419{
420}
421
423{
424}
425
426DataSpace::DataSpace(const std::vector<hsize_t> &dims) : Object()
427{
428 int rank = dims.size();
429 H5_CONSTRUCT(m_Id, H5Screate_simple, (rank, &dims[0], nullptr));
430}
431
432DataSpace::DataSpace(const hsize_t size, const hsize_t max) : Object()
433{
434 const hsize_t *max_p = nullptr;
435 if (max != (H5S_UNLIMITED - 1))
436 {
437 max_p = &max;
438 }
439 H5_CONSTRUCT(m_Id, H5Screate_simple, (1, &size, max_p));
440}
441
442DataSpace::DataSpace(const std::vector<hsize_t> &dims,
443 const std::vector<hsize_t> &max_dims)
444 : Object()
445{
446 int rank = dims.size();
447 H5_CONSTRUCT(m_Id, H5Screate_simple, (rank, &dims[0], &max_dims[0]));
448}
449
451{
452 Close();
453}
454
456{
457 H5_CALL(H5Sclose, (m_Id));
458 m_Id = H5I_INVALID_HID;
459}
460void DataSpace::SelectRange(const hsize_t start, const hsize_t count)
461{
462 H5_CALL(H5Sselect_hyperslab,
463 (m_Id, H5S_SELECT_SET, &start, nullptr, &count, nullptr));
464}
465void DataSpace::AppendRange(const hsize_t start, const hsize_t count)
466{
467 H5_CALL(H5Sselect_hyperslab,
468 (m_Id, H5S_SELECT_OR, &start, nullptr, &count, nullptr));
469}
470void DataSpace::SelectRange(const std::vector<hsize_t> start,
471 const std::vector<hsize_t> count)
472{
473 H5_CALL(H5Sselect_hyperslab,
474 (m_Id, H5S_SELECT_SET, &start[0], nullptr, &count[0], nullptr));
475}
476void DataSpace::AppendRange(const std::vector<hsize_t> start,
477 const std::vector<hsize_t> count)
478{
479 H5_CALL(H5Sselect_hyperslab,
480 (m_Id, H5S_SELECT_OR, &start[0], nullptr, &count[0], nullptr));
481}
482void DataSpace::SetSelection(const hsize_t num_elmt,
483 const std::vector<hsize_t> &coords)
484{
485 if (num_elmt == 0)
486 {
487 H5_CALL(H5Sselect_none, (m_Id));
488 }
489 else
490 {
491 H5_CALL(H5Sselect_elements,
492 (m_Id, H5S_SELECT_SET, num_elmt, &coords[0]));
493 }
494}
495
497{
498 H5_CALL(H5Sselect_none, (m_Id));
499}
500
502{
503 return H5Sget_simple_extent_npoints(m_Id);
504}
505
506std::vector<hsize_t> DataSpace::GetDims()
507{
508 int ndims = H5Sget_simple_extent_ndims(m_Id);
509 std::vector<hsize_t> ret(ndims, 0);
510 H5Sget_simple_extent_dims(m_Id, &ret[0], nullptr);
511 return ret;
512}
513
515{
516}
518{
520 DataTypeSharedPtr ans = s1->Copy();
521 if (len == 0)
522 {
523 len = H5T_VARIABLE;
524 }
525 H5_CALL(H5Tset_size, (ans->GetId(), len));
526 return ans;
527}
528
530{
531 H5_CALL(H5Tclose, (m_Id));
532 m_Id = H5I_INVALID_HID;
533}
534
536{
537 H5_CALL(H5Tclose, (m_Id));
538 m_Id = H5I_INVALID_HID;
539}
540
542{
543 hid_t ans_id = H5I_INVALID_HID;
544 H5_CONSTRUCT(ans_id, H5Tcopy, (m_Id));
545 DataTypeSharedPtr ans(new DataType(ans_id));
546 return ans;
547}
548
550{
551 return DataTypeSharedPtr(new PredefinedDataType(H5T_C_S1));
552}
553
555{
556 return std::shared_ptr<CompoundDataType>(
557 new CompoundDataType(H5Tcreate(H5T_COMPOUND, sz)));
558}
559
561{
562}
563
565{
566}
567
569{
570 // No-op
571 m_Id = H5I_INVALID_HID;
572}
573
574template <> const hid_t DataTypeTraits<char>::NativeType = H5T_NATIVE_CHAR;
575
576template <> const hid_t DataTypeTraits<int>::NativeType = H5T_NATIVE_INT;
577
578template <>
579const hid_t DataTypeTraits<unsigned int>::NativeType = H5T_NATIVE_UINT;
580
581template <>
582const hid_t DataTypeTraits<unsigned long>::NativeType = H5T_NATIVE_ULONG;
583
584template <>
586
587template <> const hid_t DataTypeTraits<double>::NativeType = H5T_NATIVE_DOUBLE;
588
589template <> const hid_t DataTypeTraits<BasisType>::NativeType = H5T_NATIVE_INT;
590
591AttributeSharedPtr Attribute::Create(hid_t parent, const std::string &name,
593 DataSpaceSharedPtr space)
594{
595 hid_t id;
596 H5_CONSTRUCT(id, H5Acreate2,
597 (parent, name.c_str(), type->GetId(), space->GetId(),
598 H5P_DEFAULT, H5P_DEFAULT));
599 return AttributeSharedPtr(new Attribute(id));
600}
601
602AttributeSharedPtr Attribute::Open(hid_t parent, const std::string &name)
603{
604 hid_t id;
605 H5_CONSTRUCT(id, H5Aopen, (parent, name.c_str(), H5P_DEFAULT));
606 return AttributeSharedPtr(new Attribute(id));
607}
608
610{
611 Close();
612}
614{
615 H5_CALL(H5Aclose, (m_Id));
616 m_Id = H5I_INVALID_HID;
617}
618
620{
621 return DataSpaceSharedPtr(new DataSpace(H5Aget_space(m_Id)));
622}
623
624File::File(hid_t id) : Object(id)
625{
626}
627FileSharedPtr File::Create(const std::string &filename, unsigned mode,
628 PListSharedPtr createPL, PListSharedPtr accessPL)
629{
630 hid_t id;
632 id, H5Fcreate,
633 (filename.c_str(), mode, createPL->GetId(), accessPL->GetId()));
634 return FileSharedPtr(new File(id));
635}
636FileSharedPtr File::Open(const std::string &filename, unsigned mode,
637 PListSharedPtr accessPL)
638{
639 hid_t id;
640 H5_CONSTRUCT(id, H5Fopen, (filename.c_str(), mode, accessPL->GetId()));
641 return FileSharedPtr(new File(id));
642}
643
645{
646 if (m_Id != H5I_INVALID_HID)
647 {
648 Close();
649 }
650}
651
653{
654 H5_CALL(H5Fclose, (m_Id));
655 m_Id = H5I_INVALID_HID;
656}
658{
659 GroupSharedPtr root = OpenGroup("/");
660 return root->GetNumElements();
661}
662Group::Group(hid_t id) : Object(id)
663{
664}
665
667{
668 if (m_Id != H5I_INVALID_HID)
669 {
670 Close();
671 }
672}
673
675{
676 H5_CALL(H5Gclose, (m_Id));
677 m_Id = H5I_INVALID_HID;
678}
679
681{
682 H5G_info_t info;
683 H5_CALL(H5Gget_info, (m_Id, &info));
684 return info.nlinks;
685}
686
687std::vector<std::string> Group::GetElementNames()
688{
689 std::vector<std::string> ret;
690 for (int i = 0; i < GetNumElements(); i++)
691 {
692 char name[50];
693 H5Gget_objname_by_idx(m_Id, (size_t)i, name, 50);
694 ret.push_back(std::string(name));
695 }
696 return ret;
697}
698
700{
701}
702
704{
705 Close();
706}
707
709{
710 H5_CALL(H5Dclose, (m_Id));
711 m_Id = H5I_INVALID_HID;
712}
713
715{
716 return DataSpaceSharedPtr(new DataSpace(H5Dget_space(m_Id)));
717}
718} // namespace Nektar::LibUtilities::H5
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:208
#define H5_CALL(func, args)
Definition: H5.h:58
#define H5_CONSTRUCT(ans, func, args)
Definition: H5.h:50
static AttributeSharedPtr Open(hid_t parent, const std::string &name)
Definition: H5.cpp:602
DataSpaceSharedPtr GetSpace() const
Definition: H5.cpp:619
static AttributeSharedPtr Create(hid_t parent, const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space)
Definition: H5.cpp:591
bool operator==(const AttrIterator &other) const
Definition: H5.cpp:382
static herr_t helper(hid_t g_id, const char *name, const H5A_info_t *info, void *op_data)
Definition: H5.cpp:388
AttrIterator(CanHaveAttributesSharedPtr obj, hsize_t idx=0)
Definition: H5.cpp:361
AttributeSharedPtr OpenAttribute(const std::string &name)
Definition: H5.cpp:334
AttributeSharedPtr CreateAttribute(const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space)
Definition: H5.cpp:327
GroupSharedPtr OpenGroup(const std::string &name, PListSharedPtr accessPL=PList::Default()) const
Definition: H5.cpp:242
DataSetSharedPtr OpenDataSet(const std::string &name, PListSharedPtr accessPL=PList::Default()) const
Definition: H5.cpp:253
GroupSharedPtr CreateGroup(const std::string &name, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:213
DataSetSharedPtr CreateDataSet(const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:225
static CompoundDataTypeSharedPtr Create(size_t sz)
Definition: H5.cpp:554
DataSpaceSharedPtr GetSpace() const
Definition: H5.cpp:714
void v_Close() override
Definition: H5.cpp:708
HDF5 DataSpace wrapper.
Definition: H5.h:309
void SelectRange(const hsize_t start, const hsize_t count)
Definition: H5.cpp:460
void AppendRange(const hsize_t start, const hsize_t count)
Definition: H5.cpp:465
static DataSpaceSharedPtr Null()
Definition: H5.cpp:398
static DataSpaceSharedPtr Scalar()
Definition: H5.cpp:405
std::vector< hsize_t > GetDims()
Definition: H5.cpp:506
static DataSpaceSharedPtr OneD(hsize_t size)
Definition: H5.cpp:411
void SetSelection(const hsize_t num_elmt, const std::vector< hsize_t > &coords)
Definition: H5.cpp:482
Wrap and HDF5 data type object. Technically this can have attributes, but not really bothered.
Definition: H5.h:393
DataTypeSharedPtr Copy() const
Definition: H5.cpp:541
static DataTypeSharedPtr String(size_t len=0)
Definition: H5.cpp:517
static FileSharedPtr Open(const std::string &filename, unsigned mode, PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:636
static FileSharedPtr Create(const std::string &filename, unsigned mode, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:627
hsize_t v_GetNumElements() override
Definition: H5.cpp:657
void v_Close() override
Definition: H5.cpp:652
HDF5 Group wrapper.
Definition: H5.h:487
std::vector< std::string > GetElementNames()
Definition: H5.cpp:687
hsize_t v_GetNumElements() override
Definition: H5.cpp:680
void v_Close() override
Definition: H5.cpp:674
HDF5 base class.
Definition: H5.h:96
static PListSharedPtr ObjectCreate()
Properties for object creation.
Definition: H5.cpp:79
static PListSharedPtr DatasetXfer()
Properties for raw data transfer.
Definition: H5.cpp:109
static PListSharedPtr StringCreate()
Properties for character encoding when encoding strings or object names.
Definition: H5.cpp:145
static PListSharedPtr FileAccess()
Properties for file access.
Definition: H5.cpp:91
void SetMpio(CommSharedPtr comm)
Definition: H5.cpp:207
void SetDeflate(const unsigned level=1)
Definition: H5.cpp:177
static PListSharedPtr FileCreate()
Properties for file creation.
Definition: H5.cpp:85
static PListSharedPtr GroupAccess()
Properties for group access.
Definition: H5.cpp:127
static PListSharedPtr DatasetAccess()
Properties for dataset access.
Definition: H5.cpp:103
static PListSharedPtr Default()
Default options.
Definition: H5.cpp:73
static PListSharedPtr FileMount()
Properties for file mounting.
Definition: H5.cpp:115
static PListSharedPtr ObjectCopy()
Properties governing the object copying process.
Definition: H5.cpp:157
static PListSharedPtr DatasetCreate()
Properties for dataset creation.
Definition: H5.cpp:97
static PListSharedPtr GroupCreate()
Properties for group creation.
Definition: H5.cpp:121
void SetChunk(const std::vector< hsize_t > &dims)
Definition: H5.cpp:173
static PListSharedPtr AttributeCreate()
Properties for attribute creation.
Definition: H5.cpp:151
static PListSharedPtr LinkAccess()
Properties governing link traversal when accessing objects.
Definition: H5.cpp:169
static PListSharedPtr LinkCreate()
Properties governing link creation.
Definition: H5.cpp:163
static PListSharedPtr DatatypeCreate()
Properties for datatype creation.
Definition: H5.cpp:133
static PListSharedPtr DatatypeAccess()
Properties for datatype access.
Definition: H5.cpp:139
void v_Close() override
Definition: H5.cpp:66
static DataTypeSharedPtr CS1()
Definition: H5.cpp:549
std::shared_ptr< DataSpace > DataSpaceSharedPtr
Definition: H5.h:78
std::shared_ptr< PList > PListSharedPtr
Definition: H5.h:92
std::shared_ptr< File > FileSharedPtr
Definition: H5.h:88
std::shared_ptr< DataType > DataTypeSharedPtr
Definition: H5.h:74
std::shared_ptr< CanHaveGroupsDataSets > CanHaveGroupsDataSetsSharedPtr
Definition: H5.h:84
std::shared_ptr< Attribute > AttributeSharedPtr
Definition: H5.h:82
std::shared_ptr< CompoundDataType > CompoundDataTypeSharedPtr
Definition: H5.h:76
std::shared_ptr< CanHaveAttributes > CanHaveAttributesSharedPtr
Definition: H5.h:80
std::shared_ptr< Group > GroupSharedPtr
Definition: FieldIOHdf5.h:48
std::shared_ptr< DataSet > DataSetSharedPtr
Definition: H5.h:90
std::shared_ptr< CommMpi > CommMpiSharedPtr
Pointer to a Communicator object.
Definition: CommMpi.h:56
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
Definition: Comm.h:55
Traits class for HDF5 data types.
Definition: H5.h:363