/* Copyright 2003. Vladimir Prus * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) */ #include "native.h" #include "hash.h" #include void declare_native_rule( char const * module, char const * rule, char const * * args, LIST * (*f)( FRAME *, int ), int version ) { OBJECT * const module_obj = module ? object_new( module ) : 0 ; module_t * m = bindmodule( module_obj ); if ( module_obj ) object_free( module_obj ); if ( !m->native_rules ) m->native_rules = hashinit( sizeof( native_rule_t ), "native rules" ); { OBJECT * const name = object_new( rule ); int found; native_rule_t * const np = (native_rule_t *)hash_insert( m->native_rules, name, &found ); np->name = name; assert( !found ); np->procedure = function_builtin( f, 0, args ); np->version = version; } }