+ /** Loads a sub-object from the statement being processed. The Loader class
+ of the sub-object is automatically used. */
+ template<typename S>
+ void load_sub(S &s)
+ {
+ typename S::Loader ldr(s);
+ load_sub_with(ldr);
+ }
+
+ /** Loads a sub-object from the statement being processed with an extra
+ parameter for the Loader. The Loader class of the sub-object is
+ automatically used. */
+ template<typename S, typename T>
+ void load_sub(S &s, T &p)
+ {
+ typename S::Loader ldr(s, p);
+ load_sub_with(ldr);
+ }
+
+ /** Processes the current statement's substatements with another Loader. */
+ void load_sub_with(Loader &);
+
+ /** Sets the actions to be used when loading. If the map is empty,
+ init_actions will be called. */
+ void set_actions(ActionMap &);
+ virtual void init_actions() { }