]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programdata.h
Some cleanup for View and WindowView
[libs/gl.git] / source / programdata.h
index 78f7292647a97436fed9e4b28ed0bfa17280f4f0..743e3c0f0e2804461128f05f5314e20d326ade44 100644 (file)
@@ -123,6 +123,7 @@ private:
        typedef std::map<Program::LayoutHash, ProgramUniforms> ProgramMap;
 
        // XXX All these mutables are a bit silly, but I'm out of better ideas
+       const Program *tied_program;
        SlotMap uniform_slots;
        std::vector<Uniform *> uniforms;
        mutable BlockMap blocks;
@@ -132,7 +133,7 @@ private:
        mutable unsigned dirty;
 
 public:
-       ProgramData();
+       ProgramData(const Program * = 0);
        ProgramData(const ProgramData &);
        ProgramData &operator=(const ProgramData &);
        ~ProgramData();
@@ -140,6 +141,7 @@ public:
 private:
        void uniform(const std::string &, Uniform *);
 public:
+       void uniform(const std::string &, const Uniform &);
        void uniform(const std::string &, int);
        void uniform(const std::string &, float);
        void uniform(const std::string &, int, int);
@@ -174,6 +176,9 @@ public:
        void uniform_matrix4_array(const std::string &, unsigned, const float *);
        void remove_uniform(const std::string &);
 
+       std::vector<std::string> get_uniform_names() const;
+       const Uniform &get_uniform(const std::string &) const;
+
 private:
        unsigned compute_slot_mask(const Program::UniformBlockInfo &) const;
        void update_block(UniformBlock &, const Program::UniformBlockInfo &) const;