1 #include <msp/fs/dir.h>
2 #include <msp/fs/stat.h>
3 #include "collection.h"
4 #include "directorysource.h"
11 void DirectorySource::add_directory(const FS::Path &d)
16 bool DirectorySource::is_loadable(const CollectionItemTypeBase &, const string &name) const
19 return lookup_file(name, path);
22 CollectionSource::NameList DirectorySource::get_names(const CollectionItemTypeBase &type) const
25 for(list<FS::Path>::const_iterator i=dirs.begin(); i!=dirs.end(); ++i)
27 list<string> files = FS::list_files(*i);
28 for(list<string>::const_iterator j=files.begin(); j!=files.end(); ++j)
29 if(type.match_name(*j))
35 void DirectorySource::load(Collection &coll, const CollectionItemTypeBase &type, const string &name) const
38 if(lookup_file(name, file))
40 IO::BufferedFile in(file.str());
41 Parser parser(in, file.str());
42 type.load_item(coll, parser, name);
46 bool DirectorySource::lookup_file(const string &name, FS::Path &result) const
48 for(list<FS::Path>::const_iterator i=dirs.begin(); i!=dirs.end(); ++i)
50 FS::Path file_path = *i/name;
51 if(FS::exists(file_path))
61 } // namespace DataFile