]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /* |
2 | * Copyright 2001-2004 David Abrahams. | |
3 | * Distributed under the Boost Software License, Version 1.0. | |
4 | * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) | |
5 | */ | |
6 | #ifndef MODULES_DWA10182001_H | |
7 | #define MODULES_DWA10182001_H | |
8 | ||
92f5a8d4 | 9 | #include "config.h" |
7c673cae FG |
10 | #include "lists.h" |
11 | #include "object.h" | |
12 | ||
13 | typedef struct module_t module_t ; | |
14 | struct module_t | |
15 | { | |
16 | OBJECT * name; | |
17 | struct hash * rules; | |
18 | struct hash * variables; | |
19 | struct hash * variable_indices; | |
20 | int num_fixed_variables; | |
21 | LIST * * fixed_variables; | |
22 | struct hash * imported_modules; | |
23 | module_t * class_module; | |
24 | struct hash * native_rules; | |
25 | int user_module; | |
26 | }; | |
27 | ||
28 | module_t * bindmodule( OBJECT * name ); | |
29 | module_t * root_module(); | |
30 | void delete_module( module_t * ); | |
31 | ||
32 | void import_module( LIST * module_names, module_t * target_module ); | |
33 | LIST * imported_modules( module_t * ); | |
34 | ||
35 | struct hash * demand_rules( module_t * ); | |
36 | ||
37 | void module_bind_variables( module_t * ); | |
38 | ||
39 | /* | |
40 | * After calling module_add_fixed_var, module_set_fixed_variables must be called | |
41 | * before accessing any variables in the module. | |
42 | */ | |
43 | int module_add_fixed_var( module_t *, OBJECT * name, int * n ); | |
44 | void module_set_fixed_variables( module_t *, int n ); | |
45 | ||
46 | /* | |
47 | * Returns the index of the variable or -1 if none exists. | |
48 | */ | |
49 | int module_get_fixed_var( module_t *, OBJECT * name ); | |
50 | ||
51 | void modules_done(); | |
52 | ||
53 | #endif |