X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcollection.cpp;h=bf1c5edc211e93b33f1dacc833e0ac1a38657a5e;hb=b1bc25649c1f22abf940a807d934f1e9bb780c28;hp=ea1095b39a93f61e0a14930b8e8edf039da9089e;hpb=1d9c21a8a301007fb242e05b69cc6390ec566273;p=libs%2Fdatafile.git diff --git a/source/collection.cpp b/source/collection.cpp index ea1095b..bf1c5ed 100644 --- a/source/collection.cpp +++ b/source/collection.cpp @@ -1,37 +1,58 @@ -/* $Id$ - -This file is part of libmspdatafile -Copyright © 2006 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #include "collection.h" +using namespace std; + namespace Msp { namespace DataFile { Collection::~Collection() { - for(ItemMap::iterator i=items.begin(); i!=items.end(); ++i) - delete i->second; - for(ItemKeywordSeq::iterator i=keywords.begin(); i!=keywords.end(); ++i) - delete *i; - for(ItemCreatorSeq::iterator i=creators.begin(); i!=creators.end(); ++i) + for(TypeList::iterator i = types.begin(); i!=types.end(); ++i) delete *i; } -bool Collection::contains(const std::string &n) const +void Collection::add_source(CollectionSource &s) { - return items.count(n); + sources.push_back(&s); } Collection::Loader::Loader(Collection &c): coll(c) { - for(ItemKeywordSeq::const_iterator i=coll.keywords.begin(); i!=coll.keywords.end(); ++i) + for(TypeList::const_iterator i = coll.types.begin(); i!=coll.types.end(); ++i) (*i)->add_to_loader(*this); } + +CollectionItemTypeBase::CollectionItemTypeBase(): + tag(0) +{ } + +CollectionItemTypeBase::~CollectionItemTypeBase() +{ + delete tag; +} + +void CollectionItemTypeBase::set_keyword(const string &k) +{ + kwd = k; + if(suffixes.empty()) + add_suffix("."+kwd); +} + +void CollectionItemTypeBase::add_suffix(const string &s) +{ + suffixes.push_back(s); +} + +bool CollectionItemTypeBase::match_name(const string &name) const +{ + for(vector::const_iterator i=suffixes.begin(); i!=suffixes.end(); ++i) + if(name.size()>i->size() && !name.compare(name.size()-i->size(), string::npos, *i)) + return true; + return false; +} + } // namespace DataFile } // namespace Msp