]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/directorysource.cpp
Use C++11 features to manipulate containers
[libs/datafile.git] / source / directorysource.cpp
index 4bf9f5cd3d12b0808f288b9e3cd647a5ee0db682..e9f95fc830c9686997bc13088460c0da38847642 100644 (file)
@@ -8,11 +8,11 @@ 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<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
@@ -23,9 +23,9 @@ bool DirectorySource::is_loadable(const CollectionItemTypeBase &, const string &
 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;
 }