#ifndef AST_H #define AST_H #include "utils/ast/ast_command.h" #include "utils/ast/ast_if.h" #include "utils/ast/ast_list.h" #include "utils/ast/ast_void.h" enum ast_type { AST_END, AST_LIST, AST_IF, AST_CMD }; struct ast { enum ast_type type; /** * Data associated with this AST node. It can be one of the following: * - NULL (AST_END) * - struct ast_if* (AST_IF) * - struct ast_cmd* (AST_CMD) */ void *data; }; /* @brief: returns an ast* with corresponding data and type. * * @note: this function should only be called by ast_create_[TYPE] functions. */ struct ast *ast_create(enum ast_type type, void *data); /* @brief: frees the given ast. If ast is NULL, does nothing. * */ void ast_free(struct ast *node) #endif /* ! AST_H */