Rewrite find_param_from_semantic

This commit is contained in:
twinaphex 2015-04-05 03:35:21 +02:00
parent 6e04afad4d
commit 4a41dbcda7

View File

@ -54,35 +54,40 @@ static INLINE bool validate_param_name(const char *name)
}
static INLINE CGparameter find_param_from_semantic(
CGparameter param, const std::string &sem)
CGparameter param, const char *sem)
{
while (param)
{
if (cgGetParameterType(param) == CG_STRUCT)
{
CGparameter ret = find_param_from_semantic(
cgGetFirstStructParameter(param), sem);
CGparameter ret;
CGtype type = cgGetParameterType(param);
if (ret)
return ret;
}
else
switch (type)
{
if (cgGetParameterSemantic(param) &&
sem == cgGetParameterSemantic(param) &&
cgGetParameterDirection(param) == CG_IN &&
cgGetParameterVariability(param) == CG_VARYING &&
validate_param_name(cgGetParameterName(param)))
return param;
case CG_STRUCT:
ret = find_param_from_semantic(
cgGetFirstStructParameter(param), sem);
if (ret)
return ret;
break;
default:
if (cgGetParameterSemantic(param) &&
sem == cgGetParameterSemantic(param) &&
cgGetParameterDirection(param) == CG_IN &&
cgGetParameterVariability(param) == CG_VARYING &&
validate_param_name(cgGetParameterName(param)))
return param;
break;
}
param = cgGetNextParameter(param);
}
return NULL;
}
static INLINE CGparameter find_param_from_semantic(CGprogram prog,
const std::string &sem)
static INLINE CGparameter find_param_from_semantic(
CGprogram prog, const char *sem)
{
CGparameter param = cgGetFirstParameter(prog, CG_PROGRAM);
return find_param_from_semantic(param, sem);