--- /dev/null
+#ifndef PROGRAMSTATE_H_
+#define PROGRAMSTATE_H_
+
+#include <string>
+#include <vector>
+#include "opengl.h"
+
+struct ShaderState
+{
+ unsigned id;
+ GLenum type;
+ std::vector<std::string> source;
+ bool source_changed;
+ bool compile_status;
+ std::string info_log;
+ bool pending_delete;
+
+ ShaderState();
+
+ std::string describe() const;
+};
+
+struct ProgramState
+{
+ unsigned id;
+ std::vector<ShaderState *> shaders;
+ bool shaders_changed;
+ bool link_status;
+ std::string info_log;
+
+ ProgramState();
+
+ std::string describe() const;
+};
+
+#endif