glsl: Handle file numbering.

This commit is contained in:
Michal Krol 2009-09-04 15:27:08 +02:00
parent 2d2d638444
commit a64ba93aab
5 changed files with 25 additions and 3 deletions

View file

@ -38,6 +38,7 @@ sl_pp_context_init(struct sl_pp_context *context)
context->if_value = 1;
memset(context->error_msg, 0, sizeof(context->error_msg));
context->line = 1;
context->file = 0;
}
void

View file

@ -50,6 +50,7 @@ struct sl_pp_context {
char error_msg[SL_PP_MAX_ERROR_MSG];
unsigned int line;
unsigned int file;
};
void

View file

@ -134,7 +134,26 @@ sl_pp_process_line(struct sl_pp_context *context,
context->line = line;
}
/* TODO: Do something with the file number. */
if (file_number != -1) {
unsigned int file;
str = sl_pp_context_cstr(context, file_number);
if (_parse_integer(str, &file)) {
return -1;
}
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)) {
return -1;
}
context->file = file;
}
}
return 0;
}

View file

@ -138,9 +138,8 @@ sl_pp_macro_expand(struct sl_pp_context *context,
(*pi)++;
return 0;
}
/* TODO: Having the following built-ins hardcoded is a bit lame. */
if (!strcmp(macro_str, "__FILE__")) {
if (!mute && _out_number(context, state, 0)) {
if (!mute && _out_number(context, state, context->file)) {
return -1;
}
(*pi)++;

View file

@ -97,6 +97,7 @@ enum sl_pp_token {
SL_PP_EXTENSION_DISABLE,
SL_PP_LINE,
SL_PP_FILE,
SL_PP_EOF
};
@ -108,6 +109,7 @@ union sl_pp_token_data {
int pragma;
int extension;
unsigned int line;
unsigned int file;
};
struct sl_pp_token_info {