diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-13 19:45:22 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-13 19:45:22 +0000 |
commit | 50d6dd8b50958271bf1ff13f99dc21d4cd8431f7 (patch) | |
tree | 504f2a16f29fefedc7ff0a326475f122d018590a /apl9.h | |
parent | b1b55e907a5aaf177344769d2b303351ba936bff (diff) |
Implement basic reference counting for arrays, which so they
get freed when not in use anymore.
Diffstat (limited to 'apl9.h')
-rw-r--r-- | apl9.h | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -46,6 +46,7 @@ struct Array int *shape; int size; int stranded; /* 1 if build directly by stranding */ + int refs; /* reference counting */ union { char *rawdata; vlong *intdata; @@ -111,7 +112,6 @@ Rune *pparray(Array *); Statement *lexline(Rune *); /* array.c */ -Array *mkarray(int, int, int); Array *mkscalarint(vlong); Array *duparray(Array *); int simplearray(Array *); @@ -123,8 +123,14 @@ Datum *eval(Statement *); /* symbol.c */ Symbol *getsym(Symtab *, Rune *); Symtab *newsymtab(void); +void freesymtab(Symtab *); vlong globalIO(void); +/* memory.c */ +Array *allocarray(int, int, int); +void freearray(Array *); +void incref(Array *); + /* Monadic functions from functions.h */ Array *fnSame(Array *); Array *fnTally(Array *); @@ -151,4 +157,5 @@ extern Rune primhybridnames[]; /* lexer.c */ extern fnmonad monadfunctiondefs[]; /* function.c */ extern fndyad dyadfunctiondefs[]; /* function.c */ extern Symtab *globalsymtab; /* symbol.c */ -extern Symtab *currentsymtab; /* symbol.c */
\ No newline at end of file +extern Symtab *currentsymtab; /* symbol.c */ +extern int alloccounts; /* memory.c */
\ No newline at end of file |