HACK: flat-variable.

This commit is contained in:
Jan Nieuwenhuizen 2019-11-15 09:12:08 +01:00 committed by Jan (janneke) Nieuwenhuizen
parent 674bed609b
commit 40ea76e231
No known key found for this signature in database
GPG Key ID: F3C1A0D9C1D65273
3 changed files with 12 additions and 0 deletions

View File

@ -172,6 +172,7 @@ struct scm *struct_ref (struct scm *x, struct scm *i);
struct scm *struct_set_x (struct scm *x, struct scm *i, struct scm *e);
/* src/variable.c */
struct scm *variable_ref (struct scm *var);
struct scm *flat_variable_ref (struct scm *var);
struct scm *variable_set_x (struct scm *var, struct scm *value);
struct scm *variable_bound_p (struct scm *var);
struct scm *lookup_variable (struct scm *name, struct scm *define_p);

View File

@ -282,6 +282,7 @@ mes_builtins (struct scm *a) /*:((internal)) */
a = init_builtin (builtin_type, "struct-set!", 3, &struct_set_x, a);
/* src/variable.c */
a = init_builtin (builtin_type, "variable-ref", 1, &variable_ref, a);
a = init_builtin (builtin_type, "flat-variable-ref", 1, &flat_variable_ref, a);
a = init_builtin (builtin_type, "variable-set!", 2, &variable_set_x, a);
a = init_builtin (builtin_type, "variable-bound?", 1, &variable_bound_p, a);
a = init_builtin (builtin_type, "lookup-variable", 2, &lookup_variable, a);

View File

@ -32,6 +32,16 @@ variable_ref (struct scm *var)
return value;
}
struct scm *
flat_variable_ref (struct scm *var)
{
assert_variable (1, var);
struct scm *value = var->variable;
if (value == cell_undefined)
error (cell_symbol_unbound_variable, var);
return value;
}
struct scm *
variable_set_x (struct scm *var, struct scm *value)
{