2 #include <talloc/talloc.h>
6 struct grub2_statements *create_statements(struct grub2_parser *parser)
8 struct grub2_statements *stmts = talloc(parser,
9 struct grub2_statements);
10 list_init(&stmts->list);
14 struct grub2_statement *create_statement_simple(struct grub2_parser *parser,
15 struct grub2_argv *argv)
17 struct grub2_statement_simple *stmt =
18 talloc(parser, struct grub2_statement_simple);
19 stmt->st.type = STMT_TYPE_SIMPLE;
24 struct grub2_statement *create_statement_menuentry(struct grub2_parser *parser,
25 struct grub2_argv *argv, struct grub2_statements *stmts)
27 struct grub2_statement_menuentry *stmt =
28 talloc(parser, struct grub2_statement_menuentry);
29 stmt->st.type = STMT_TYPE_MENUENTRY;
31 stmt->statements = stmts;
35 struct grub2_statement *create_statement_if(struct grub2_parser *parser,
36 struct grub2_statement *condition,
37 struct grub2_statements *true_case,
38 struct grub2_statements *false_case)
40 struct grub2_statement_if *stmt =
41 talloc(parser, struct grub2_statement_if);
42 stmt->st.type = STMT_TYPE_IF;
43 stmt->condition = condition;
44 stmt->true_case = true_case;
45 stmt->false_case = false_case;
49 struct grub2_statement *create_statement_block(struct grub2_parser *parser,
50 struct grub2_statements *stmts)
52 struct grub2_statement_block *stmt =
53 talloc(parser, struct grub2_statement_block);
54 stmt->st.type = STMT_TYPE_BLOCK;
55 stmt->statements = stmts;
59 void statement_append(struct grub2_statements *stmts,
60 struct grub2_statement *stmt)
64 list_add_tail(&stmts->list, &stmt->list);
67 struct grub2_word *create_word(struct grub2_parser *parser, const char *text,
68 bool expand, bool split)
70 struct grub2_word *word = talloc(parser, struct grub2_word);
71 word->text = talloc_strdup(word, text);
72 word->expand = expand;
78 struct grub2_argv *create_argv(struct grub2_parser *parser)
80 struct grub2_argv *argv = talloc(parser, struct grub2_argv);
81 list_init(&argv->words);
85 void argv_append(struct grub2_argv *argv, struct grub2_word *word)
87 list_add_tail(&argv->words, &word->argv_list);
90 void word_append(struct grub2_word *w1, struct grub2_word *w2)