typedef struct nap_compilation_data {
struct inter_name *nap_iname;
} nap_compilation_data;
nap_compilation_data RTNamedActionPatterns::new(named_action_pattern *nap) {
nap_compilation_data ncd;
package_request *PR = Hierarchy::local_package(NAMED_ACTION_PATTERNS_HAP);
ncd.nap_iname = Hierarchy::make_iname_in(NAP_FN_HL, PR);
return ncd;
}
inter_name *RTNamedActionPatterns::identifier(named_action_pattern *nap) {
return nap->compilation_data.nap_iname;
}
void RTNamedActionPatterns::compile(void) {
named_action_pattern *nap;
LOOP_OVER(nap, named_action_pattern) {
packaging_state save = Functions::begin(nap->compilation_data.nap_iname);
named_action_pattern_entry *nape;
LOOP_OVER_LINKED_LIST(nape, named_action_pattern_entry, nap->patterns) {
action_pattern *ap = nape->behaviour;
current_sentence = nape->where_decided;
Produce::inv_primitive(Emit::tree(), IF_BIP);
Produce::down(Emit::tree());
RTActionPatterns::emit_pattern_match(ap, TRUE);
Produce::code(Emit::tree());
Produce::down(Emit::tree());
Produce::rtrue(Emit::tree());
Produce::up(Emit::tree());
Produce::up(Emit::tree());
}
Produce::rfalse(Emit::tree());
Functions::end(save);
}
}
- The structure nap_compilation_data is private to this section.