diff options
Diffstat (limited to 'cpp/src/IceStorm/TopicManagerI.cpp')
-rw-r--r-- | cpp/src/IceStorm/TopicManagerI.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/cpp/src/IceStorm/TopicManagerI.cpp b/cpp/src/IceStorm/TopicManagerI.cpp index 16c6bc06620..3fd06b94854 100644 --- a/cpp/src/IceStorm/TopicManagerI.cpp +++ b/cpp/src/IceStorm/TopicManagerI.cpp @@ -117,13 +117,24 @@ TopicManagerI::retrieve(const string& name, const Ice::Current&) const // // The arguments cannot be const & (for some reason) // -static TopicDict::value_type -transformToTopicDict(TopicIMap::value_type p, Ice::ObjectAdapterPtr adapter) +struct TransformToTopicDict : public std::unary_function<TopicIMap::value_type, TopicDict::value_type> { + + TransformToTopicDict(const Ice::ObjectAdapterPtr& adapter) : + _adapter(adapter) + { + } + + TopicDict::value_type + operator()(TopicIMap::value_type p) + { Ice::Identity id; id.name = p.first; - return TopicDict::value_type(p.first, TopicPrx::uncheckedCast(adapter->createProxy(id))); -} + return TopicDict::value_type(p.first, TopicPrx::uncheckedCast(_adapter->createProxy(id))); + } + + Ice::ObjectAdapterPtr _adapter; +}; TopicDict TopicManagerI::retrieveAll(const Ice::Current&) const @@ -135,7 +146,7 @@ TopicManagerI::retrieveAll(const Ice::Current&) const TopicDict all; transform(_topicIMap.begin(), _topicIMap.end(), inserter(all, all.begin()), - bind2nd(ptr_fun(transformToTopicDict), _adapter)); + TransformToTopicDict(_adapter)); return all; } |