RULE *bindrule( char *rulename, module* m ) { RULE rule, *r = &rule; r->name = rulename; if ( hashcheck( m->rules, (HASHDATA **)&r ) ) return r; else return enter_rule( rulename, root_module() ); }
RULE * bindrule( OBJECT * rulename, module_t * m ) { RULE * result = lookup_rule( rulename, m, 0 ); if ( !result ) result = lookup_rule( rulename, root_module(), 0 ); /* We have only one caller, 'evaluate_rule', which will complain about * calling an undefined rule. We could issue the error here, but we do not * have the necessary information, such as frame. */ if ( !result ) result = enter_rule( rulename, m ); return result; }
/* * define_rule() - return pointer to RULE, creating it if necessary in * target_module. Prepare it to accept a body or action originating in * src_module. */ static RULE * define_rule( module_t *src_module, char *rulename, module_t *target_module ) { RULE *r = enter_rule( rulename, target_module ); if ( r->module != src_module ) /* if the rule was imported from elsewhere, clear it now */ { set_rule_body( r, 0, 0 ); set_rule_actions( r, 0 ); r->module = src_module; /* r will be executed in the source module */ } return r; }