+#include <msp/core/algorithm.h>
#include <msp/core/maputils.h>
#include <msp/debug/demangle.h>
#include <msp/gl/extensions/arb_direct_state_access.h>
throw too_many_uniforms(tag.str());
}
- vector<TaggedUniform>::iterator j = lower_bound(uniforms.begin(), uniforms.end(), tag, uniform_tag_compare);
+ vector<TaggedUniform>::iterator j = lower_bound_member(uniforms, tag, &TaggedUniform::tag);
TaggedUniform nu;
nu.tag = tag;
void ProgramData::remove_uniform(Tag tag)
{
- vector<TaggedUniform>::const_iterator i = lower_bound(uniforms.begin(), uniforms.end(), tag, uniform_tag_compare);
+ vector<TaggedUniform>::const_iterator i = lower_bound_member(uniforms, tag, &TaggedUniform::tag);
if(i==uniforms.end() || i->tag!=tag)
return;
return (i>=0 ? uniforms[i].value : 0);
}
-bool ProgramData::uniform_tag_compare(const TaggedUniform &tu, Tag tag)
-{
- return tu.tag<tag;
-}
-
int ProgramData::find_uniform_index(Tag tag) const
{
- vector<TaggedUniform>::const_iterator i = lower_bound(uniforms.begin(), uniforms.end(), tag, uniform_tag_compare);
+ vector<TaggedUniform>::const_iterator i = lower_bound_member(uniforms, tag, &TaggedUniform::tag);
return ((i!=uniforms.end() && i->tag==tag) ? i-uniforms.begin() : -1);
}