mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 00:49:04 +02:00
glsl: Centralise sl_pp_macro constructor.
This commit is contained in:
parent
6a11d4150c
commit
2dad8ed9d6
4 changed files with 24 additions and 18 deletions
|
|
@ -112,12 +112,6 @@ sl_pp_process_define(struct sl_pp_context *context,
|
|||
unsigned int body_len;
|
||||
unsigned int j;
|
||||
|
||||
macro->name = -1;
|
||||
macro->num_args = -1;
|
||||
macro->arg = NULL;
|
||||
macro->body = NULL;
|
||||
macro->next = NULL;
|
||||
|
||||
if (first < last && input[first].token == SL_PP_IDENTIFIER) {
|
||||
macro->name = input[first].data.identifier;
|
||||
first++;
|
||||
|
|
|
|||
|
|
@ -30,13 +30,17 @@
|
|||
#include "sl_pp_process.h"
|
||||
|
||||
|
||||
static void
|
||||
skip_whitespace(const struct sl_pp_token_info *input,
|
||||
unsigned int *pi)
|
||||
struct sl_pp_macro *
|
||||
sl_pp_macro_new(void)
|
||||
{
|
||||
while (input[*pi].token == SL_PP_WHITESPACE) {
|
||||
(*pi)++;
|
||||
struct sl_pp_macro *macro;
|
||||
|
||||
macro = calloc(1, sizeof(struct sl_pp_macro));
|
||||
if (macro) {
|
||||
macro->name = -1;
|
||||
macro->num_args = -1;
|
||||
}
|
||||
return macro;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -60,6 +64,15 @@ sl_pp_macro_free(struct sl_pp_macro *macro)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
skip_whitespace(const struct sl_pp_token_info *input,
|
||||
unsigned int *pi)
|
||||
{
|
||||
while (input[*pi].token == SL_PP_WHITESPACE) {
|
||||
(*pi)++;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
sl_pp_macro_expand(struct sl_pp_context *context,
|
||||
const struct sl_pp_token_info *input,
|
||||
|
|
@ -124,16 +137,12 @@ sl_pp_macro_expand(struct sl_pp_context *context,
|
|||
unsigned int paren_nesting = 0;
|
||||
unsigned int k;
|
||||
|
||||
*pmacro = malloc(sizeof(struct sl_pp_macro));
|
||||
*pmacro = sl_pp_macro_new();
|
||||
if (!*pmacro) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
(**pmacro).name = formal_arg->name;
|
||||
(**pmacro).num_args = -1;
|
||||
(**pmacro).arg = NULL;
|
||||
(**pmacro).body = NULL;
|
||||
(**pmacro).next = NULL;
|
||||
|
||||
body_len = 1;
|
||||
for (i = *pi; !done; i++) {
|
||||
|
|
|
|||
|
|
@ -38,12 +38,15 @@ struct sl_pp_macro_formal_arg {
|
|||
|
||||
struct sl_pp_macro {
|
||||
int name;
|
||||
int num_args;
|
||||
int num_args; /* -1 means no args, 0 means `()' */
|
||||
struct sl_pp_macro_formal_arg *arg;
|
||||
struct sl_pp_token_info *body;
|
||||
struct sl_pp_macro *next;
|
||||
};
|
||||
|
||||
struct sl_pp_macro *
|
||||
sl_pp_macro_new(void);
|
||||
|
||||
void
|
||||
sl_pp_macro_free(struct sl_pp_macro *macro);
|
||||
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ sl_pp_process(struct sl_pp_context *context,
|
|||
last = i - 1;
|
||||
|
||||
if (!strcmp(name, "define")) {
|
||||
*macro = malloc(sizeof(struct sl_pp_macro));
|
||||
*macro = sl_pp_macro_new();
|
||||
if (!*macro) {
|
||||
return -1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue