mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
glsl/pp: Store both line number and file index in a single token.
This commit is contained in:
parent
8212e4d9fa
commit
9a1447d449
3 changed files with 16 additions and 25 deletions
|
|
@ -42,6 +42,7 @@ sl_pp_process_line(struct sl_pp_context *context,
|
|||
int line_number = -1;
|
||||
int file_number = -1;
|
||||
unsigned int line;
|
||||
unsigned int file;
|
||||
|
||||
memset(&state, 0, sizeof(state));
|
||||
for (i = first; i < last;) {
|
||||
|
|
@ -94,37 +95,25 @@ sl_pp_process_line(struct sl_pp_context *context,
|
|||
free(state.out);
|
||||
|
||||
line = atoi(sl_pp_context_cstr(context, line_number));
|
||||
if (file_number != -1) {
|
||||
file = atoi(sl_pp_context_cstr(context, file_number));
|
||||
} else {
|
||||
file = context->file;
|
||||
}
|
||||
|
||||
if (context->line != line) {
|
||||
if (context->line != line || context->file != file) {
|
||||
struct sl_pp_token_info ti;
|
||||
|
||||
ti.token = SL_PP_LINE;
|
||||
ti.data.line = line;
|
||||
ti.data.line.lineno = line;
|
||||
ti.data.line.fileno = file;
|
||||
if (sl_pp_process_out(pstate, &ti)) {
|
||||
strcpy(context->error_msg, "out of memory");
|
||||
return -1;
|
||||
}
|
||||
|
||||
context->line = line;
|
||||
}
|
||||
|
||||
if (file_number != -1) {
|
||||
unsigned int file;
|
||||
|
||||
file = atoi(sl_pp_context_cstr(context, file_number));
|
||||
|
||||
if (context->file != file) {
|
||||
struct sl_pp_token_info ti;
|
||||
|
||||
ti.token = SL_PP_FILE;
|
||||
ti.data.file = file;
|
||||
if (sl_pp_process_out(pstate, &ti)) {
|
||||
strcpy(context->error_msg, "out of memory");
|
||||
return -1;
|
||||
}
|
||||
|
||||
context->file = file;
|
||||
}
|
||||
context->file = file;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -79,7 +79,8 @@ sl_pp_process(struct sl_pp_context *context,
|
|||
struct sl_pp_token_info ti;
|
||||
|
||||
ti.token = SL_PP_LINE;
|
||||
ti.data.line = context->line - 1;
|
||||
ti.data.line.lineno = context->line - 1;
|
||||
ti.data.line.fileno = context->file;
|
||||
if (sl_pp_process_out(&state, &ti)) {
|
||||
strcpy(context->error_msg, "out of memory");
|
||||
return -1;
|
||||
|
|
|
|||
|
|
@ -96,7 +96,6 @@ enum sl_pp_token {
|
|||
SL_PP_EXTENSION_DISABLE,
|
||||
|
||||
SL_PP_LINE,
|
||||
SL_PP_FILE,
|
||||
|
||||
SL_PP_EOF
|
||||
};
|
||||
|
|
@ -108,8 +107,10 @@ union sl_pp_token_data {
|
|||
char other;
|
||||
int pragma;
|
||||
int extension;
|
||||
unsigned int line;
|
||||
unsigned int file;
|
||||
union {
|
||||
unsigned int lineno: 24;
|
||||
unsigned int fileno: 8;
|
||||
} line;
|
||||
};
|
||||
|
||||
struct sl_pp_token_info {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue