mesa: simplify and inline _mesa_lookup_parameter_index()

The function has only one user and strings are always null terminated.

Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
Timothy Arceri 2016-03-18 11:21:13 +11:00
parent 350b1ef027
commit fa9bd6b663
3 changed files with 18 additions and 41 deletions

View file

@ -2356,7 +2356,7 @@ add_uniform_to_shader::visit_field(const glsl_type *type, const char *name,
file = PROGRAM_UNIFORM;
}
int index = _mesa_lookup_parameter_index(params, -1, name);
int index = _mesa_lookup_parameter_index(params, name);
if (index < 0) {
index = _mesa_add_parameter(params, file, name, size, type->gl_type,
NULL, NULL);

View file

@ -415,41 +415,3 @@ _mesa_add_state_reference(struct gl_program_parameter_list *paramList,
return index;
}
/**
* Given a program parameter name, find its position in the list of parameters.
* \param paramList the parameter list to search
* \param nameLen length of name (in chars).
* If length is negative, assume that name is null-terminated.
* \param name the name to search for
* \return index of parameter in the list.
*/
GLint
_mesa_lookup_parameter_index(const struct gl_program_parameter_list *paramList,
GLsizei nameLen, const char *name)
{
GLint i;
if (!paramList)
return -1;
if (nameLen == -1) {
/* name is null-terminated */
for (i = 0; i < (GLint) paramList->NumParameters; i++) {
if (paramList->Parameters[i].Name &&
strcmp(paramList->Parameters[i].Name, name) == 0)
return i;
}
}
else {
/* name is not null-terminated, use nameLen */
for (i = 0; i < (GLint) paramList->NumParameters; i++) {
if (paramList->Parameters[i].Name &&
strncmp(paramList->Parameters[i].Name, name, nameLen) == 0
&& strlen(paramList->Parameters[i].Name) == (size_t)nameLen)
return i;
}
}
return -1;
}

View file

@ -34,6 +34,7 @@
#include "main/mtypes.h"
#include "prog_statevars.h"
#include <string.h>
#ifdef __cplusplus
extern "C" {
@ -124,9 +125,23 @@ extern GLint
_mesa_add_state_reference(struct gl_program_parameter_list *paramList,
const gl_state_index stateTokens[STATE_LENGTH]);
extern GLint
static inline GLint
_mesa_lookup_parameter_index(const struct gl_program_parameter_list *paramList,
GLsizei nameLen, const char *name);
const char *name)
{
if (!paramList)
return -1;
/* name must be null-terminated */
for (GLint i = 0; i < (GLint) paramList->NumParameters; i++) {
if (paramList->Parameters[i].Name &&
strcmp(paramList->Parameters[i].Name, name) == 0)
return i;
}
return -1;
}
#ifdef __cplusplus
}