]> git.tdb.fi Git - libs/gl.git/blobdiff - source/effects/effect.cpp
Use a sorted vector in place of set for small data
[libs/gl.git] / source / effects / effect.cpp
index 05ef5a10f1c2acee31f801053ffe94fc50259d5a..e59aeed8e039dcbc352d6daf6904a3b44eacaa06 100644 (file)
@@ -1,3 +1,4 @@
+#include <msp/core/algorithm.h>
 #include "effect.h"
 
 namespace Msp {
@@ -6,17 +7,27 @@ namespace GL {
 Effect::Effect(Renderable &r):
        renderable(r)
 {
-       enabled_methods.insert(Tag());
+       enable_for_method(Tag());
 }
 
 void Effect::enable_for_method(Tag tag)
 {
-       enabled_methods.insert(tag);
+       auto i = lower_bound(enabled_methods, tag);
+       if(i==enabled_methods.end() || *i!=tag)
+               enabled_methods.insert(i, tag);
 }
 
 void Effect::disable_for_method(Tag tag)
 {
-       enabled_methods.erase(tag);
+       auto i = lower_bound(enabled_methods, tag);
+       if(i!=enabled_methods.end() && *i==tag)
+               enabled_methods.erase(i);
+}
+
+bool Effect::is_enabled_for_method(Tag tag) const
+{
+       auto i = lower_bound(enabled_methods, tag);
+       return (i!=enabled_methods.end() && *i==tag);
 }