namespace Msp {
namespace DataFile {
-void DirectorySource::add_directory(const FS::Path &d)
+void DirectorySource::add_directory(const FS::Path &d, bool replace)
{
- list<string> files = FS::list_files(d);
- for(list<string>::const_iterator i=files.begin(); i!=files.end(); ++i)
- objects[*i] = d / *i;
+ for(const string &f: FS::list_files(d))
+ if(!objects.count(f) || replace)
+ objects[f] = d/f;
}
bool DirectorySource::is_loadable(const CollectionItemTypeBase &, const string &name) const
CollectionSource::NameList DirectorySource::get_names(const CollectionItemTypeBase &type) const
{
NameList names;
- for(ObjectMap::const_iterator i=objects.begin(); i!=objects.end(); ++i)
- if(type.match_name(i->first))
- names.push_back(i->first);
+ for(const auto &kvp: objects)
+ if(type.match_name(kvp.first))
+ names.push_back(kvp.first);
return names;
}
if(lookup_file(name, file))
return new IO::BufferedFile(file.str());
- return 0;
+ return nullptr;
}
bool DirectorySource::lookup_file(const string &name, FS::Path &result) const