]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/syntax.cpp
Move unique name generation to syntax.cpp
[libs/gl.git] / source / glsl / syntax.cpp
index 469ce5a602c2f22a464a5896c003c5aa209d29ef..cb50fee18b79538c126482594a023ea8f3864001 100644 (file)
@@ -464,6 +464,37 @@ Module::Module():
        shared(Stage::SHARED)
 { }
 
+
+string get_unused_variable_name(const Block &block, const string &base, const string &prefix_hint)
+{
+       string name = base;
+
+       bool prefixed = false;
+       unsigned number = 1;
+       unsigned size_without_number = name.size();
+       while(block.variables.count(name))
+       {
+               if(!prefixed && !prefix_hint.empty())
+               {
+                       if(name.front()!='_')
+                               name = "_"+name;
+                       name = prefix_hint+name;
+                       if(name.front()!='_')
+                               name = "_"+name;
+                       prefixed = true;
+                       size_without_number = name.size();
+               }
+               else
+               {
+                       name.erase(size_without_number);
+                       name += format("_%d", number);
+                       ++number;
+               }
+       }
+
+       return name;
+}
+
 } // namespace SL
 } // namespace GL
 } // namespace Msp