+ typedef std::vector<Shader *> ShaderList;
+ typedef std::map<std::string, UniformInfo> UniformMap;
+ typedef std::map<std::string, UniformBlockInfo> UniformBlockMap;
+ typedef std::map<std::string, AttributeInfo> AttributeMap;
+
+private:
+ unsigned id;
+ ShaderList shaders;
+ ShaderList owned_data;
+ bool linked;
+ UniformBlockMap uniform_blocks;
+ UniformMap uniforms;
+ LayoutHash uniform_layout_hash;
+ AttributeMap attributes;
+ bool legacy_vars;
+
+public:
+ /// Constructs an empty Program with no Shaders attached.