Nektar++
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Friends | List of all members
Nektar::LibUtilities::H5::DataSpace Class Reference

HDF5 DataSpace wrapper. More...

#include <H5.h>

Inheritance diagram for Nektar::LibUtilities::H5::DataSpace:
[legend]

Public Member Functions

 DataSpace ()
 
 DataSpace (hsize_t size, hsize_t max=H5S_UNLIMITED - 1)
 
 DataSpace (const std::vector< hsize_t > &dims)
 
 DataSpace (const std::vector< hsize_t > &dims, const std::vector< hsize_t > &max_dims)
 
 ~DataSpace () override
 
void SelectRange (const hsize_t start, const hsize_t count)
 
void AppendRange (const hsize_t start, const hsize_t count)
 
void SelectRange (const std::vector< hsize_t > start, const std::vector< hsize_t > count)
 
void AppendRange (const std::vector< hsize_t > start, const std::vector< hsize_t > count)
 
void SetSelection (const hsize_t num_elmt, const std::vector< hsize_t > &coords)
 
void ClearRange ()
 
hsize_t GetSize ()
 
std::vector< hsize_t > GetDims ()
 
- Public Member Functions inherited from Nektar::LibUtilities::H5::Object
void Close ()
 
hid_t GetId () const
 
 operator hid_t () const
 

Static Public Member Functions

static DataSpaceSharedPtr Null ()
 
static DataSpaceSharedPtr Scalar ()
 
static DataSpaceSharedPtr OneD (hsize_t size)
 

Protected Member Functions

void v_Close () override
 
- Protected Member Functions inherited from Nektar::LibUtilities::H5::Object
 Object ()
 
 Object (hid_t id)
 
virtual ~Object ()
 
virtual void v_Close ()=0
 

Private Member Functions

 DataSpace (hid_t id)
 

Friends

class Attribute
 
class DataSet
 

Additional Inherited Members

- Protected Attributes inherited from Nektar::LibUtilities::H5::Object
hid_t m_Id
 

Detailed Description

HDF5 DataSpace wrapper.

Definition at line 308 of file H5.h.

Constructor & Destructor Documentation

◆ DataSpace() [1/5]

Nektar::LibUtilities::H5::DataSpace::DataSpace ( )

Definition at line 418 of file H5.cpp.

418 : Object()
419{
420}

◆ DataSpace() [2/5]

Nektar::LibUtilities::H5::DataSpace::DataSpace ( hsize_t  size,
hsize_t  max = H5S_UNLIMITED - 1 
)

Definition at line 432 of file H5.cpp.

432 : 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}
#define H5_CONSTRUCT(ans, func, args)
Definition: H5.h:50

References H5_CONSTRUCT, and Nektar::LibUtilities::H5::Object::m_Id.

◆ DataSpace() [3/5]

Nektar::LibUtilities::H5::DataSpace::DataSpace ( const std::vector< hsize_t > &  dims)

Definition at line 426 of file H5.cpp.

426 : Object()
427{
428 int rank = dims.size();
429 H5_CONSTRUCT(m_Id, H5Screate_simple, (rank, &dims[0], nullptr));
430}

References H5_CONSTRUCT, and Nektar::LibUtilities::H5::Object::m_Id.

◆ DataSpace() [4/5]

Nektar::LibUtilities::H5::DataSpace::DataSpace ( const std::vector< hsize_t > &  dims,
const std::vector< hsize_t > &  max_dims 
)

Definition at line 442 of file H5.cpp.

444 : Object()
445{
446 int rank = dims.size();
447 H5_CONSTRUCT(m_Id, H5Screate_simple, (rank, &dims[0], &max_dims[0]));
448}

References H5_CONSTRUCT, and Nektar::LibUtilities::H5::Object::m_Id.

◆ ~DataSpace()

Nektar::LibUtilities::H5::DataSpace::~DataSpace ( )
override

Definition at line 450 of file H5.cpp.

451{
452 Close();
453}

References Nektar::LibUtilities::H5::Object::Close().

◆ DataSpace() [5/5]

Nektar::LibUtilities::H5::DataSpace::DataSpace ( hid_t  id)
private

Definition at line 422 of file H5.cpp.

422 : Object(id)
423{
424}

Member Function Documentation

◆ AppendRange() [1/2]

void Nektar::LibUtilities::H5::DataSpace::AppendRange ( const hsize_t  start,
const hsize_t  count 
)

Definition at line 465 of file H5.cpp.

