summaryrefslogtreecommitdiff
path: root/src/core/symbol.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/symbol.h')
-rw-r--r--src/core/symbol.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/core/symbol.h b/src/core/symbol.h
index b3b3b29..e5a331c 100644
--- a/src/core/symbol.h
+++ b/src/core/symbol.h
@@ -37,6 +37,7 @@
#define SYMBOL_H
#include "../defines.h"
+#include "../data/list.h"
#define symbol_set_val(s,v) s->p_val = v
#define symbol_set_sym(s,st) s->sym = st
@@ -55,6 +56,17 @@ typedef enum {
SYM_VARIABLE,
} SymbolType;
+/* Wraps a function's body token list and its named parameter names.
+ * Every SYM_FUNCTION symbol stores a FuncDef* as its p_val. */
+typedef struct {
+ List *p_body; /* function body token list */
+ List *p_params; /* list of strdup'd char* param names */
+ int i_nparams; /* cached count of p_params */
+} FuncDef;
+
+FuncDef* funcdef_new(List *p_body, List *p_params, int i_nparams);
+void funcdef_delete(FuncDef *p_funcdef);
+
typedef struct {
SymbolType sym;
void *p_val;