summaryrefslogtreecommitdiff
path: root/apl9.h
diff options
context:
space:
mode:
Diffstat (limited to 'apl9.h')
-rw-r--r--apl9.h26
1 files changed, 20 insertions, 6 deletions
diff --git a/apl9.h b/apl9.h
index 78b5c11..7f194d0 100644
--- a/apl9.h
+++ b/apl9.h
@@ -67,6 +67,7 @@ typedef struct Symbol Symbol;
typedef struct Symtab Symtab;
typedef struct QuadnameDef QuadnameDef;
typedef struct ErrorHandler ErrorHandler;
+typedef struct DfnFrame DfnFrame;
struct Array
{
@@ -178,6 +179,13 @@ struct ErrorHandler
jmp_buf jmp;
};
+struct DfnFrame
+{
+ Rune *code;
+ Symtab *symtab;
+ DfnFrame *prev;
+};
+
/* Function prototypes for the different source files */
/* main.c */
Datum *evalline(Rune *, int);
@@ -214,9 +222,15 @@ Array *fillelement(Array *);
Datum *eval(Statement *, int);
/* symbol.c */
-Symbol *getsym(Symtab *, Rune *);
-Symtab *newsymtab(void);
-void freesymtab(Symtab *);
+Symbol *getsym(Rune *);
+void initsymtab(void);
+DfnFrame *getcurrentdfn(void);
+DfnFrame *pushdfnframe(Rune *);
+void popdfnframe(void);
+vlong globalIO(void);
+void globalIOset(vlong);
+int globalDIV(void);
+void globalDIVset(int);
/* memory.c */
void *emalloc(ulong);
@@ -271,6 +285,7 @@ Array *fnShape(Array *);
Array *fnReverseLast(Array *);
Array *fnReverseFirst(Array *);
Array *fnTranspose(Array *);
+Array *fnSelfRef1(Array *);
/* Dyadic functions from function.c */
Array *fnPlus(Array *, Array *);
@@ -300,6 +315,7 @@ Array *fnIndex(Array *, Array *);
Array *fnCatenateLast(Array *, Array *);
Array *fnCatenateFirst(Array *, Array *);
Array *fnReshape(Array *, Array *);
+Array *fnSelfRef2(Array *, Array *);
/* Monadic operators from operators.c */
Array *opEach(Datum *, Array *, Array *);
@@ -332,10 +348,8 @@ extern opmonad monadoperatordefs[]; /* operators.c */
extern opdyad dyadoperatordefs[]; /* operators.c */
extern fndyad hybridfunctiondefs[]; /* hybrids.c */
extern opmonad hybridoperatordefs[]; /* hybrids.c */
-extern Symtab *globalsymtab; /* symbol.c */
-extern Symtab *currentsymtab; /* symbol.c */
extern int alloccounts; /* memory.c */
extern QuadnameDef quadnames[]; /* quadnames.c */
extern int printprecision; /* print.c */
extern ErrorHandler globalerror; /* error.c */
-extern Rune *errorstrs[]; /* error.c */ \ No newline at end of file
+extern Rune *errorstrs[]; /* error.c */