| 12 | |
| 13 | |
| 14 | void declare_native_rule( char const * module, char const * rule, |
| 15 | char const * * args, LIST * (*f)( FRAME *, int ), int version ) |
| 16 | { |
| 17 | OBJECT * const module_obj = module ? object_new( module ) : 0 ; |
| 18 | module_t * m = bindmodule( module_obj ); |
| 19 | if ( module_obj ) |
| 20 | object_free( module_obj ); |
| 21 | if ( !m->native_rules ) |
| 22 | m->native_rules = hashinit( sizeof( native_rule_t ), "native rules" ); |
| 23 | |
| 24 | { |
| 25 | OBJECT * const name = object_new( rule ); |
| 26 | int found; |
| 27 | native_rule_t * const np = (native_rule_t *)hash_insert( |
| 28 | m->native_rules, name, &found ); |
| 29 | np->name = name; |
| 30 | assert( !found ); |
| 31 | np->procedure = function_builtin( f, 0, args ); |
| 32 | np->version = version; |
| 33 | } |
| 34 | } |
no test coverage detected