9 #ifndef RMF_NODE_HANDLE_H
10 #define RMF_NODE_HANDLE_H
19 #include "RMF/config.h"
23 #include "RMF/internal/SharedData.h"
24 #include "internal/SharedData.h"
34 #define RMF_HDF5_NODE_KEY_TYPE_METHODS(Traits, UCName)
37 #define RMF_HDF5_NODE_KEY_TYPE_METHODS(Traits, UCName) \
38 void set_frame_value(UCName##Key k, UCName v) const; \
39 void set_value(UCName##Key k, UCName v) const; \
40 void set_static_value(UCName##Key k, UCName v) const;
63 void set_value_impl(
ID<Tag> k,
typename Tag::ArgumentType v)
const {
65 if (sv.get_is_null()) {
66 set_static_value(k, v);
69 if (Tag::get_are_equal(sv.
get(), v))
return;
70 set_frame_value(k, v);
72 #if !defined(SWIG) && !defined(RMF_DOXYGEN)
104 RMF_USAGE_CHECK(shared_->get_loaded_frame() !=
FrameID(),
105 "Need to set a current frame before setting values.");
106 shared_->set_loaded_value(node_, k, v);
116 set_value_impl(k, v);
123 shared_->set_static_value(node_, k, v);
Default implementation for types.h.
A handle for a particular node in the hierarchy.
A handle for a particular node in a read-only hierarchy.
std::vector< NodeHandle > NodeHandles
Pass a list of them.
Return a possibly null value.
A general purpose ID in RMF used, with different tags, to identify things.
Declarations of the various exception types.
void set_value(ID< Tag > k, typename Tag::ArgumentType v) const
A handle for an RMF file.
Declaration of NodeConstHandle.
A strong enum with an associated string name for each value.
The various enums used in RMF.
void set_static_value(ID< Tag > k, typename Tag::ArgumentType v) const
set the value of the attribute k for all frames.
Traits< T >::ReturnType get() const
#define RMF_FOREACH_TYPE(macroname)
A helper class for allowing nice return of possibly null values.
Various general useful macros for IMP.
void set_frame_value(ID< Tag > k, typename Tag::ArgumentType v) const
set the value of the attribute k for this node on the current frame.