/* * Copyright 2001-2004 David Abrahams. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) */ #ifndef MODULES_DWA10182001_H #define MODULES_DWA10182001_H #include "lists.h" #include "object.h" typedef struct module_t module_t ; struct module_t { OBJECT * name; struct hash * rules; struct hash * variables; struct hash * variable_indices; int num_fixed_variables; LIST * * fixed_variables; struct hash * imported_modules; module_t * class_module; struct hash * native_rules; int user_module; }; module_t * bindmodule( OBJECT * name ); module_t * root_module(); void delete_module( module_t * ); void import_module( LIST * module_names, module_t * target_module ); LIST * imported_modules( module_t * ); struct hash * demand_rules( module_t * ); void module_bind_variables( module_t * ); /* * After calling module_add_fixed_var, module_set_fixed_variables must be called * before accessing any variables in the module. */ int module_add_fixed_var( module_t *, OBJECT * name, int * n ); void module_set_fixed_variables( module_t *, int n ); /* * Returns the index of the variable or -1 if none exists. */ int module_get_fixed_var( module_t *, OBJECT * name ); void modules_done(); #endif