]> git.tdb.fi Git - libs/gl.git/commitdiff
Use maputils functions
authorMikko Rasa <tdb@tdb.fi>
Tue, 6 Sep 2011 20:37:38 +0000 (23:37 +0300)
committerMikko Rasa <tdb@tdb.fi>
Tue, 6 Sep 2011 20:38:37 +0000 (23:38 +0300)
source/pipeline.cpp
source/technique.cpp

index de98b2d383283d4822d1ed7e9b684ac60ed98e4b..eca9a49a3c22dfca97cfa5119da4e2d53710ec7a 100644 (file)
@@ -1,7 +1,7 @@
+#include <msp/core/maputils.h>
 #include "blend.h"
 #include "camera.h"
 #include "effect.h"
-#include "except.h"
 #include "framebuffer.h"
 #include "lighting.h"
 #include "pipeline.h"
@@ -58,28 +58,19 @@ void Pipeline::set_camera(const Camera *c)
 
 PipelinePass &Pipeline::add_pass(const Tag &tag)
 {
-       if(passes.count(tag))
-               throw KeyError("Pass already exists");
-
-       PipelinePass &pass = passes[tag];
+       PipelinePass &pass = insert_unique(passes, tag, PipelinePass())->second;
        pass_order.push_back(tag);
        return pass;
 }
 
 PipelinePass &Pipeline::get_pass(const Tag &tag)
 {
-       PassMap::iterator i = passes.find(tag);
-       if(i==passes.end())
-               throw KeyError("Unknown pass");
-       return i->second;
+       return get_item(passes, tag);
 }
 
 const PipelinePass &Pipeline::get_pass(const Tag &tag) const
 {
-       PassMap::const_iterator i = passes.find(tag);
-       if(i==passes.end())
-               throw KeyError("Unknown pass");
-       return i->second;
+       return get_item(passes, tag);
 }
 
 void Pipeline::add_renderable(const Renderable &r)
index 2a8928a0db557581999c6691bf482a6be118573f..b809abdebb69fdcf4d1a015473285713d5c297f6 100644 (file)
@@ -15,10 +15,7 @@ namespace GL {
 
 RenderPass &Technique::add_pass(const GL::Tag &tag)
 {
-       if(passes.count(tag))
-               throw KeyError("Duplicate pass");
-
-       return passes[tag];
+       return insert_unique(passes, tag, RenderPass())->second;
 }
 
 bool Technique::has_pass(const GL::Tag &tag) const
@@ -28,10 +25,7 @@ bool Technique::has_pass(const GL::Tag &tag) const
 
 const RenderPass &Technique::get_pass(const GL::Tag &tag) const
 {
-       PassMap::const_iterator i = passes.find(tag);
-       if(i==passes.end())
-               throw KeyError("Unknown pass");
-       return i->second;
+       return get_item(passes, tag);
 }
 
 
@@ -62,16 +56,13 @@ void Technique::Loader::inherit(const string &n)
 
 void Technique::Loader::pass(const string &n)
 {
-       Tag tag(n);
-       if(obj.passes.count(tag))
-               throw KeyError("Duplicate pass name", n);
-
        RenderPass p;
        if(coll)
                load_sub(p, get_collection());
        else
                load_sub(p);
-       obj.passes.insert(PassMap::value_type(tag, p));
+
+       insert_unique(obj.passes, n, p);
 }