#include "ast_if.h" #include #include #include struct ast *ast_create_if(struct ast *condition, struct ast *then_clause, struct ast *else_clause) { struct ast_if *if_data = malloc(sizeof(struct ast_if)); if (!if_data) { perror("Error: could not allocate more memory"); return NULL; } if_data->condition = condition; if_data->then_clause = then_clause; if_data->else_clause = else_clause; struct ast *result = ast_create(AST_IF, if_data); if (result == NULL) free(if_data); return result; } struct ast_if *ast_get_if(struct ast *node) { if (node == NULL || node->type != AST_IF) return NULL; return node->data; } void ast_free_if(struct ast_if *if_data) { if (if_data == NULL) return; ast_free(&if_data->condition); ast_free(&if_data->then_clause); ast_free(&if_data->else_clause); free(if_data); }