temporarily disable elisp exception tests
[bpt/guile.git] / libguile / modules.h
CommitLineData
1ffa265b
MD
1/* classes: h_files */
2
729dbac3
DH
3#ifndef SCM_MODULES_H
4#define SCM_MODULES_H
8c494e99 5
62e15979 6/* Copyright (C) 1998, 2000, 2001, 2002, 2003, 2006, 2007, 2008, 2011, 2012 Free Software Foundation, Inc.
8c494e99 7 *
73be1d9e 8 * This library is free software; you can redistribute it and/or
53befeb7
NJ
9 * modify it under the terms of the GNU Lesser General Public License
10 * as published by the Free Software Foundation; either version 3 of
11 * the License, or (at your option) any later version.
8c494e99 12 *
53befeb7
NJ
13 * This library is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
73be1d9e
MV
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
8c494e99 17 *
73be1d9e
MV
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
53befeb7
NJ
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21 * 02110-1301 USA
73be1d9e 22 */
8c494e99 23
1ffa265b
MD
24\f
25
26#include "libguile/__scm.h"
27
b486ccc8
MD
28#include "libguile/validate.h"
29
1ffa265b
MD
30\f
31
33b001fd
MV
32SCM_API int scm_module_system_booted_p;
33SCM_API scm_t_bits scm_module_tag;
d02b98e9 34
b486ccc8 35#define SCM_MODULEP(OBJ) \
729dbac3 36 (!SCM_IMP (OBJ) && SCM_CELL_TYPE (OBJ) == scm_module_tag)
b486ccc8 37
6182ceac 38#define SCM_VALIDATE_MODULE(pos, scm) SCM_MAKE_VALIDATE_MSG (pos, scm, MODULEP, "module")
b486ccc8
MD
39
40/* NOTE: Indexes of module fields are dependent upon the definition of
41 * module-type in boot-9.scm.
42 */
43
44#define scm_module_index_obarray 0
45#define scm_module_index_uses 1
46#define scm_module_index_binder 2
47#define scm_module_index_eval_closure 3
55000e5f 48#define scm_module_index_transformer 4
608860a5
LC
49#define scm_module_index_duplicate_handlers 7
50#define scm_module_index_import_obarray 8
b486ccc8
MD
51
52#define SCM_MODULE_OBARRAY(module) \
53 SCM_PACK (SCM_STRUCT_DATA (module) [scm_module_index_obarray])
54#define SCM_MODULE_USES(module) \
55 SCM_PACK (SCM_STRUCT_DATA (module) [scm_module_index_uses])
56#define SCM_MODULE_BINDER(module) \
57 SCM_PACK (SCM_STRUCT_DATA (module) [scm_module_index_binder])
58#define SCM_MODULE_EVAL_CLOSURE(module) \
59 SCM_PACK (SCM_STRUCT_DATA (module)[scm_module_index_eval_closure])
55000e5f
MV
60#define SCM_MODULE_TRANSFORMER(module) \
61 SCM_PACK (SCM_STRUCT_DATA (module)[scm_module_index_transformer])
608860a5
LC
62#define SCM_MODULE_DUPLICATE_HANDLERS(module) \
63 SCM_PACK (SCM_STRUCT_DATA (module)[scm_module_index_duplicate_handlers])
64#define SCM_MODULE_IMPORT_OBARRAY(module) \
65 SCM_PACK (SCM_STRUCT_DATA (module)[scm_module_index_import_obarray])
b486ccc8
MD
66
67\f
68
33b001fd 69SCM_API SCM scm_current_module (void);
f39fc3b3 70SCM_API SCM scm_the_root_module (void);
33b001fd
MV
71SCM_API SCM scm_interaction_environment (void);
72SCM_API SCM scm_set_current_module (SCM module);
73
74SCM_API SCM scm_c_call_with_current_module (SCM module,
75 SCM (*func)(void *), void *data);
661ae7ab 76SCM_API void scm_dynwind_current_module (SCM module);
33b001fd 77
62e15979
AW
78SCM_API SCM scm_module_variable (SCM module, SCM sym);
79SCM_API SCM scm_module_local_variable (SCM module, SCM sym);
80SCM_API SCM scm_module_ensure_local_variable (SCM module, SCM sym);
81
33b001fd
MV
82SCM_API SCM scm_c_lookup (const char *name);
83SCM_API SCM scm_c_define (const char *name, SCM val);
84SCM_API SCM scm_lookup (SCM symbol);
85SCM_API SCM scm_define (SCM symbol, SCM val);
86
87SCM_API SCM scm_c_module_lookup (SCM module, const char *name);
88SCM_API SCM scm_c_module_define (SCM module, const char *name, SCM val);
89SCM_API SCM scm_module_lookup (SCM module, SCM symbol);
90SCM_API SCM scm_module_define (SCM module, SCM symbol, SCM val);
608860a5 91SCM_API SCM scm_module_export (SCM module, SCM symbol_list);
33b001fd
MV
92SCM_API SCM scm_module_reverse_lookup (SCM module, SCM variable);
93
ef8e9356
AW
94SCM_API SCM scm_public_variable (SCM module_name, SCM name);
95SCM_API SCM scm_private_variable (SCM module_name, SCM name);
96SCM_API SCM scm_c_public_variable (const char *module_name, const char *name);
97SCM_API SCM scm_c_private_variable (const char *module_name, const char *name);
98
99SCM_API SCM scm_public_lookup (SCM module_name, SCM name);
100SCM_API SCM scm_private_lookup (SCM module_name, SCM name);
101SCM_API SCM scm_c_public_lookup (const char *module_name, const char *name);
102SCM_API SCM scm_c_private_lookup (const char *module_name, const char *name);
103
104SCM_API SCM scm_public_ref (SCM module_name, SCM name);
105SCM_API SCM scm_private_ref (SCM module_name, SCM name);
106SCM_API SCM scm_c_public_ref (const char *module_name, const char *name);
107SCM_API SCM scm_c_private_ref (const char *module_name, const char *name);
108
33b001fd
MV
109SCM_API SCM scm_c_resolve_module (const char *name);
110SCM_API SCM scm_resolve_module (SCM name);
111SCM_API SCM scm_c_define_module (const char *name,
112 void (*init)(void *), void *data);
113SCM_API void scm_c_use_module (const char *name);
114SCM_API void scm_c_export (const char *name, ...);
115
dc68fdb9 116SCM_API SCM scm_module_public_interface (SCM module);
109c2c9f 117SCM_API SCM scm_module_import_interface (SCM module, SCM sym);
33b001fd 118SCM_API SCM scm_module_transformer (SCM module);
33b001fd 119SCM_API SCM scm_current_module_transformer (void);
33b001fd 120SCM_API SCM scm_get_pre_modules_obarray (void);
33b001fd 121
102dbb6f
LC
122SCM_INTERNAL void scm_modules_prehistory (void);
123SCM_INTERNAL void scm_init_modules (void);
1ffa265b 124
729dbac3 125#endif /* SCM_MODULES_H */
89e00824
ML
126
127/*
128 Local Variables:
129 c-file-style: "gnu"
130 End:
131*/