From 3faecf9a00512dcbc8712c4bca9adae72fb64410 Mon Sep 17 00:00:00 2001 From: Kenneth Heafield Date: Sat, 12 May 2012 14:01:52 -0400 Subject: Give in and copy bjam into cdec source code --- jam-files/engine/native.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 jam-files/engine/native.c (limited to 'jam-files/engine/native.c') diff --git a/jam-files/engine/native.c b/jam-files/engine/native.c new file mode 100644 index 00000000..4c289959 --- /dev/null +++ b/jam-files/engine/native.c @@ -0,0 +1,36 @@ +/* Copyright Vladimir Prus 2003. 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" + +# define P0 (PARSE *)0 +# define C0 (char *)0 + + +void declare_native_rule(char* module, char* rule, char** args, + LIST*(*f)(PARSE*, FRAME*), int version) +{ + module_t* m = bindmodule(module); + if (m->native_rules == 0) { + m->native_rules = hashinit( sizeof( native_rule_t ), "native rules"); + } + + { + native_rule_t n, *np = &n; + n.name = rule; + if (args) + { + n.arguments = args_new(); + lol_build( n.arguments->data, args ); + } + else + { + n.arguments = 0; + } + n.procedure = parse_make( f, P0, P0, P0, C0, C0, 0 ); + n.version = version; + hashenter(m->native_rules, (HASHDATA**)&np); + } +} -- cgit v1.2.3