]> git.ozlabs.org Git - petitboot/blobdiff - discover/grub2/grub2.h
discover/grub2: Use subclass-style structs for AST
[petitboot] / discover / grub2 / grub2.h
index cc817ff4b9eae7e29fb6ebbcebf5775d3376f293..0643a7293d8aba9025e742d5c822f7ff8901d6fc 100644 (file)
@@ -18,45 +18,43 @@ struct grub2_argv {
        struct list             words;
 };
 
+struct grub2_statements {
+       struct list             list;
+};
+
+struct grub2_statement {
+       struct list_item        list;
+       enum {
+               STMT_TYPE_SIMPLE,
+               STMT_TYPE_MENUENTRY,
+               STMT_TYPE_IF,
+               STMT_TYPE_BLOCK,
+       } type;
+};
+
 struct grub2_statement_simple {
+       struct grub2_statement  st;
        struct grub2_argv       *argv;
 };
 
 struct grub2_statement_menuentry {
+       struct grub2_statement  st;
        struct grub2_argv       *argv;
        struct grub2_statements *statements;
 };
 
 struct grub2_statement_if {
+       struct grub2_statement  st;
        struct grub2_statement  *condition;
        struct grub2_statements *true_case;
        struct grub2_statements *false_case;
 };
 
 struct grub2_statement_block {
+       struct grub2_statement  st;
        struct grub2_statements *statements;
 };
 
-struct grub2_statement {
-       struct list_item        list;
-       enum {
-               STMT_TYPE_SIMPLE,
-               STMT_TYPE_MENUENTRY,
-               STMT_TYPE_IF,
-               STMT_TYPE_BLOCK,
-       } type;
-       union {
-               struct grub2_statement_simple           simple;
-               struct grub2_statement_menuentry        menuentry;
-               struct grub2_statement_if               ifstmt;
-               struct grub2_statement_block            block;
-       };
-};
-
-struct grub2_statements {
-       struct list             list;
-};
-
 struct grub2_parser {
        void                    *scanner;
        struct grub2_statements *statements;