enum scene_ast_node_type { S_AstNode_Invalid, S_AstNode_BlockStatement, S_AstNode_SceneDecl, S_AstNode_Count, }; struct scene_ast_node; struct scene_ast_node_invalid {}; struct scene_ast_node_block_statement {scene_ast_node *First; scene_ast_node *Last;}; struct scene_ast_node_scene_declaration {}; struct scene_ast_node { scene_ast_node_type Type; union { scene_ast_node_invalid InvalidData; scene_ast_node_block_statement BlockStatementData; scene_ast_node_scene_declaration SceneDeclData; }; };