7#ifndef CALLBACK_UTILS_META_INIT_HPP
8#define CALLBACK_UTILS_META_INIT_HPP
29 template<
typename AFields>
33 static constexpr size_t buf_size = 64UL;
35 std::pair<
void *, std::function<void(
void *, std::shared_ptr<H5::H5File>)>> inits[buf_size];
37 void register_init (
void *obj, std::function<
void(
void *, std::shared_ptr<H5::H5File>)> fct)
39 inits[N_inits++] = std::make_pair(obj, fct);
40 assert(N_inits < buf_size);
43 void read_prt_meta_init (std::shared_ptr<H5::H5File> fptr)
override final
45 for (
size_t ii=0; ii != N_inits; ++ii)
46 inits[ii].second(inits[ii].first, fptr);
55 template<
typename AFields>
59 static constexpr size_t buf_size = 64UL;
61 std::pair<
void *, std::function<void(
void *, std::shared_ptr<H5::H5File>)>> inits[buf_size];
63 void register_init (
void *obj, std::function<
void(
void *, std::shared_ptr<H5::H5File>)> fct)
65 inits[N_inits++] = std::make_pair(obj, fct);
66 assert(N_inits < buf_size);
69 void read_grp_meta_init (std::shared_ptr<H5::H5File> fptr)
override final
71 for (
size_t ii=0; ii != N_inits; ++ii)
72 inits[ii].second(inits[ii].first, fptr);
84 template<
typename AFields,
typename Child>
89 static void this_prt_meta_init_static (
void *obj, std::shared_ptr<H5::H5File> fptr)
91 Child *p = (Child *)obj;
92 p->this_prt_meta_init(fptr);
114 template<
typename AFields,
typename Child>
119 static void this_grp_meta_init_static (
void *obj, std::shared_ptr<H5::H5File> fptr)
121 Child *p = (Child *)obj;
122 p->this_grp_meta_init(fptr);
138 template<
typename AFields>
144 void this_prt_meta_init (std::shared_ptr<H5::H5File> fptr)
override final
146 #define READ(x) x = hdf5Utils::read_scalar_attr<double,double>(header, #x)
147 auto header = fptr->openGroup(
"/Header");
168 template<
typename AFields>
174 void this_prt_meta_init (std::shared_ptr<H5::H5File> fptr)
override final
176 #define READ(x) x = hdf5Utils::read_scalar_attr<double,double>(header, #x)
177 auto header = fptr->openGroup(
"/Header");
196 template<
typename AFields>
202 void this_grp_meta_init (std::shared_ptr<H5::H5File> fptr)
override final
206 #define READ(x) x = hdf5Utils::read_scalar_attr<double,double>(header, #x)
209 auto header = fptr->openGroup(
"/Parameters");
218 auto header = fptr->openGroup(
"/Header");
237 template<
typename AFields>
243 void this_prt_meta_init (std::shared_ptr<H5::H5File> fptr)
override final
245 auto header = fptr->openGroup(
"/Header");
246 Ntypes = hdf5Utils::read_vector_attr<double,double>(header,
"MassTable",
MassTable);
Contains the abstract base class that the user should subclass from in order to define the desired fu...
some utility functions to read attributes from hdf5 files
contains classes that implement parts of the Callback base.
Definition callback_utils.hpp:35
The abstract base class the user should inherit from.
Definition callback.hpp:32