+ for(Loader *l: aux_loaders)
+ l->finish();
+}
+
+void Loader::load_direct(Parser &p, unsigned l)
+{
+ SetForScope<Parser *> set_parser(cur_parser, &p);
+ SetForScope<unsigned> set_level(cur_level, l);
+
+ while(p)
+ {
+ const StatementKey *key = p.peek(l);
+ if(!key)
+ break;
+
+ LoaderAction *act = find_action(*key);
+ if(act)
+ {
+ SetFlag set_direct(direct);
+ if(!p.parse_and_load(l, *this, *act))
+ throw logic_error("direct load failed");
+ }
+ else
+ load_statement(p.parse());
+ }