#ifndef WONKY_DEBUG_AST_H
#define WONKY_DEBUG_AST_H WONKY_DEBUG_AST_H
#include <ast.h>
#include <debug.h>
#include <common.h>
_Bool is_valid_ast_enum(enum AST_Type ast_type);
_Bool is_valid_ast_expression_enum(enum AST_Type ast_type);
_Bool is_valid_ast(struct AST *ast);
_Bool is_valid_ast_expression(struct AST_Expression *expression);
_Bool is_valid_ast_error(struct AST_Error *error);
_Bool is_valid_ast_error_declaration(struct AST_Declaration_Error *error);
_Bool is_valid_binary_expression(struct AST_Binary_Expression *expression);
_Bool is_valid_pointer_addition_expression(struct AST_Pointer_Addition_Expression *addition);
_Bool is_valid_conditional_expression(struct AST_Conditional_Expression *conditional_expression);
_Bool is_valid_function_expression(struct AST_Function_Expression *function_call);
_Bool is_valid_ast_constant(struct AST_Constant *constant);
_Bool is_valid_ast_string_literal(struct AST_String_Literal *literal);
_Bool is_valid_ast_designator(struct AST_Designator *designator);
_Bool is_valid_unary_expression(struct AST_Unary_Expression *expression);
_Bool is_valid_labeled_statement(struct AST_Labeled_Statement *statement);
_Bool is_valid_case_statement(struct AST_Case_Statement *statement);
_Bool is_valid_default_statement(struct AST_Default_Statement *statement);
_Bool is_valid_break_continue_statement(struct AST_Break_Continue_Statement *statement);
_Bool is_valid_compound_statement(struct AST_Compound_Statement *statement);
_Bool is_valid_for_statement(struct AST_For_Statement *statement);
_Bool is_valid_while_statement(struct AST_While_Statement *statement);
_Bool is_valid_do_while_statement(struct AST_Do_While_Statement *statement);
_Bool is_valid_if_statement(struct AST_If_Statement *statement);
_Bool is_valid_goto_statement(struct AST_Goto_Statement *statement);
_Bool is_valid_switch_statement(struct AST_Switch_Statement *statement);
_Bool is_valid_return_statement(struct AST_Return_Statement *statement);
_Bool is_valid_type_definition(struct AST_Type_Definition *definition);
_Bool is_valid_object_declaration(struct AST_Object_Declaration *declaration);
_Bool is_valid_function_definition(struct AST_Function_Definition *definition);
_Bool is_valid_function_declaration(struct AST_Function_Declaration *declaration);
_Bool is_valid_translation_unit(struct AST_Translation_Unit *unit);
#endif