diff options
author | Andy Wingo <wingo@pobox.com> | 2010-04-23 17:03:34 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2010-04-24 17:42:01 +0200 |
commit | 993dae8623e0fe6195000afb81902ea466bd2dc4 (patch) | |
tree | cfc275c59a3160ae9f4e9152845e8a1d5aafade9 /libguile/modules.c | |
parent | 81fc66cfb665814d9cfd766b3c19be90ae1b13ec (diff) | |
download | guile-993dae8623e0fe6195000afb81902ea466bd2dc4.tar.gz |
module-public-interface in Scheme
* libguile/modules.c: Consolidate all variables to the top of the file.
(scm_module_public_interface): Dispatch to Scheme.
(scm_post_boot_init_modules): Resolve module-public-interface.
* module/ice-9/boot-9.scm (module-public-interface): Implement in
Scheme.
Diffstat (limited to 'libguile/modules.c')
-rw-r--r-- | libguile/modules.c | 41 |
1 files changed, 13 insertions, 28 deletions
diff --git a/libguile/modules.c b/libguile/modules.c index ccb68b709..c8a4c2aa1 100644 --- a/libguile/modules.c +++ b/libguile/modules.c @@ -44,7 +44,16 @@ scm_t_bits scm_module_tag; static SCM the_module; +static SCM module_make_local_var_x_var; + static SCM the_root_module_var; +static SCM process_define_module_var; +static SCM process_use_modules_var; +static SCM resolve_module_var; +static SCM module_public_interface_var; +static SCM module_export_x_var; +static SCM default_duplicate_binding_procedures_var; + static SCM unbound_variable (const char *func, SCM sym) { @@ -149,10 +158,6 @@ convert_module_name (const char *name) return list; } -static SCM process_define_module_var; -static SCM process_use_modules_var; -static SCM resolve_module_var; - SCM scm_c_resolve_module (const char *name) { @@ -183,8 +188,6 @@ scm_c_use_module (const char *name) scm_list_1 (scm_list_1 (convert_module_name (name)))); } -static SCM module_export_x_var; - SCM scm_module_export (SCM module, SCM namelist) { @@ -267,12 +270,6 @@ scm_lookup_closure_module (SCM proc) * release. */ -/* The `module-make-local-var!' variable. */ -static SCM module_make_local_var_x_var = SCM_UNSPECIFIED; - -/* The `default-duplicate-binding-procedures' variable. */ -static SCM default_duplicate_binding_procedures_var = SCM_UNSPECIFIED; - /* Return the list of default duplicate binding handlers (procedures). */ static inline SCM default_duplicate_binding_handlers (void) @@ -638,24 +635,11 @@ SCM_DEFINE (scm_module_import_interface, "module-import-interface", 2, 0, 0, } #undef FUNC_NAME -SCM_SYMBOL (sym_sys_module_public_interface, "%module-public-interface"); - -SCM_DEFINE (scm_module_public_interface, "module-public-interface", 1, 0, 0, - (SCM module), - "Return the public interface of @var{module}.\n\n" - "If @var{module} has no public interface, @code{#f} is returned.") -#define FUNC_NAME s_scm_module_public_interface +SCM +scm_module_public_interface (SCM module) { - SCM var; - - SCM_VALIDATE_MODULE (1, module); - var = scm_module_local_variable (module, sym_sys_module_public_interface); - if (scm_is_true (var)) - return SCM_VARIABLE_REF (var); - else - return SCM_BOOL_F; + return scm_call_1 (SCM_VARIABLE_REF (module_public_interface_var), module); } -#undef FUNC_NAME /* scm_sym2var * @@ -899,6 +883,7 @@ scm_post_boot_init_modules () the_root_module_var = scm_c_lookup ("the-root-module"); default_duplicate_binding_procedures_var = scm_c_lookup ("default-duplicate-binding-procedures"); + module_public_interface_var = scm_c_lookup ("module-public-interface"); scm_module_system_booted_p = 1; } |