9 #ifndef RMF_HDF5_INFRASTRUCTURE_MACROS_H
10 #define RMF_HDF5_INFRASTRUCTURE_MACROS_H
18 #if !defined(SWIG) && !defined(RMF_DOXYGEN)
22 using RMF::operator<<;
28 #define RMF_HDF5_CALL(v) \
30 RMF_THROW(Message("HDF5/HDF5 call failed") << Expression(#v), \
35 #define RMF_HDF5_NEW_HANDLE(name, cmd, cleanup) \
36 std::shared_ptr<RMF::HDF5::SharedHandle> name = \
37 std::make_shared<RMF::HDF5::SharedHandle>(cmd, cleanup, #cmd)
39 #define RMF_HDF5_HANDLE(name, cmd, cleanup) \
40 RMF::HDF5::Handle name(cmd, cleanup, #cmd)
52 #define RMF_HDF5_FOREACH_TYPE(macroname) \
53 RMF_FOREACH_SIMPLE_TYPE(macroname); \
54 macroname(string, String, String, String, const Strings&, Strings); \
55 macroname(strings, Strings, Strings, Strings, const StringsList&, \
57 macroname(floats, Floats, const Floats&, Floats, const FloatsList&, \
59 macroname(ints, Ints, const Ints&, Ints, const IntsList&, IntsList); \
60 macroname(indexes, Indexes, const Indexes&, Indexes, const IndexesList&, \
63 #define RMF_HDF5_FOREACH_TYPE(macroname) \
64 macroname(type, Type, Type, Types, const Types&, Types);
Various general useful macros for IMP.