- const std::list<Shader *> &get_shaders() const { return shaders; }
- void set_del_shaders(bool);
- void bind_attribute(int, const std::string &);
- bool link();
- int get_param(GLenum param) const;
- bool get_linked() const { return linked; }
+ const ShaderList &get_attached_shaders() const { return shaders; }
+
+ void bind_attribute(unsigned, const std::string &);
+ void bind_attribute(VertexComponent, const std::string &);
+ void bind_fragment_data(unsigned, const std::string &);
+
+ void link();
+private:
+ void query_uniforms();
+ void query_uniform_blocks(const std::vector<UniformInfo *> &);
+ void query_attributes();
+ static LayoutHash compute_layout_hash(const std::vector<const UniformInfo *> &);
+ static bool uniform_location_compare(const UniformInfo *, const UniformInfo *);
+public:
+ bool is_linked() const { return linked; }