DUECA/DUSIME
|
Template functions and classes to extract HDF5-relevant information about different data types. More...
Functions | |
template<typename T > | |
const H5::DataType * | dueca::get_hdf5_type (const T &t) |
Return the HDF5 datatype. | |
template<typename T > | |
const H5::DataType * | dueca::get_hdf5_type (T &t) |
Return the HDF5 datatype. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const double &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const float &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const int32_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const uint32_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const int64_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const uint64_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const int16_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const uint16_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const unsigned char &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const char &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const bool &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const std::string &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (const dueca::smartstring &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (double &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (float &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (int32_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (uint32_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (int64_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (uint64_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (int16_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (uint16_t &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (unsigned char &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (char &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (bool &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (std::string &t) |
Specialization for known type. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type (dueca::smartstring &t) |
Specialization for known type. | |
template<typename T > | |
const H5::DataType * | dueca::get_hdf5_type () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< double > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< float > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< int32_t > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< uint32_t > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< int64_t > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< uint64_t > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< int16_t > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< uint16_t > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< unsigned char > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< char > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< bool > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< std::string > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< float > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< dueca::Dstring< 8 > > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< dueca::Dstring< 16 > > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< dueca::Dstring< 32 > > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< dueca::Dstring< 40 > > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< dueca::Dstring< 64 > > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< dueca::Dstring< 128 > > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< dueca::Dstring< 256 > > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< dueca::Dstring< 236 > > () |
Variant without arguments, but with typename as template parameter. | |
template<> | |
const H5::DataType * | dueca::get_hdf5_type< dueca::smartstring > () |
Variant without arguments, but with typename as template parameter. | |
template<unsigned N> | |
const H5::DataType * | dueca::get_hdf5_type (const Dstring< N > &t) |
Last template, for a fixed-length string. | |
template<unsigned N> | |
const H5::DataType * | dueca::get_hdf5_type (Dstring< N > &t) |
Last template, for a fixed-length string. | |
template<size_t N, typename T > | |
const H5::DataType * | dueca::get_hdf5_type (const dueca::fixvector< N, T > &t) |
HDF5 type for common container. | |
template<size_t N, typename T > | |
const H5::DataType * | dueca::get_hdf5_type (dueca::fixvector< N, T > &t) |
HDF5 type for common container. | |
template<size_t N, typename T , int DEFLT, unsigned BASE> | |
const H5::DataType * | dueca::get_hdf5_type (const dueca::fixvector_withdefault< N, T, DEFLT, BASE > &t) |
HDF5 type for common container. | |
template<size_t N, typename T , int DEFLT, unsigned BASE> | |
const H5::DataType * | dueca::get_hdf5_type (dueca::fixvector_withdefault< N, T, DEFLT, BASE > &t) |
HDF5 type for common container. | |
template<typename T > | |
const H5::DataType * | dueca::get_hdf5_type (const dueca::varvector< T > &t) |
HDF5 type for common container. | |
template<typename T > | |
const H5::DataType * | dueca::get_hdf5_type (dueca::varvector< T > &t) |
HDF5 type for common container. | |
template<size_t N, typename T > | |
const H5::DataType * | dueca::get_hdf5_type (const dueca::limvector< N, T > &t) |
HDF5 type for common container. | |
template<size_t N, typename T > | |
const H5::DataType * | dueca::get_hdf5_type (dueca::limvector< N, T > &t) |
HDF5 type for common container. | |
template<class T > | |
const H5::DataType * | dueca::get_hdf5_elt_type (const T &) |
elt_type and elt_length variants are used in non-nested packing; DCO members are packed as arrays. | |
template<class T > | |
const H5::DataType * | dueca::get_hdf5_elt_type (T &o) |
generic element type | |
template<size_t N, class D > | |
const H5::DataType * | dueca::get_hdf5_elt_type (const dueca::fixvector< N, D > &d) |
for fixed-length vector, becomes 2d dataset | |
template<size_t N, class D > | |
const H5::DataType * | dueca::get_hdf5_elt_type (dueca::fixvector< N, D > &d) |
for fixed-length vector, becomes 2d dataset | |
template<size_t N, class D , int DEFLT, unsigned BASE> | |
const H5::DataType * | dueca::get_hdf5_elt_type (const dueca::fixvector_withdefault< N, D, DEFLT, BASE > &d) |
for fixed-length vector, becomes 2d dataset | |
template<size_t N, class D , int DEFLT, unsigned BASE> | |
const H5::DataType * | dueca::get_hdf5_elt_type (dueca::fixvector_withdefault< N, D, DEFLT, BASE > &d) |
for fixed-length vector, becomes 2d dataset | |
template<typename K , typename T > | |
const H5::DataType * | dueca::get_hdf5_type (const std::map< K, T > &d) |
Ignore std::map if trying to write it nested. | |
template<typename K , typename T > | |
const H5::DataType * | dueca::get_hdf5_type (std::map< K, T > &d) |
Ignore std::map if trying to write it nested. | |
const H5::DataType * | dueca::get_hdf5_elt_type (const std::string &d) |
An element, it must be writeable. | |
const H5::DataType * | dueca::get_hdf5_elt_type (std::string &d) |
An element, it must be writeable. | |
const H5::DataType * | dueca::get_hdf5_elt_type (const smartstring &d) |
as element, it must be writeable | |
const H5::DataType * | dueca::get_hdf5_elt_type (smartstring &d) |
as element, it must be writeable | |
template<typename K , typename T > | |
const H5::DataType * | dueca::get_hdf5_elt_type (const std::map< K, T > &d) |
std::map works as member, written as extensible array with key,val pairs. | |
template<typename K , typename T > | |
const H5::DataType * | dueca::get_hdf5_elt_type (std::map< K, T > &d) |
std::map works as member, written as extensible array with key,val pairs. | |
template<size_t N, class D > | |
const hsize_t | dueca::get_hdf5_elt_length (const dueca::fixvector< N, D > &d) |
Return the length of a fixed-size vector. | |
template<size_t N, class D , int DEFLT, unsigned BASE> | |
const hsize_t | dueca::get_hdf5_elt_length (const dueca::fixvector_withdefault< N, D, DEFLT, BASE > &d) |
Return the length of a fixed-size vector. | |
template<class T > | |
const hsize_t | dueca::get_hdf5_elt_length (const T &) |
Return the length of any other element. | |
template<typename Alloc , template< typename, typename > class V> | |
const H5::DataType * | dueca::get_hdf5_elt_type (const V< std::string, Alloc > &t) |
stl-type iterable with std::string | |
template<typename Alloc , template< typename, typename > class V> | |
const H5::DataType * | dueca::get_hdf5_elt_type (V< std::string, Alloc > &t) |
stl-type iterable with std::string | |
template<typename Alloc , typename D , template< typename, typename > class V> | |
const H5::DataType * | dueca::get_hdf5_elt_type (const V< D, Alloc > &t) |
stl-type iterable with other stuff | |
template<typename Alloc , typename D , template< typename, typename > class V> | |
const H5::DataType * | dueca::get_hdf5_elt_type (V< D, Alloc > &t) |
stl-type iterable with other stuff | |
Template functions and classes to extract HDF5-relevant information about different data types.
Return the HDF5 datatype.
Generic datatype as very last, works for DCO objects.
const H5::DataType * dueca::get_hdf5_type | ( | T & | t | ) |
Return the HDF5 datatype.
Generic datatype as very last, works for DCO objects.
const H5::DataType * dueca::get_hdf5_type | ( | const dueca::smartstring & | t | ) |
Specialization for known type.
when directly lifted from struct, std::string does not work
const H5::DataType * dueca::get_hdf5_type | ( | dueca::smartstring & | t | ) |
Specialization for known type.
when directly lifted from struct, std::string does not work
const H5::DataType * dueca::get_hdf5_type | ( | ) |
Variant without arguments, but with typename as template parameter.
HDF5 type for properly defined wrappable DCO objects.
elt_type and elt_length variants are used in non-nested packing; DCO members are packed as arrays.
generic element type
This gives more possibilities, and std::list, std::vector can also be stored.
If get_hdf5_elt_type returns 0, the object can not be stored as such, and is ignored when writing members of a DCO object
Caveat: There are many options and combinations possible, and before relying on storing variable-length lists with variable-length objects, please check the resulting logging and the computation times needed.
const H5::DataType * dueca::get_hdf5_elt_type | ( | const std::map< K, T > & | d | ) |
std::map works as member, written as extensible array with key,val pairs.
These must be convertible in one go
const H5::DataType * dueca::get_hdf5_elt_type | ( | std::map< K, T > & | d | ) |
std::map works as member, written as extensible array with key,val pairs.
These must be convertible in one go