466{
467 H5_CALL(H5Sselect_hyperslab,
468 (m_Id, H5S_SELECT_OR, &start, nullptr, &count, nullptr));
469}
#define H5_CALL(func, args)
Definition: H5.h:58

References H5_CALL, and Nektar::LibUtilities::H5::Object::m_Id.

◆ AppendRange() [2/2]

void Nektar::LibUtilities::H5::DataSpace::AppendRange ( const std::vector< hsize_t >  start,
const std::vector< hsize_t >  count 
)

Definition at line 476 of file H5.cpp.

478{
479 H5_CALL(H5Sselect_hyperslab,
480 (m_Id, H5S_SELECT_OR, &start[0], nullptr, &count[0], nullptr));
481}

References H5_CALL, and Nektar::LibUtilities::H5::Object::m_Id.

◆ ClearRange()

void Nektar::LibUtilities::H5::DataSpace::ClearRange ( )

Definition at line 496 of file H5.cpp.

497{
498 H5_CALL(H5Sselect_none, (m_Id));
499}

References H5_CALL, and Nektar::LibUtilities::H5::Object::m_Id.

◆ GetDims()

std::vector< hsize_t > Nektar::LibUtilities::H5::DataSpace::GetDims ( )

Definition at line 506 of file H5.cpp.

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}

References Nektar::LibUtilities::H5::Object::m_Id.

◆ GetSize()

hsize_t Nektar::LibUtilities::H5::DataSpace::GetSize ( )

Definition at line 501 of file H5.cpp.

502{
503 return H5Sget_simple_extent_npoints(m_Id);
504}

References Nektar::LibUtilities::H5::Object::m_Id.

◆ Null()

DataSpaceSharedPtr Nektar::LibUtilities::H5::DataSpace::Null ( )
static

Definition at line 398 of file H5.cpp.

399{
401 H5_CONSTRUCT(ans->m_Id, H5Screate, (H5S_NULL));
402 return ans;
403}
std::shared_ptr< DataSpace > DataSpaceSharedPtr
Definition: H5.h:78

References H5_CONSTRUCT.

◆ OneD()

DataSpaceSharedPtr Nektar::LibUtilities::H5::DataSpace::OneD ( hsize_t  size)
static

◆ Scalar()

DataSpaceSharedPtr Nektar::LibUtilities::H5::DataSpace::Scalar ( )
static

Definition at line 405 of file H5.cpp.

406{
408 H5_CONSTRUCT(ans->m_Id, H5Screate, (H5S_SCALAR));
409 return ans;
410}

References H5_CONSTRUCT.

Referenced by Nektar::LibUtilities::H5::CanHaveAttributes::GetAttribute(), and Nektar::LibUtilities::H5::CanHaveAttributes::SetAttribute().

◆ SelectRange() [1/2]

void Nektar::LibUtilities::H5::DataSpace::SelectRange ( const hsize_t  start,
const hsize_t  count 
)

Definition at line 460 of file H5.cpp.

461{
462 H5_CALL(H5Sselect_hyperslab,
463 (m_Id, H5S_SELECT_SET, &start, nullptr, &count, nullptr));
464}

References H5_CALL, and Nektar::LibUtilities::H5::Object::m_Id.

◆ SelectRange() [2/2]

void Nektar::LibUtilities::H5::DataSpace::SelectRange ( const std::vector< hsize_t >  start,
const std::vector< hsize_t >  count 
)

Definition at line 470 of file H5.cpp.

472{
473 H5_CALL(H5Sselect_hyperslab,
474 (m_Id, H5S_SELECT_SET, &start[0], nullptr, &count[0], nullptr));
475}

References H5_CALL, and Nektar::LibUtilities::H5::Object::m_Id.

◆ SetSelection()

void Nektar::LibUtilities::H5::DataSpace::SetSelection ( const hsize_t  num_elmt,
const std::vector< hsize_t > &  coords 
)

Definition at line 482 of file H5.cpp.

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}

References H5_CALL, and Nektar::LibUtilities::H5::Object::m_Id.

◆ v_Close()

void Nektar::LibUtilities::H5::DataSpace::v_Close ( )
overrideprotectedvirtual

Implements Nektar::LibUtilities::H5::Object.

Definition at line 455 of file H5.cpp.

456{
457 H5_CALL(H5Sclose, (m_Id));
458 m_Id = H5I_INVALID_HID;
459}

References H5_CALL, and Nektar::LibUtilities::H5::Object::m_Id.

Friends And Related Function Documentation

◆ Attribute

friend class Attribute
friend

Definition at line 343 of file H5.h.

◆ DataSet

friend class DataSet
friend

Definition at line 344 of file H5.h.