X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdirectorysource.h;h=07e1664ee585cd348f79e893cb685c792382dd0a;hb=refs%2Fheads%2Fwip;hp=cd82ece11e10f606ade3eea92a598da5373e9bdc;hpb=b1bc25649c1f22abf940a807d934f1e9bb780c28;p=libs%2Fdatafile.git diff --git a/source/directorysource.h b/source/directorysource.h index cd82ece..07e1664 100644 --- a/source/directorysource.h +++ b/source/directorysource.h @@ -3,6 +3,7 @@ #include #include "collectionsource.h" +#include "mspdatafile_api.h" namespace Msp { namespace DataFile { @@ -10,20 +11,20 @@ namespace DataFile { /** A source that load items from files in a directory. */ -class DirectorySource: public CollectionSource +class MSPDATAFILE_API DirectorySource: public CollectionSource { private: - std::list dirs; + typedef std::map ObjectMap; -public: - DirectorySource(); + ObjectMap objects; - void set_directory(const FS::Path &); - void add_directory(const FS::Path &); +public: + void add_directory(const FS::Path &, bool = true); - 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; + bool is_loadable(const CollectionItemTypeBase &, const std::string &) const override; + NameList get_names(const CollectionItemTypeBase &) const override; + void load(Collection &, const CollectionItemTypeBase &, const std::string &) const override; + IO::Seekable *open(const std::string &) const override; bool lookup_file(const std::string &, FS::Path &) const; };