/* */ #include "TagContainer.h" #include "TaggedItem.h" #include "Util.h" TagContainer::TagContainer() {} TagContainer::TagContainer(const TaggedItems& items): _taggedItems(items) {} TagContainer::~TagContainer() {} class SingleTagSearch { private: string _tag; TaggedItems _result; public: SingleTagSearch(const string& tag):_tag(tag) {} void operator()(const TaggedItemHandle& item) { if(item->hasTag(_tag)) { _result.push_back(item); } } const TaggedItems& getResult() const { return _result; } }; TaggedItems TagContainer::search(const string& tag) const { return for_each(_taggedItems.begin(), _taggedItems.end(), SingleTagSearch(tag)).getResult(); } class NameMatchForward { private: string _name; TaggedItems _result; public: NameMatchForward(const string& name):_name(name) {} void operator()(const TaggedItemHandle& item) { if(Util::startsWith(item->getName(), _name)) { _result.push_back(item); } } const TaggedItems& getResult() const { return _result; } }; TaggedItems TagContainer::nameMatchForward(const string& name) const { return for_each(_taggedItems.begin(), _taggedItems.end(), NameMatchForward(name)).getResult(); } const TaggedItems& TagContainer::getAllItems() const { return _taggedItems; } void TagContainer::addItem(const TaggedItemHandle& item) { _taggedItems.push_back(item); }