Refactor slang_preprocess.cpp - try to remove auto variables

This commit is contained in:
twinaphex 2019-04-25 04:07:18 +02:00
parent a42b8f616f
commit ff40ae2486
1 changed files with 24 additions and 18 deletions

View File

@ -28,31 +28,32 @@ using namespace std;
bool slang_preprocess_parse_parameters(glslang_meta& meta, bool slang_preprocess_parse_parameters(glslang_meta& meta,
struct video_shader *shader) struct video_shader *shader)
{ {
unsigned i;
unsigned old_num_parameters = shader->num_parameters; unsigned old_num_parameters = shader->num_parameters;
/* Assumes num_parameters is /* Assumes num_parameters is
* initialized to something sane. */ * initialized to something sane. */
for (auto &param : meta.parameters) for (i = 0; i < meta.parameters.size(); i++)
{ {
bool mismatch_dup = false; bool mismatch_dup = false;
bool dup = false; bool dup = false;
auto itr = find_if(shader->parameters, auto itr = find_if(shader->parameters,
shader->parameters + shader->num_parameters, shader->parameters + shader->num_parameters,
[&](const video_shader_parameter &parsed_param) [&](const video_shader_parameter &parsed_param)
{ {
return param.id == parsed_param.id; return meta.parameters[i].id == parsed_param.id;
}); });
if (itr != shader->parameters + shader->num_parameters) if (itr != shader->parameters + shader->num_parameters)
{ {
dup = true; dup = true;
/* Allow duplicate #pragma parameter, but only /* Allow duplicate #pragma parameter, but only
* if they are exactly the same. */ * if they are exactly the same. */
if (param.desc != itr->desc || if ( meta.parameters[i].desc != itr->desc ||
param.initial != itr->initial || meta.parameters[i].initial != itr->initial ||
param.minimum != itr->minimum || meta.parameters[i].minimum != itr->minimum ||
param.maximum != itr->maximum || meta.parameters[i].maximum != itr->maximum ||
param.step != itr->step) meta.parameters[i].step != itr->step)
{ {
RARCH_ERR("[slang]: Duplicate parameters" RARCH_ERR("[slang]: Duplicate parameters"
" found for \"%s\", but arguments do not match.\n", " found for \"%s\", but arguments do not match.\n",
@ -70,14 +71,19 @@ bool slang_preprocess_parse_parameters(glslang_meta& meta,
return false; return false;
} }
auto &p = shader->parameters[shader->num_parameters++]; struct video_shader_parameter *p = (struct video_shader_parameter*)
strlcpy(p.id, param.id.c_str(), sizeof(p.id)); &shader->parameters[shader->num_parameters++];
strlcpy(p.desc, param.desc.c_str(), sizeof(p.desc));
p.initial = param.initial; if (!p)
p.minimum = param.minimum; continue;
p.maximum = param.maximum;
p.step = param.step; strlcpy(p->id, meta.parameters[i].id.c_str(), sizeof(p->id));
p.current = param.initial; strlcpy(p->desc, meta.parameters[i].desc.c_str(), sizeof(p->desc));
p->initial = meta.parameters[i].initial;
p->minimum = meta.parameters[i].minimum;
p->maximum = meta.parameters[i].maximum;
p->step = meta.parameters[i].step;
p->current = meta.parameters[i].initial;
} }
return true; return true;