X-Git-Url: http://git.tdb.fi/?p=libs%2Fdatafile.git;a=blobdiff_plain;f=source%2Fbuiltinsource.h;fp=source%2Fbuiltinsource.h;h=244191c3e6a728b8dab42d2a97b2264635113007;hp=0000000000000000000000000000000000000000;hb=1133d979d230f7899cf24a4250ac006cbf91527b;hpb=1a3b30ea35fbc19e56bbd35e4ee1811d8d5e02a4 diff --git a/source/builtinsource.h b/source/builtinsource.h new file mode 100644 index 0000000..244191c --- /dev/null +++ b/source/builtinsource.h @@ -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 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