mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 13:49:17 +02:00
Adding currently immutable (current-module-path).
This commit is contained in:
parent
2b5f8ea007
commit
a49f14d011
3 changed files with 8 additions and 0 deletions
6
eval.c
6
eval.c
|
@ -427,6 +427,7 @@ static void sexp_add_path (sexp ctx, const char *str) {
|
||||||
sexp_push(ctx, sexp_global(ctx, SEXP_G_MODULE_PATH), SEXP_VOID);
|
sexp_push(ctx, sexp_global(ctx, SEXP_G_MODULE_PATH), SEXP_VOID);
|
||||||
sexp_car(sexp_global(ctx, SEXP_G_MODULE_PATH))
|
sexp_car(sexp_global(ctx, SEXP_G_MODULE_PATH))
|
||||||
= sexp_c_string(ctx, str, colon-str);
|
= sexp_c_string(ctx, str, colon-str);
|
||||||
|
sexp_immutablep(sexp_global(ctx, SEXP_G_MODULE_PATH)) = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -460,8 +461,10 @@ void sexp_init_eval_context_globals (sexp ctx) {
|
||||||
sexp_add_path(ctx, getenv(SEXP_MODULE_PATH_VAR));
|
sexp_add_path(ctx, getenv(SEXP_MODULE_PATH_VAR));
|
||||||
tmp = sexp_c_string(ctx, "./lib", 5);
|
tmp = sexp_c_string(ctx, "./lib", 5);
|
||||||
sexp_push(ctx, sexp_global(ctx, SEXP_G_MODULE_PATH), tmp);
|
sexp_push(ctx, sexp_global(ctx, SEXP_G_MODULE_PATH), tmp);
|
||||||
|
sexp_immutablep(sexp_global(ctx, SEXP_G_MODULE_PATH)) = 1;
|
||||||
tmp = sexp_c_string(ctx, ".", 1);
|
tmp = sexp_c_string(ctx, ".", 1);
|
||||||
sexp_push(ctx, sexp_global(ctx, SEXP_G_MODULE_PATH), tmp);
|
sexp_push(ctx, sexp_global(ctx, SEXP_G_MODULE_PATH), tmp);
|
||||||
|
sexp_immutablep(sexp_global(ctx, SEXP_G_MODULE_PATH)) = 1;
|
||||||
#if SEXP_USE_GREEN_THREADS
|
#if SEXP_USE_GREEN_THREADS
|
||||||
sexp_global(ctx, SEXP_G_IO_BLOCK_ERROR)
|
sexp_global(ctx, SEXP_G_IO_BLOCK_ERROR)
|
||||||
= sexp_user_exception(ctx, SEXP_FALSE, "I/O would block", SEXP_NULL);
|
= sexp_user_exception(ctx, SEXP_FALSE, "I/O would block", SEXP_NULL);
|
||||||
|
@ -1951,6 +1954,9 @@ sexp sexp_load_module_file (sexp ctx, const char *file, sexp env) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SEXP_USE_MODULES
|
#if SEXP_USE_MODULES
|
||||||
|
sexp sexp_current_module_path_op (sexp ctx, sexp self, sexp_sint_t n) {
|
||||||
|
return sexp_global(ctx, SEXP_G_MODULE_PATH);
|
||||||
|
}
|
||||||
sexp sexp_find_module_file_op (sexp ctx, sexp self, sexp_sint_t n, sexp file) {
|
sexp sexp_find_module_file_op (sexp ctx, sexp self, sexp_sint_t n, sexp file) {
|
||||||
sexp_assert_type(ctx, sexp_stringp, SEXP_STRING, file);
|
sexp_assert_type(ctx, sexp_stringp, SEXP_STRING, file);
|
||||||
return sexp_find_module_file(ctx, sexp_string_data(file));
|
return sexp_find_module_file(ctx, sexp_string_data(file));
|
||||||
|
|
|
@ -96,6 +96,7 @@ SEXP_API sexp sexp_load_standard_ports (sexp context, sexp env, FILE* in, FILE*
|
||||||
SEXP_API sexp sexp_load_standard_env (sexp context, sexp env, sexp version);
|
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_current_module_path_op (sexp ctx, sexp self, sexp_sint_t n);
|
||||||
SEXP_API sexp sexp_find_module_file_op (sexp ctx, sexp self, sexp_sint_t n, sexp file);
|
SEXP_API sexp sexp_find_module_file_op (sexp ctx, sexp self, sexp_sint_t n, sexp file);
|
||||||
SEXP_API sexp sexp_load_module_file_op (sexp ctx, sexp self, sexp_sint_t n, sexp file, sexp env);
|
SEXP_API sexp sexp_load_module_file_op (sexp ctx, sexp self, sexp_sint_t n, sexp 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);
|
||||||
|
|
|
@ -243,6 +243,7 @@ _OP(SEXP_OPC_SETTER, SEXP_OP_SLOTN_SET, 4, 0, SEXP_VOID, _I(SEXP_OBJECT), _I(SEX
|
||||||
_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),
|
_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),
|
||||||
|
_FN0(_I(SEXP_PAIR), "current-module-path", 0, sexp_current_module_path_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),
|
||||||
_FN2(SEXP_VOID, _I(SEXP_STRING), _I(SEXP_BOOLEAN), "add-module-directory", 0, sexp_add_module_directory_op),
|
_FN2(SEXP_VOID, _I(SEXP_STRING), _I(SEXP_BOOLEAN), "add-module-directory", 0, sexp_add_module_directory_op),
|
||||||
|
|
Loading…
Add table
Reference in a new issue