--- /dev/null
+#ifndef MSP_GL_SL_REFLECT_H_
+#define MSP_GL_SL_REFLECT_H_
+
+#include "visitor.h"
+
+namespace Msp {
+namespace GL {
+namespace SL {
+
+class LocationCounter: private NodeVisitor
+{
+private:
+ unsigned r_count;
+
+public:
+ LocationCounter();
+
+ unsigned apply(VariableDeclaration &v) { v.visit(*this); return r_count; }
+
+private:
+ virtual void visit(BasicTypeDeclaration &);
+ virtual void visit(ImageTypeDeclaration &);
+ virtual void visit(StructDeclaration &);
+ virtual void visit(VariableDeclaration &);
+};
+
+} // namespace SL
+} // namespace GL
+} // namespace Msp
+
+#endif