]> git.tdb.fi Git - libs/gl.git/blobdiff - source/resource.h
Foundation for a resource management system
[libs/gl.git] / source / resource.h
diff --git a/source/resource.h b/source/resource.h
new file mode 100644 (file)
index 0000000..c41b884
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef MSP_GL_RESOURCE_H_
+#define MSP_GL_RESOURCE_H_
+
+#include <msp/io/seekable.h>
+
+namespace Msp {
+namespace GL {
+
+class ResourceManager;
+
+class Resource
+{
+public:
+       class AsyncLoader
+       {
+       protected:
+               AsyncLoader() { }
+       public:
+               virtual ~AsyncLoader() { }
+
+               virtual bool needs_sync() const = 0;
+               virtual bool process() = 0;
+       };
+
+protected:
+       ResourceManager *manager;
+
+       Resource();
+public:
+       virtual ~Resource();
+
+       void set_manager(ResourceManager *);
+       virtual AsyncLoader *load(IO::Seekable &) = 0;
+       virtual void unload() = 0;
+};
+
+} // namespace GL
+} // namespace Msp
+
+#endif