Utopia 2
Framework for studying models of complex & adaptive systems.
|
Class which handles the conversion of C-types into hdf5types. More...
#include <hdftype.hh>
Public Types | |
using | Base = HDFObject< HDFCategory::datatype > |
using | Variant = std::variant< float, double, long double, int, short int, long int, long long int, unsigned int, unsigned short int, std::size_t, unsigned long long, bool, char, std::vector< float >, std::vector< double >, std::vector< long double >, std::vector< int >, std::vector< short int >, std::vector< long int >, std::vector< long long int >, std::vector< unsigned int >, std::vector< unsigned short int >, std::vector< std::size_t >, std::vector< unsigned long long >, std::vector< char >, std::vector< std::string >, std::string, const char * > |
Public Member Functions | |
bool | is_mutable () const |
Get if the type is mutable or not. | |
auto | type_category () const |
Get the type category of the held type, i.e., scala, string, varlen,... | |
std::size_t | size () const |
Size of the type held in bytes. | |
template<typename T > | |
void | open (T &&object) |
Open the HDF5 type associated with an HDFObject, i.e., a dataset or an attribute. | |
template<typename T > | |
void | open (std::string name, hsize_t typesize) |
Create an HDF datatype corresponding to the C datatype given as template argument. | |
void | close () |
Construct close from the given arguments. | |
virtual bool | is_valid () const override |
Check if the held type identifier is still valid. Primitive types are valid by definition, because we have no control over them and hence they cannot be invalidated. | |
HDFType (HDFType &&other) | |
Construct HDFType from the given arguments by move, deleted, because apparently incompatible with HDF5 C backend. | |
HDFType & | operator= (HDFType &&other) |
Move assign the type. | |
HDFType (const HDFType &other)=default | |
Construct HDFType from the given arguments by copy. | |
HDFType & | operator= (const HDFType &other)=default |
Copy assign type. | |
virtual | ~HDFType () |
Destroy the HDFType object. | |
HDFType () | |
Construct HDFType from by default. | |
template<typename T > | |
HDFType (T &&object_or_size, std::enable_if_t< not std::is_same_v< HDFType, std::decay_t< T > >, int >=0) | |
Construct HDFType from the given arguments. | |
![]() | |
void | swap (HDFObject &other) |
swap the state of the caller with the state of the argument | |
std::string | get_path () const |
Get the name or path object. | |
auto | get_id_object () const |
Get the id object. | |
auto | get_logger () const |
Get the logger object. | |
hid_t | get_C_id () const |
Get the C id object. | |
auto | get_refcount () |
Get the reference count of object. | |
void | close () |
Close function which takes care of correctly closing the object and managing the reference counter. | |
void | bind_to (hid_t id, std::function< herr_t(hid_t) > closing_func, std::string path={}) |
Open the object and bind it to a HDF5 object identified by 'id' with name 'path'. Object should be created beforehand. | |
HDFObject () | |
Construct HDFObject from the given arguments. | |
HDFObject (HDFObject &&other) | |
Construct HDFObject by moving. | |
HDFObject (const HDFObject &other)=default | |
Construct HDFObject by copying another object. | |
HDFObject (hid_t id, std::function< herr_t(hid_t) > closing_func, std::string path={}) | |
Construct HDFObject from the given argument. | |
HDFObject & | operator= (const HDFObject &other) |
Copy assignment operator. | |
HDFObject & | operator= (HDFObject &&other) |
move assignment operator | |
virtual | ~HDFObject () |
Destroy the HDFObject object. Has to be implemented in subclass! | |
Private Attributes | |
bool | _mutable = false |
H5T_class_t | _classid |
Additional Inherited Members | |
![]() | |
static constexpr HDFCategory | category |
Named variable for template arg. | |
![]() | |
HDFIdentifier | _id |
Identifier object that binds an instance of this class to an HDF5 object. | |
std::string | _path |
Name of the object. | |
std::shared_ptr< spdlog::logger > | _log |
pointer to the logger for dataio | |
Class which handles the conversion of C-types into hdf5types.
using Utopia::DataIO::HDFType::Variant = std::variant< float, double, long double, int, short int, long int, long long int, unsigned int, unsigned short int, std::size_t, unsigned long long, bool, char, std::vector< float >, std::vector< double >, std::vector< long double >, std::vector< int >, std::vector< short int >, std::vector< long int >, std::vector< long long int >, std::vector< unsigned int >, std::vector< unsigned short int >, std::vector< std::size_t >, std::vector< unsigned long long >, std::vector< char >, std::vector< std::string >, std::string, const char* > |
|
inline |
Construct HDFType from the given arguments by move, deleted, because apparently incompatible with HDF5 C backend.
Construct HDFType from the given arguments by copy.
|
inlinevirtual |
|
inline |
Construct HDFType from by default.
|
inline |
Construct HDFType from the given arguments.
size | Size of the type underlying the type to be created, or an HDFdataset or attribute to determine the held datatype of |
|
inline |
Construct close from the given arguments.
|
inline |
Check if the held type identifier is still valid. Primitive types are valid by definition, because we have no control over them and hence they cannot be invalidated.
Reimplemented from Utopia::DataIO::HDFObject< HDFCategory::datatype >.
|
inline |
Create an HDF datatype corresponding to the C datatype given as template argument.
T |
object_or_size | size of the datatype in bytes, if not given, automatically determined: containers and strings become variable length size, everything else becomes scalar |
Open the HDF5 type associated with an HDFObject, i.e., a dataset or an attribute.
T |
object |
Copy assign type.
|
inline |
|
inline |
Get the type category of the held type, i.e., scala, string, varlen,...
|
private |