glsl: Rename sl_pp_context_add_str to sl_pp_context_add_unique_str.
Return the same offset for same strings. Allows to compare strings by comparing their's offsets.
This commit is contained in:
parent
fd991d845a
commit
5e8e3cddae
|
@ -43,14 +43,28 @@ sl_pp_context_destroy(struct sl_pp_context *context)
|
|||
}
|
||||
|
||||
int
|
||||
sl_pp_context_add_str(struct sl_pp_context *context,
|
||||
const char *str)
|
||||
sl_pp_context_add_unique_str(struct sl_pp_context *context,
|
||||
const char *str)
|
||||
{
|
||||
unsigned int size;
|
||||
unsigned int offset;
|
||||
unsigned int offset = 0;
|
||||
|
||||
size = strlen(str) + 1;
|
||||
|
||||
/* Find out if this is a unique string. */
|
||||
while (offset < context->cstr_pool_len) {
|
||||
const char *str2;
|
||||
unsigned int size2;
|
||||
|
||||
str2 = &context->cstr_pool[offset];
|
||||
size2 = strlen(str2) + 1;
|
||||
if (size == size2 && !memcmp(str, str2, size - 1)) {
|
||||
return offset;
|
||||
}
|
||||
|
||||
offset += size2;
|
||||
}
|
||||
|
||||
if (context->cstr_pool_len + size > context->cstr_pool_max) {
|
||||
context->cstr_pool_max = (context->cstr_pool_len + size + 0xffff) & ~0xffff;
|
||||
context->cstr_pool = realloc(context->cstr_pool, context->cstr_pool_max);
|
||||
|
|
|
@ -46,8 +46,8 @@ void
|
|||
sl_pp_context_destroy(struct sl_pp_context *context);
|
||||
|
||||
int
|
||||
sl_pp_context_add_str(struct sl_pp_context *context,
|
||||
const char *str);
|
||||
sl_pp_context_add_unique_str(struct sl_pp_context *context,
|
||||
const char *str);
|
||||
|
||||
const char *
|
||||
sl_pp_context_cstr(const struct sl_pp_context *context,
|
||||
|
|
|
@ -53,7 +53,7 @@ _tokenise_identifier(struct sl_pp_context *context,
|
|||
}
|
||||
identifier[i++] = '\0';
|
||||
|
||||
info->data.identifier = sl_pp_context_add_str(context, identifier);
|
||||
info->data.identifier = sl_pp_context_add_unique_str(context, identifier);
|
||||
if (info->data.identifier == -1) {
|
||||
return -1;
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ _tokenise_number(struct sl_pp_context *context,
|
|||
}
|
||||
number[i++] = '\0';
|
||||
|
||||
info->data.number = sl_pp_context_add_str(context, number);
|
||||
info->data.number = sl_pp_context_add_unique_str(context, number);
|
||||
if (info->data.number == -1) {
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
#ifndef SL_PP_TOKEN_H
|
||||
#define SL_PP_TOKEN_H
|
||||
|
||||
#include "sl_pp_context.h"
|
||||
|
||||
|
||||
enum sl_pp_token {
|
||||
SL_PP_WHITESPACE,
|
||||
|
|
Loading…
Reference in New Issue