1 #include "collection.h"
8 Collection::~Collection()
10 for(TypeList::iterator i = types.begin(); i!=types.end(); ++i)
14 void Collection::add_future(const std::string &name)
17 throw key_error(typeid(ItemMap));
19 for(TypeList::const_iterator i=types.begin(); i!=types.end(); ++i)
20 if((*i)->match_name(name))
22 items.insert(ItemMap::value_type(name, (*i)->create_future()));
26 /* XXX throw something? If we do, DirectoryCollection needs some way to
27 check if a name matches any item type. */
31 Collection::Loader::Loader(Collection &c):
34 for(TypeList::const_iterator i = coll.types.begin(); i!=coll.types.end(); ++i)
35 (*i)->add_to_loader(*this);
39 CollectionItemTypeBase::CollectionItemTypeBase():
43 CollectionItemTypeBase::~CollectionItemTypeBase()
48 void CollectionItemTypeBase::set_keyword(const string &k)
55 void CollectionItemTypeBase::add_suffix(const string &s)
57 suffixes.push_back(s);
60 bool CollectionItemTypeBase::match_name(const string &name) const
62 for(vector<string>::const_iterator i=suffixes.begin(); i!=suffixes.end(); ++i)
63 if(name.size()>i->size() && !name.compare(name.size()-i->size(), string::npos, *i))
68 } // namespace DataFile