/* * Copyright (c) 2011 Jan Kaluza * Licensed under the Simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */#pragma once#include<vector>#include<string>#include<Swiften/Elements/Payload.h>namespaceSwift{classPubSubItem:publicPayload{public:PubSubItem();voidaddPayload(boost::shared_ptr<Payload>payload){payloads.push_back(payload);}conststd::vector<boost::shared_ptr<Payload>>getPayloads()const{returnpayloads;}template<typenameT>conststd::vector<boost::shared_ptr<T>>getPayloads()const{std::vector<boost::shared_ptr<T>>matched_payloads;for(std::vector<boost::shared_ptr<Payload>>::const_iteratori=payloads.begin();i!=payloads.end();++i){boost::shared_ptr<T>result=boost::dynamic_pointer_cast<T>(*i);if(result){matched_payloads.push_back(result);}}returnmatched_payloads;}template<typenameT>constboost::shared_ptr<T>getPayload()const{boost::shared_ptr<T>result;for(std::vector<boost::shared_ptr<Payload>>::const_iteratori=payloads.begin();i!=payloads.end();++i){result=boost::dynamic_pointer_cast<T>(*i);if(result){returnresult;}}returnresult;}conststd::string&getId()const{returnid;}voidsetId(conststd::string&id){this->id=id;}private:std::vector<boost::shared_ptr<Payload>>payloads;std::stringid;};}