summaryrefslogtreecommitdiff
path: root/symbol.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-15 22:46:56 +0000
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-15 22:46:56 +0000
commitf02e90b27e37f91d4409842dd21cd00c999c805d (patch)
tree26117d12dadf2a15cc57bfc8b34c221ae0378dec /symbol.c
parentd464a1d3a62d620b6336131c355467bdc273e3c5 (diff)
Implement quad names for variables
Diffstat (limited to 'symbol.c')
-rw-r--r--symbol.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/symbol.c b/symbol.c
index 8bcaa13..938ab99 100644
--- a/symbol.c
+++ b/symbol.c
@@ -19,6 +19,8 @@ getsym(Symtab *tab, Rune *name)
tab->syms[tab->nsyms-1] = emalloc(sizeof(Symbol));
tab->syms[tab->nsyms-1]->name = runestrdup(name);
tab->syms[tab->nsyms-1]->undefined = 1;
+ tab->syms[tab->nsyms-1]->getfn = nil;
+ tab->syms[tab->nsyms-1]->setfn = nil;
return tab->syms[tab->nsyms-1];
}
@@ -28,12 +30,7 @@ newsymtab(void)
Symtab *tab = emalloc(sizeof(Symtab));
tab->nsyms = 0;
tab->syms = nil;
-
- Symbol *io = getsym(tab, L"⎕IO");
- io->value.tag = ArrayTag;
- io->value.array = mkscalarint(currentsymtab ? globalIO() : 1);
- io->value.shy = 0;
- io->undefined = 0;
+ tab->io = currentsymtab ? globalIO() : 1;
return tab;
}
@@ -41,7 +38,6 @@ newsymtab(void)
void
freesymtab(Symtab *tab)
{
- print("Freeing symtab\n");
int i;
for(i = 0; i < tab->nsyms; i++){
Symbol *s = tab->syms[i];
@@ -50,12 +46,10 @@ freesymtab(Symtab *tab)
}
free(tab->syms);
free(tab);
- print("Done freeing symtab\n");
}
vlong
globalIO(void)
{
- Symbol *s = getsym(currentsymtab, L"⎕IO");
- return s->value.array->intdata[0];
+ return currentsymtab->io;
} \ No newline at end of file