X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdirectorysource.cpp;h=207f30d0e31716c310f0927b82f5ba14fe456b6a;hb=b39ce68f12c30eedb272b65fe78baec5864d89ca;hp=5d70bb5deb3f9202a5f2aa0686b2ca7e2c2f25a5;hpb=a9b55a13d8da2a47ace71afe7d5258cf83aa9813;p=libs%2Fdatafile.git diff --git a/source/directorysource.cpp b/source/directorysource.cpp index 5d70bb5..207f30d 100644 --- a/source/directorysource.cpp +++ b/source/directorysource.cpp @@ -8,11 +8,14 @@ using namespace std; namespace Msp { namespace DataFile { -void DirectorySource::add_directory(const FS::Path &d) +void DirectorySource::add_directory(const FS::Path &d, bool replace) { list files = FS::list_files(d); for(list::const_iterator i=files.begin(); i!=files.end(); ++i) - objects[*i] = d / *i; + { + if(!objects.count(*i) || replace) + objects[*i] = d / *i; + } } bool DirectorySource::is_loadable(const CollectionItemTypeBase &, const string &name) const @@ -40,6 +43,15 @@ void DirectorySource::load(Collection &coll, const CollectionItemTypeBase &type, } } +IO::Seekable *DirectorySource::open(const string &name) const +{ + FS::Path file; + if(lookup_file(name, file)) + return new IO::BufferedFile(file.str()); + + return 0; +} + bool DirectorySource::lookup_file(const string &name, FS::Path &result) const { ObjectMap::const_iterator i = objects.find(name);