mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-04 19:56:36 +02:00
adding (library x) support to cond-expand
This commit is contained in:
parent
a1f43475ba
commit
f30e53265c
4 changed files with 6 additions and 0 deletions
3
eval.c
3
eval.c
|
@ -1866,6 +1866,9 @@ sexp sexp_load_module_file_op (sexp ctx, sexp self, sexp_sint_t n, sexp file, se
|
||||||
sexp sexp_current_environment (sexp ctx, sexp self, sexp_sint_t n) {
|
sexp sexp_current_environment (sexp ctx, sexp self, sexp_sint_t n) {
|
||||||
return sexp_context_env(ctx);
|
return sexp_context_env(ctx);
|
||||||
}
|
}
|
||||||
|
sexp sexp_meta_environment (sexp ctx, sexp self, sexp_sint_t n) {
|
||||||
|
return sexp_global(ctx, SEXP_G_META_ENV);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
sexp sexp_add_module_directory_op (sexp ctx, sexp self, sexp_sint_t n, sexp dir, sexp appendp) {
|
sexp sexp_add_module_directory_op (sexp ctx, sexp self, sexp_sint_t n, sexp dir, sexp appendp) {
|
||||||
|
|
|
@ -70,6 +70,7 @@ SEXP_API sexp sexp_load_standard_env (sexp context, sexp env, sexp version);
|
||||||
SEXP_API sexp sexp_find_module_file (sexp ctx, const char *file);
|
SEXP_API sexp sexp_find_module_file (sexp ctx, const char *file);
|
||||||
SEXP_API sexp sexp_load_module_file (sexp ctx, const char *file, sexp env);
|
SEXP_API sexp sexp_load_module_file (sexp ctx, const char *file, sexp env);
|
||||||
SEXP_API sexp sexp_add_module_directory_op (sexp ctx, sexp self, sexp_sint_t n, sexp dir, sexp appendp);
|
SEXP_API sexp sexp_add_module_directory_op (sexp ctx, sexp self, sexp_sint_t n, sexp dir, sexp appendp);
|
||||||
|
SEXP_API sexp sexp_meta_environment (sexp ctx, sexp self, sexp_sint_t n);
|
||||||
SEXP_API sexp sexp_extend_env (sexp ctx, sexp env, sexp vars, sexp value);
|
SEXP_API sexp sexp_extend_env (sexp ctx, sexp env, sexp vars, sexp value);
|
||||||
SEXP_API sexp sexp_env_import_op (sexp ctx, sexp self, sexp_sint_t n, sexp to, sexp from, sexp ls, sexp immutp);
|
SEXP_API sexp sexp_env_import_op (sexp ctx, sexp self, sexp_sint_t n, sexp to, sexp from, sexp ls, sexp immutp);
|
||||||
SEXP_API sexp sexp_identifier_op(sexp ctx, sexp self, sexp_sint_t n, sexp x);
|
SEXP_API sexp sexp_identifier_op(sexp ctx, sexp self, sexp_sint_t n, sexp x);
|
||||||
|
|
|
@ -550,6 +550,7 @@
|
||||||
((and) (every check (cdr x)))
|
((and) (every check (cdr x)))
|
||||||
((or) (any check (cdr x)))
|
((or) (any check (cdr x)))
|
||||||
((not) (not (check (cadr x))))
|
((not) (not (check (cadr x))))
|
||||||
|
((library) (eval `(find-module ',(cadr x)) (%meta-env)))
|
||||||
(else (error "cond-expand: bad feature" x)))
|
(else (error "cond-expand: bad feature" x)))
|
||||||
(memq (identifier->symbol x) *features*)))
|
(memq (identifier->symbol x) *features*)))
|
||||||
(let expand ((ls (cdr expr)))
|
(let expand ((ls (cdr expr)))
|
||||||
|
|
|
@ -221,6 +221,7 @@ _OP(SEXP_OPC_SETTER, SEXP_OP_SLOTN_SET, 4, 0, SEXP_VOID, _I(SEXP_OBJECT), _I(SEX
|
||||||
#endif
|
#endif
|
||||||
#if SEXP_USE_MODULES
|
#if SEXP_USE_MODULES
|
||||||
_FN0(_I(SEXP_ENV), "current-environment", 0, sexp_current_environment),
|
_FN0(_I(SEXP_ENV), "current-environment", 0, sexp_current_environment),
|
||||||
|
_FN0(_I(SEXP_ENV), "%meta-env", 0, sexp_meta_environment),
|
||||||
_FN1(SEXP_NULL, _I(SEXP_ENV), "env-exports", 0, sexp_env_exports_op),
|
_FN1(SEXP_NULL, _I(SEXP_ENV), "env-exports", 0, sexp_env_exports_op),
|
||||||
_FN1(_I(SEXP_STRING), _I(SEXP_STRING), "find-module-file", 0, sexp_find_module_file_op),
|
_FN1(_I(SEXP_STRING), _I(SEXP_STRING), "find-module-file", 0, sexp_find_module_file_op),
|
||||||
_FN2(SEXP_VOID, _I(SEXP_STRING), _I(SEXP_ENV), "load-module-file", 0, sexp_load_module_file_op),
|
_FN2(SEXP_VOID, _I(SEXP_STRING), _I(SEXP_ENV), "load-module-file", 0, sexp_load_module_file_op),
|
||||||
|
|
Loading…
Add table
Reference in a new issue