From fbc55bfbb852e16b445fb62dca3399949f87dfaf Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 12 Dec 2008 10:03:31 -0700 Subject: mesa: move _slang_locate_function() to different file (cherry picked from commit ea9dc3879f4cbbaa8ce9e305884a4afdc1fdd28a) --- src/mesa/shader/slang/slang_typeinfo.c | 73 +--------------------------------- 1 file changed, 1 insertion(+), 72 deletions(-) (limited to 'src/mesa/shader/slang/slang_typeinfo.c') diff --git a/src/mesa/shader/slang/slang_typeinfo.c b/src/mesa/shader/slang/slang_typeinfo.c index 7fa357ca14..430fc10b67 100644 --- a/src/mesa/shader/slang/slang_typeinfo.c +++ b/src/mesa/shader/slang/slang_typeinfo.c @@ -265,7 +265,7 @@ slang_type_specifier_equal(const slang_type_specifier * x, /** * As above, but allow float/int casting. */ -static GLboolean +GLboolean slang_type_specifier_compatible(const slang_type_specifier * x, const slang_type_specifier * y) { @@ -787,77 +787,6 @@ _slang_typeof_operation_(slang_operation * op, } -/** - * Lookup a function according to name and parameter count/types. - */ -slang_function * -_slang_locate_function(const slang_function_scope * funcs, slang_atom a_name, - slang_operation * args, GLuint num_args, - const slang_name_space * space, slang_atom_pool * atoms, - slang_info_log *log, GLboolean *error) -{ - slang_typeinfo arg_ti[100]; - GLuint i; - - *error = GL_FALSE; - - /* determine type of each argument */ - assert(num_args < 100); - for (i = 0; i < num_args; i++) { - if (!slang_typeinfo_construct(&arg_ti[i])) - return NULL; - if (!_slang_typeof_operation_(&args[i], space, &arg_ti[i], atoms, log)) { - return NULL; - } - } - - /* loop over function scopes */ - while (funcs) { - - /* look for function with matching name and argument/param types */ - for (i = 0; i < funcs->num_functions; i++) { - slang_function *f = &funcs->functions[i]; - const GLuint haveRetValue = _slang_function_has_return_value(f); - GLuint j; - - if (a_name != f->header.a_name) - continue; - if (f->param_count - haveRetValue != num_args) - continue; - - /* compare parameter / argument types */ - for (j = 0; j < num_args; j++) { - if (!slang_type_specifier_compatible(&arg_ti[j].spec, - &f->parameters->variables[j]->type.specifier)) { - /* param/arg types don't match */ - break; - } - - /* "out" and "inout" formal parameter requires the actual - * argument to be an l-value. - */ - if (!arg_ti[j].can_be_referenced && - (f->parameters->variables[j]->type.qualifier == SLANG_QUAL_OUT || - f->parameters->variables[j]->type.qualifier == SLANG_QUAL_INOUT)) { - /* param is not an lvalue! */ - *error = GL_TRUE; - return NULL; - } - } - - if (j == num_args) { - /* name and args match! */ - return f; - } - } - - funcs = funcs->outer_scope; - } - - return NULL; -} - - /** * Determine if a type is a matrix. * \return GL_TRUE if is a matrix, GL_FALSE otherwise. -- cgit v1.2.3