aboutsummaryrefslogtreecommitdiff
path: root/src/tree.c
diff options
context:
space:
mode:
authorc+12023-05-10 00:50:10 -0400
committerc+12023-05-10 00:50:10 -0400
commit266d3d6af1ba8d338bb8b9ad09431483276dae46 (patch)
tree4c4ce456e9c1bfc6e0fdc370dffa5da82d797868 /src/tree.c
parentdeb8d97be58847031e7f4ef25d7107cb2dbc35a3 (diff)
halk.
Diffstat (limited to 'src/tree.c')
-rw-r--r--src/tree.c37
1 files changed, 25 insertions, 12 deletions
diff --git a/src/tree.c b/src/tree.c
index 2949c21..338ab24 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -5,18 +5,31 @@ tree_t* tree_init(int type) {
tree->type = type;
- char* var_def_name = NULL;
- struct TREE_STRUC* var_def_val = NULL;
- char* var_name = NULL;
-
- char* fn_call_name = NULL;
- struct TREE_STRUC** fn_call_argv = NULL;
- size_t fn_call_argsize = 0;
-
- char* str_val = NULL;
-
- struct TREE_STRUC* subtree_val = NULL;
- size_t subtree_size = 0;
+ switch (type) {
+ case TREE_VAR_DEF:
+ tree->data.var_def.name = NULL;
+ tree->data.var_def.val = NULL;
+ break;
+ case TREE_VAR:
+ tree->data.var.name = NULL;
+ break;
+ case TREE_FN_DEF:
+ tree->data.fn_def.name = NULL;
+ tree->data.fn_def.val = NULL;
+ tree->data.fn_def.argv = NULL;
+ tree->data.fn_def.argsize = 0;
+ break;
+ case TREE_FN_CALL:
+ tree->data.fn_call.name = NULL;
+ tree->data.fn_call.argv = NULL;
+ tree->data.fn_call.argsize = 0;
+ break;
+ case TREE_STR:
+ tree->data.str.val = NULL;
+ tree->data.subtree.val = NULL;
+ tree->data.subtree.size = 0;
+ break;
+ }
return tree;
}