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
35#include <boost/core/ignore_unused.hpp>
36
39
40#ifdef NEKTAR_USE_MPI
42#endif
43
44namespace Nektar
45{
46namespace LibUtilities
47{
48namespace H5
49{
50
51Object::Object() : m_Id(H5I_INVALID_HID)
52{
53}
54Object::Object(hid_t id) : m_Id(id)
55{
56}
58{
59}
60
61PList::PList() : Object(H5P_DEFAULT)
62{
63}
64PList::PList(hid_t cls) : Object()
65{
66 H5_CONSTRUCT(m_Id, H5Pcreate, (cls));
67}
69{
70 Close();
71}
73{
74 H5_CALL(H5Pclose, (m_Id));
75 m_Id = H5I_INVALID_HID;
76}
77
78/// Default options
80{
81 return PListSharedPtr(new PList());
82}
83
84/// Properties for object creation
86{
87 return PListSharedPtr(new PList(H5P_OBJECT_CREATE));
88}
89
90/// Properties for file creation
92{
93 return PListSharedPtr(new PList(H5P_FILE_CREATE));
94}
95
96/// Properties for file access
98{
99 return PListSharedPtr(new PList(H5P_FILE_ACCESS));
100}
101
102/// Properties for dataset creation
104{
105 return PListSharedPtr(new PList(H5P_DATASET_CREATE));
106}
107
108/// Properties for dataset access
110{
111 return PListSharedPtr(new PList(H5P_DATASET_ACCESS));
112}
113
114/// Properties for raw data transfer
116{
117 return PListSharedPtr(new PList(H5P_DATASET_XFER));
118}
119
120/// Properties for file mounting
122{
123 return PListSharedPtr(new PList(H5P_FILE_MOUNT));
124}
125
126/// Properties for group creation
128{
129 return PListSharedPtr(new PList(H5P_GROUP_CREATE));
130}
131
132/// Properties for group access
134{
135 return PListSharedPtr(new PList(H5P_GROUP_ACCESS));
136}
137
138/// Properties for datatype creation
140{
141 return PListSharedPtr(new PList(H5P_DATATYPE_CREATE));
142}
143
144/// Properties for datatype access
146{
147 return PListSharedPtr(new PList(H5P_DATATYPE_ACCESS));
148}
149
150/// Properties for character encoding when encoding strings or object names
152{
153 return PListSharedPtr(new PList(H5P_STRING_CREATE));
154}
155
156/// Properties for attribute creation
158{
159 return PListSharedPtr(new PList(H5P_ATTRIBUTE_CREATE));
160}
161
162/// Properties governing the object copying process
164{
165 return PListSharedPtr(new PList(H5P_OBJECT_COPY));
166}
167
168/// Properties governing link creation
170{
171 return PListSharedPtr(new PList(H5P_LINK_CREATE));
172}
173
174/// Properties governing link traversal when accessing objects
176{
177 return PListSharedPtr(new PList(H5P_LINK_ACCESS));
178}
179void PList::SetChunk(const std::vector<hsize_t> &dims)
180{
181 H5_CALL(H5Pset_chunk, (m_Id, dims.size(), &dims[0]));
182}
183void PList::SetDeflate(const unsigned level)
184{
185 H5_CALL(H5Pset_deflate, (m_Id, level));
186}
187#ifdef NEKTAR_USE_MPI
189{
190 H5_CALL(H5Pset_dxpl_mpio, (m_Id, H5FD_MPIO_COLLECTIVE));
191}
193{
194 H5_CALL(H5Pset_dxpl_mpio, (m_Id, H5FD_MPIO_INDEPENDENT));
195}
197{
198 CommMpiSharedPtr mpi_comm = std::dynamic_pointer_cast<CommMpi>(comm);
199 ASSERTL0(mpi_comm, "Can't convert communicator to MPI communicator.")
200 // TODO: accept hints
201 MPI_Info info = MPI_INFO_NULL;
202 H5_CALL(H5Pset_fapl_mpio, (m_Id, mpi_comm->GetComm(), info));
203}
204#else
206{
207 ASSERTL0(false, "Trying to use parallel HDF5 without MPI!");
208}
210{
211 ASSERTL0(false, "Trying to use parallel HDF5 without MPI!");
212}
214{
215 ASSERTL0(false, "Trying to use parallel HDF5 without MPI!");
216}
217#endif
218
220 PListSharedPtr createPL,
221 PListSharedPtr accessPL)
222{
223 hid_t grp;
224 H5_CONSTRUCT(grp, H5Gcreate2,
225 (m_Id, name.c_str(), H5P_DEFAULT, createPL->GetId(),
226 accessPL->GetId()));
227 GroupSharedPtr ans(new Group(grp));
228 return ans;
229}
230
233 DataSpaceSharedPtr space,
234 PListSharedPtr createPL,
235 PListSharedPtr accessPL)
236{
237 hid_t ds;
238 H5_CONSTRUCT(ds, H5Dcreate2,
239 (m_Id, name.c_str(), type->GetId(), space->GetId(),
240 H5P_DEFAULT, createPL->GetId(), accessPL->GetId()));
241
242 DataSetSharedPtr ans(new DataSet(ds));
243 return ans;
244}
245
246// Open an existing group.
247// The accessPL can be omitted to use the defaults
249 PListSharedPtr accessPL) const
250{
251 hid_t grp;
252 H5_CONSTRUCT(grp, H5Gopen2, (m_Id, name.c_str(), accessPL->GetId()));
253 GroupSharedPtr ans(new Group(grp));
254 return ans;
255}
256
257// Open an existing dataset
258// The accessPL can be omitted to use the defaults
260 const std::string &name, PListSharedPtr accessPL) const
261{
262 hid_t ds;
263 H5_CONSTRUCT(ds, H5Dopen2, (m_Id, name.c_str(), accessPL->GetId()));
264 DataSetSharedPtr ans(new DataSet(ds));
265 return ans;
266}
267
269{
270 for (auto it = begin(); it != end(); ++it)
271 {
272 if (it.GetName() == nm)
273 {
274 return true;
275 }
276 }
277 return false;
278}
279
281{
282 // Have to use dynamic because of virtual inheritance
284 std::dynamic_pointer_cast<CanHaveGroupsDataSets>(shared_from_this());
286}
287
289{
290 // Have to use dynamic because of virtual inheritance
292 std::dynamic_pointer_cast<CanHaveGroupsDataSets>(shared_from_this());
293 return CanHaveGroupsDataSets::LinkIterator(thisSh, GetNumElements());
294}
295
297 CanHaveGroupsDataSetsSharedPtr grp, hsize_t idx)
298 : m_grp(grp), m_idx(-1), m_next(idx), m_size(grp->GetNumElements())
299{
300 ++*this;
301}
302
304{
305 return m_currentName;
306}
309{
310 m_idx = m_next;
311 if (m_idx < m_size)
312 {
313 H5_CALL(H5Literate, (m_grp->GetId(), H5_INDEX_NAME, H5_ITER_NATIVE,
314 &m_next, LinkIterator::helper, this));
315 }
316 return *this;
317}
319 const CanHaveGroupsDataSets::LinkIterator &other) const
320{
321 return (m_grp == other.m_grp && m_idx == other.m_idx);
322}
324 const H5L_info_t *info,
325 void *op_data)
326{
327 boost::ignore_unused(g_id, info);
329 static_cast<CanHaveGroupsDataSets::LinkIterator *>(op_data);
330 iter->m_currentName = name;
331 return 1;
332}
333
336 DataSpaceSharedPtr space)
337{
338 return Attribute::Create(m_Id, name, type, space);
339}
340
342{
343 return Attribute::Open(m_Id, name);
344}
345
347{
348 H5O_info_t info;
349 H5_CALL(H5Oget_info, (m_Id, &info));
350 return info.num_attrs;
351}
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);
359}
361{
362 // Have to use dynamic because of virtual inheritance
364 std::dynamic_pointer_cast<CanHaveAttributes>(shared_from_this());
365 return CanHaveAttributes::AttrIterator(thisSh, GetNumAttr());
366}
367
369 hsize_t idx)
370 : m_obj(obj), m_idx(-1), m_next(idx), m_size(obj->GetNumAttr())
371{
372 ++*this;
373}
374
376{
377 return m_currentName;
378}
380{
381 m_idx = m_next;
382 if (m_next < m_size)
383 {
384 H5_CALL(H5Aiterate2, (m_obj->GetId(), H5_INDEX_CRT_ORDER, H5_ITER_INC,
385 &m_next, AttrIterator::helper, this));
386 }
387 return *this;
388}
390 const CanHaveAttributes::AttrIterator &other) const
391{
392 return m_obj == other.m_obj && m_idx == other.m_idx;
393}
394
395herr_t CanHaveAttributes::AttrIterator::helper(hid_t g_id, const char *name,
396 const H5A_info_t *info,
397 void *op_data)
398{
399 boost::ignore_unused(g_id, info);
401 static_cast<CanHaveAttributes::AttrIterator *>(op_data);
402 iter->m_currentName = name;
403 return 1;
404}
405
407{
409 H5_CONSTRUCT(ans->m_Id, H5Screate, (H5S_NULL));
410 return ans;
411}
412
414{
416 H5_CONSTRUCT(ans->m_Id, H5Screate, (H5S_SCALAR));
417 return ans;
418}
420{
422 H5_CONSTRUCT(ans->m_Id, H5Screate_simple, (1, &size, NULL));
423 return ans;
424}
425
427{
428}
429
431{
432}
433
434DataSpace::DataSpace(const std::vector<hsize_t> &dims) : Object()
435{
436 int rank = dims.size();
437 H5_CONSTRUCT(m_Id, H5Screate_simple, (rank, &dims[0], NULL));
438}
439
440DataSpace::DataSpace(const hsize_t size, const hsize_t max) : Object()
441{
442 const hsize_t *max_p = NULL;
443 if (max != (H5S_UNLIMITED - 1))
444 max_p = &max;
445 H5_CONSTRUCT(m_Id, H5Screate_simple, (1, &size, max_p));
446}
447
448DataSpace::DataSpace(const std::vector<hsize_t> &dims,
449 const std::vector<hsize_t> &max_dims)
450 : Object()
451{
452 int rank = dims.size();
453 H5_CONSTRUCT(m_Id, H5Screate_simple, (rank, &dims[0], &max_dims[0]));
454}
455
457{
458 Close();
459}
460
462{
463 H5_CALL(H5Sclose, (m_Id));
464 m_Id = H5I_INVALID_HID;
465}
466void DataSpace::SelectRange(const hsize_t start, const hsize_t count)
467{
468 H5_CALL(H5Sselect_hyperslab,
469 (m_Id, H5S_SELECT_SET, &start, NULL, &count, NULL));
470}
471void DataSpace::AppendRange(const hsize_t start, const hsize_t count)
472{
473 H5_CALL(H5Sselect_hyperslab,
474 (m_Id, H5S_SELECT_OR, &start, NULL, &count, NULL));
475}
476void DataSpace::SelectRange(const std::vector<hsize_t> start,
477 const std::vector<hsize_t> count)
478{
479 H5_CALL(H5Sselect_hyperslab,
480 (m_Id, H5S_SELECT_SET, &start[0], NULL, &count[0], NULL));
481}
482void DataSpace::AppendRange(const std::vector<hsize_t> start,
483 const std::vector<hsize_t> count)
484{
485 H5_CALL(H5Sselect_hyperslab,
486 (m_Id, H5S_SELECT_OR, &start[0], NULL, &count[0], NULL));
487}
488void DataSpace::SetSelection(const hsize_t num_elmt,
489 const std::vector<hsize_t> &coords)
490{
491 if (num_elmt == 0)
492 {
493 H5_CALL(H5Sselect_none, (m_Id));
494 }
495 else
496 {
497 H5_CALL(H5Sselect_elements,
498 (m_Id, H5S_SELECT_SET, num_elmt, &coords[0]));
499 }
500}
501
503{
504 H5_CALL(H5Sselect_none, (m_Id));
505}
506
508{
509 return H5Sget_simple_extent_npoints(m_Id);
510}
511
512std::vector<hsize_t> DataSpace::GetDims()
513{
514 int ndims = H5Sget_simple_extent_ndims(m_Id);
515 std::vector<hsize_t> ret(ndims, 0);
516 H5Sget_simple_extent_dims(m_Id, &ret[0], NULL);
517 return ret;
518}
519
521{
522}
524{
526 DataTypeSharedPtr ans = s1->Copy();
527 if (len == 0)
528 {
529 len = H5T_VARIABLE;
530 }
531 H5_CALL(H5Tset_size, (ans->GetId(), len));
532 return ans;
533}
534
536{
537 H5_CALL(H5Tclose, (m_Id));
538 m_Id = H5I_INVALID_HID;
539}
540
542{
543 H5_CALL(H5Tclose, (m_Id));
544 m_Id = H5I_INVALID_HID;
545}
546
548{
549 hid_t ans_id = H5I_INVALID_HID;
550 H5_CONSTRUCT(ans_id, H5Tcopy, (m_Id));
551 DataTypeSharedPtr ans(new DataType(ans_id));
552 return ans;
553}
554
556{
557 return DataTypeSharedPtr(new PredefinedDataType(H5T_C_S1));
558}
559
561{
562 return std::shared_ptr<CompoundDataType>(
563 new CompoundDataType(H5Tcreate(H5T_COMPOUND, sz)));
564}
565
567{
568}
569
571{
572}
573
575{
576 // No-op
577 m_Id = H5I_INVALID_HID;
578}
579
580template <> const hid_t DataTypeTraits<char>::NativeType = H5T_NATIVE_CHAR;
581
582template <> const hid_t DataTypeTraits<int>::NativeType = H5T_NATIVE_INT;
583
584template <>
585const hid_t DataTypeTraits<unsigned int>::NativeType = H5T_NATIVE_UINT;
586
587template <>
588const hid_t DataTypeTraits<unsigned long>::NativeType = H5T_NATIVE_ULONG;
589
590template <>
592
593template <> const hid_t DataTypeTraits<double>::NativeType = H5T_NATIVE_DOUBLE;
594
595template <> const hid_t DataTypeTraits<BasisType>::NativeType = H5T_NATIVE_INT;
596
597AttributeSharedPtr Attribute::Create(hid_t parent, const std::string &name,
599 DataSpaceSharedPtr space)
600{
601 hid_t id;
602 H5_CONSTRUCT(id, H5Acreate2,
603 (parent, name.c_str(), type->GetId(), space->GetId(),
604 H5P_DEFAULT, H5P_DEFAULT));
605 return AttributeSharedPtr(new Attribute(id));
606}
607
608AttributeSharedPtr Attribute::Open(hid_t parent, const std::string &name)
609{
610 hid_t id;
611 H5_CONSTRUCT(id, H5Aopen, (parent, name.c_str(), H5P_DEFAULT));
612 return AttributeSharedPtr(new Attribute(id));
613}
614
616{
617 Close();
618}
620{
621 H5_CALL(H5Aclose, (m_Id));
622 m_Id = H5I_INVALID_HID;
623}
624
626{
627 return DataSpaceSharedPtr(new DataSpace(H5Aget_space(m_Id)));
628}
629
630File::File(hid_t id) : Object(id)
631{
632}
633FileSharedPtr File::Create(const std::string &filename, unsigned mode,
634 PListSharedPtr createPL, PListSharedPtr accessPL)
635{
636 hid_t id;
638 id, H5Fcreate,
639 (filename.c_str(), mode, createPL->GetId(), accessPL->GetId()));
640 return FileSharedPtr(new File(id));
641}
642FileSharedPtr File::Open(const std::string &filename, unsigned mode,
643 PListSharedPtr accessPL)
644{
645 hid_t id;
646 H5_CONSTRUCT(id, H5Fopen, (filename.c_str(), mode, accessPL->GetId()));
647 return FileSharedPtr(new File(id));
648}
649
651{
652 if (m_Id != H5I_INVALID_HID)
653 {
654 Close();
655 }
656}
657
659{
660 H5_CALL(H5Fclose, (m_Id));
661 m_Id = H5I_INVALID_HID;
662}
664{
665 GroupSharedPtr root = OpenGroup("/");
666 return root->GetNumElements();
667}
668Group::Group(hid_t id) : Object(id)
669{
670}
671
673{
674 if (m_Id != H5I_INVALID_HID)
675 {
676 Close();
677 }
678}
679
681{
682 H5_CALL(H5Gclose, (m_Id));
683 m_Id = H5I_INVALID_HID;
684}
685
687{
688 H5G_info_t info;
689 H5_CALL(H5Gget_info, (m_Id, &info));
690 return info.nlinks;
691}
692
693std::vector<std::string> Group::GetElementNames()
694{
695 std::vector<std::string> ret;
696 for (int i = 0; i < GetNumElements(); i++)
697 {
698 char name[50];
699 H5Gget_objname_by_idx(m_Id, (size_t)i, name, 50);
700 ret.push_back(std::string(name));
701 }
702 return ret;
703}
704
706{
707}
708
710{
711 Close();
712}
713
715{
716 H5_CALL(H5Dclose, (m_Id));
717 m_Id = H5I_INVALID_HID;
718}
719
721{
722 return DataSpaceSharedPtr(new DataSpace(H5Dget_space(m_Id)));
723}
724} // namespace H5
725} // namespace LibUtilities
726} // namespace Nektar
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:215
#define H5_CALL(func, args)
Definition: H5.h:64
#define H5_CONSTRUCT(ans, func, args)
Definition: H5.h:56
static AttributeSharedPtr Open(hid_t parent, const std::string &name)
Definition: H5.cpp:608
DataSpaceSharedPtr GetSpace() const
Definition: H5.cpp:625
virtual void v_Close() override
Definition: H5.cpp:619
static AttributeSharedPtr Create(hid_t parent, const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space)
Definition: H5.cpp:597
bool operator==(const AttrIterator &other) const
Definition: H5.cpp:389
static herr_t helper(hid_t g_id, const char *name, const H5A_info_t *info, void *op_data)
Definition: H5.cpp:395
AttrIterator(CanHaveAttributesSharedPtr obj, hsize_t idx=0)
Definition: H5.cpp:368
AttributeSharedPtr OpenAttribute(const std::string &name)
Definition: H5.cpp:341
AttributeSharedPtr CreateAttribute(const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space)
Definition: H5.cpp:334
GroupSharedPtr OpenGroup(const std::string &name, PListSharedPtr accessPL=PList::Default()) const
Definition: H5.cpp:248
DataSetSharedPtr OpenDataSet(const std::string &name, PListSharedPtr accessPL=PList::Default()) const
Definition: H5.cpp:259
GroupSharedPtr CreateGroup(const std::string &name, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:219
DataSetSharedPtr CreateDataSet(const std::string &name, DataTypeSharedPtr type, DataSpaceSharedPtr space, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:231
static CompoundDataTypeSharedPtr Create(size_t sz)
Definition: H5.cpp:560
virtual void v_Close() override
Definition: H5.cpp:535
DataSpaceSharedPtr GetSpace() const
Definition: H5.cpp:720
virtual void v_Close() override
Definition: H5.cpp:714
HDF5 DataSpace wrapper.
Definition: H5.h:315
void SelectRange(const hsize_t start, const hsize_t count)
Definition: H5.cpp:466
void AppendRange(const hsize_t start, const hsize_t count)
Definition: H5.cpp:471
virtual void v_Close() override
Definition: H5.cpp:461
static DataSpaceSharedPtr Null()
Definition: H5.cpp:406
static DataSpaceSharedPtr Scalar()
Definition: H5.cpp:413
std::vector< hsize_t > GetDims()
Definition: H5.cpp:512
static DataSpaceSharedPtr OneD(hsize_t size)
Definition: H5.cpp:419
void SetSelection(const hsize_t num_elmt, const std::vector< hsize_t > &coords)
Definition: H5.cpp:488
Wrap and HDF5 data type object. Technically this can have attributes, but not really bothered.
Definition: H5.h:399
virtual void v_Close() override
Definition: H5.cpp:541
DataTypeSharedPtr Copy() const
Definition: H5.cpp:547
static DataTypeSharedPtr String(size_t len=0)
Definition: H5.cpp:523
static FileSharedPtr Open(const std::string &filename, unsigned mode, PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:642
static FileSharedPtr Create(const std::string &filename, unsigned mode, PListSharedPtr createPL=PList::Default(), PListSharedPtr accessPL=PList::Default())
Definition: H5.cpp:633
virtual hsize_t v_GetNumElements() override
Definition: H5.cpp:663
virtual void v_Close() override
Definition: H5.cpp:658
HDF5 Group wrapper.
Definition: H5.h:493
std::vector< std::string > GetElementNames()
Definition: H5.cpp:693
virtual hsize_t v_GetNumElements() override
Definition: H5.cpp:686
virtual void v_Close() override
Definition: H5.cpp:680
HDF5 base class.
Definition: H5.h:102
static PListSharedPtr ObjectCreate()
Properties for object creation.
Definition: H5.cpp:85
static PListSharedPtr DatasetXfer()
Properties for raw data transfer.
Definition: H5.cpp:115
static PListSharedPtr StringCreate()
Properties for character encoding when encoding strings or object names.
Definition: H5.cpp:151
static PListSharedPtr FileAccess()
Properties for file access.
Definition: H5.cpp:97
void SetMpio(CommSharedPtr comm)
Definition: H5.cpp:213
void SetDeflate(const unsigned level=1)
Definition: H5.cpp:183
static PListSharedPtr FileCreate()
Properties for file creation.
Definition: H5.cpp:91
static PListSharedPtr GroupAccess()
Properties for group access.
Definition: H5.cpp:133
static PListSharedPtr DatasetAccess()
Properties for dataset access.
Definition: H5.cpp:109
static PListSharedPtr Default()
Default options.
Definition: H5.cpp:79
static PListSharedPtr FileMount()
Properties for file mounting.
Definition: H5.cpp:121
static PListSharedPtr ObjectCopy()
Properties governing the object copying process.
Definition: H5.cpp:163
static PListSharedPtr DatasetCreate()
Properties for dataset creation.
Definition: H5.cpp:103
static PListSharedPtr GroupCreate()
Properties for group creation.
Definition: H5.cpp:127
void SetChunk(const std::vector< hsize_t > &dims)
Definition: H5.cpp:179
static PListSharedPtr AttributeCreate()
Properties for attribute creation.
Definition: H5.cpp:157
static PListSharedPtr LinkAccess()
Properties governing link traversal when accessing objects.
Definition: H5.cpp:175
static PListSharedPtr LinkCreate()
Properties governing link creation.
Definition: H5.cpp:169
static PListSharedPtr DatatypeCreate()
Properties for datatype creation.
Definition: H5.cpp:139
static PListSharedPtr DatatypeAccess()
Properties for datatype access.
Definition: H5.cpp:145
virtual void v_Close() override
Definition: H5.cpp:72
virtual void v_Close() override
Definition: H5.cpp:574
static DataTypeSharedPtr CS1()
Definition: H5.cpp:555
std::shared_ptr< DataSpace > DataSpaceSharedPtr
Definition: H5.h:84
std::shared_ptr< PList > PListSharedPtr
Definition: H5.h:98
std::shared_ptr< File > FileSharedPtr
Definition: H5.h:94
std::shared_ptr< DataType > DataTypeSharedPtr
Definition: H5.h:80
std::shared_ptr< CanHaveGroupsDataSets > CanHaveGroupsDataSetsSharedPtr
Definition: H5.h:90
std::shared_ptr< Attribute > AttributeSharedPtr
Definition: H5.h:88
std::shared_ptr< CompoundDataType > CompoundDataTypeSharedPtr
Definition: H5.h:82
std::shared_ptr< CanHaveAttributes > CanHaveAttributesSharedPtr
Definition: H5.h:86
std::shared_ptr< Group > GroupSharedPtr
Definition: FieldIOHdf5.h:50
std::shared_ptr< DataSet > DataSetSharedPtr
Definition: H5.h:96
std::shared_ptr< CommMpi > CommMpiSharedPtr
Pointer to a Communicator object.
Definition: CommMpi.h:58
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
Definition: Comm.h:57
The above copyright notice and this permission notice shall be included.
Definition: CoupledSolver.h:2
Traits class for HDF5 data types.
Definition: H5.h:369