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 *stmt = talloc(parser, struct grub2_statement);
18 stmt->type = STMT_TYPE_SIMPLE;
19 stmt->simple.argv = argv;
23 struct grub2_statement *create_statement_menuentry(struct grub2_parser *parser,
24 struct grub2_argv *argv, struct grub2_statements *stmts)
26 struct grub2_statement *stmt = talloc(parser, struct grub2_statement);
27 stmt->type = STMT_TYPE_MENUENTRY;
28 stmt->menuentry.argv = argv;
29 stmt->menuentry.statements = stmts;
33 struct grub2_statement *create_statement_if(struct grub2_parser *parser,
34 struct grub2_statement *condition,
35 struct grub2_statements *true_case,
36 struct grub2_statements *false_case)
38 struct grub2_statement *stmt = talloc(parser, struct grub2_statement);
39 stmt->type = STMT_TYPE_IF;
40 stmt->ifstmt.condition = condition;
41 stmt->ifstmt.true_case = true_case;
42 stmt->ifstmt.false_case = false_case;
45 void statement_append(struct grub2_statements *stmts,
46 struct grub2_statement *stmt)
50 list_add_tail(&stmts->list, &stmt->list);
53 struct grub2_word *create_word(struct grub2_parser *parser, const char *text,
54 bool expand, bool split)
56 struct grub2_word *word = talloc(parser, struct grub2_word);
57 word->text = talloc_strdup(word, text);
58 word->expand = expand;
64 struct grub2_argv *create_argv(struct grub2_parser *parser)
66 struct grub2_argv *argv = talloc(parser, struct grub2_argv);
67 list_init(&argv->words);
71 void argv_append(struct grub2_argv *argv, struct grub2_word *word)
73 list_add_tail(&argv->words, &word->argv_list);
76 void word_append(struct grub2_word *w1, struct grub2_word *w2)