]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/builtinsource.h
Add a source class for builtin data
[libs/datafile.git] / source / builtinsource.h
diff --git a/source/builtinsource.h b/source/builtinsource.h
new file mode 100644 (file)
index 0000000..244191c
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef MSP_DATAFILE_BUILTINSOURCE_H_
+#define MSP_DATAFILE_BUILTINSOURCE_H_
+
+#include "collectionsource.h"
+
+namespace Msp {
+namespace DataFile {
+
+class BuiltinSource: public CollectionSource
+{
+private:
+       struct Object
+       {
+               const char *data;
+               unsigned size;
+
+               Object();
+               Object(const char *, unsigned);
+       };
+
+       typedef std::map<std::string, Object> ObjectMap;
+
+       ObjectMap objects;
+
+public:
+       void add_object(const std::string &, const char *, unsigned);
+       void add_object(const std::string &, const char *);
+
+       virtual bool is_loadable(const CollectionItemTypeBase &, const std::string &) const;
+       virtual NameList get_names(const CollectionItemTypeBase &) const;
+       virtual void load(Collection &, const CollectionItemTypeBase &, const std::string &) const;
+       virtual IO::Seekable *open(const std::string &) const;
+};
+
+} // namespace DataFile
+} // namespace Msp
+
+#endif