diff options
Diffstat (limited to 'src/tree.c')
-rw-r--r-- | src/tree.c | 54 |
1 files changed, 34 insertions, 20 deletions
@@ -1,34 +1,48 @@ #include "include/tree.h" + +prim_t* prim_init(int type) { + prim_t* prim = calloc(1, sizeof(struct PRIM_STRUC)); + + prim->type = type; + prim->is_mutable = 0; + + switch(type) { + case STR: + prim->val.prim_str.len = NULL; + prim->val.prim_str.val = NULL; + break; + case INT: + prim->val.prim_int.val = NULL; + default: + prim->val.prim_unkwn.val = NULL; + } + + return prim; +} + + tree_t* tree_init(int type) { tree_t* tree = calloc(1, sizeof(struct TREE_STRUC)); tree->type = type; switch (type) { - case TREE_VAR_DEF: - tree->data.var_def.name = NULL; - tree->data.var_def.val = NULL; - tree->data.var_def.is_const = 0; - break; - case TREE_VAR: - tree->data.var.name = NULL; + case TREE_PRIM: + tree->oftype.prim.val = 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; + case TREE_SUBTREE: + tree->oftype.subtree.size = 0; + tree->oftype.subtree.val = NULL; break; - case TREE_FN_CALL: - tree->data.fn_call.name = NULL; - tree->data.fn_call.argv = NULL; - tree->data.fn_call.argsize = 0; + case TREE_DEF: + tree->oftype.def.args = NULL; + tree->oftype.def.name = NULL; + tree->oftype.def.val = NULL; break; - case TREE_STR: - tree->data.str.val = NULL; - tree->data.subtree.val = NULL; - tree->data.subtree.size = 0; + case TREE_CALL: + tree->oftype.call.args = NULL; + tree->oftype.call.name = NULL; break; } |