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 9 #include "config.h" 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 54