diff options
Diffstat (limited to 'apl9.h')
-rw-r--r-- | apl9.h | 27 |
1 files changed, 24 insertions, 3 deletions
@@ -20,7 +20,8 @@ typedef enum typedef enum { - AtypeInt + AtypeInt, + AtypeArray } arrayDataType; /* Data types */ @@ -32,18 +33,20 @@ struct Array arrayDataType type; int rank; int *shape; + int size; union { char *rawdata; vlong *intdata; + Array **arraydata; }; }; struct Datum { datumTag tag; - Rune *strrep; union { Array *array; + int code; }; }; @@ -51,15 +54,33 @@ struct Datum /* print.c */ Rune *ppdatum(Datum); Rune *ppdatums(Datum *, int); +Rune *pparray(Array *); /* lexer.c */ Datum *lexline(Rune *, int *); /* array.c */ +Array *mkarray(int, int, int); Array *mkscalarint(vlong); +Array *duparray(Array *); +int simplearray(Array *); +int simplescalar(Array *); /* eval.c */ Datum *eval(Datum *, int *); +/* Monadic functions from functions.h */ +Array *fnEnclose(Array *); +Array *fnNest(Array *); +Array *fnRavel(Array *); + +/* Dyadic functions from functions.h */ +Array *fnCatenateFirst(Array *, Array *); + /* Global variables */ -Rune *errormsg; /* eval.c */
\ No newline at end of file +extern Rune *errormsg; /* eval.c */ +extern int datasizes[]; /* array.c */ +extern Rune primfuncnames[]; /* lexer.c */ +extern Rune primmonopnames[]; /* lexer.c */ +extern Rune primdyadopnames[]; /* lexer.c */ +extern Rune primhybridnames[]; /* lexer.c */
\ No newline at end of file |