#include "ast_if.h" #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) return NULL; if_data->condition = condition; if_data->then_clause = then_clause; if_data->else_clause = else_clause; return ast_create(AST_IF, if_data); } struct ast_if *ast_get_if(struct ast *node) { if (node == NULL || node->type == AST_IF) return NULL; return node->data; } bool ast_is_if(struct ast *node) { return node != NULL && node->type == AST_IF; } 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); }