]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /* Copyright 2003. Vladimir Prus |
2 | * Distributed under the Boost Software License, Version 1.0. | |
3 | * (See accompanying file LICENSE_1_0.txt or copy at | |
4 | * http://www.boost.org/LICENSE_1_0.txt) | |
5 | */ | |
6 | ||
7 | #include "native.h" | |
8 | ||
9 | #include "hash.h" | |
10 | ||
11 | #include <assert.h> | |
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 | } |