{
// starting a new Selectable, create the previous one
ui::Selectable::Ptr p( makeSelectablePtr( cbegin, it ) );
- _selPool[p->kind()].push_back( p );
+ _selPool.insert( SelectablePool::value_type( p->kind(), p ) );
_selIndex[cbegin->first] = p;
// remember new startpoint
cbegin = it;
}
// create the final one
ui::Selectable::Ptr p( makeSelectablePtr( cbegin, id2item.end() ) );
- _selPool[p->kind()].push_back( p );
+ _selPool.insert( SelectablePool::value_type( p->kind(), p ) );
_selIndex[cbegin->first] = p;
}
}
return ui::Selectable::Ptr();
}
+ public:
+ bool empty() const
+ { return _selPool.empty(); }
+
+ size_type size() const
+ { return _selPool.size(); }
+
+ const_iterator begin() const
+ { return make_map_value_begin( _selPool ); }
+
+ const_iterator end() const
+ { return make_map_value_end( _selPool ); }
+
public:
bool empty( const ResKind & kind_r ) const
- { return _selPool[kind_r].empty(); }
+ { return( _selPool.count( kind_r ) == 0 ); }
size_type size( const ResKind & kind_r ) const
- { return _selPool[kind_r].size(); }
+ { return _selPool.count( kind_r ); }
const_iterator byKindBegin( const ResKind & kind_r ) const
- { return _selPool[kind_r].begin(); }
+ { return make_map_value_lower_bound( _selPool, kind_r ); }
const_iterator byKindEnd( const ResKind & kind_r ) const
- { return _selPool[kind_r].end(); }
+ { return make_map_value_upper_bound( _selPool, kind_r ); }
public:
size_type knownRepositoriesSize() const
ui::Selectable::Ptr ResPoolProxy::lookup( const pool::ByIdent & ident_r ) const
{ return _pimpl->lookup( ident_r ); }
+ bool ResPoolProxy::empty() const
+ { return _pimpl->empty(); }
+
+ ResPoolProxy::size_type ResPoolProxy::size() const
+ { return _pimpl->size(); }
+
+ ResPoolProxy::const_iterator ResPoolProxy::begin() const
+ { return _pimpl->begin(); }
+
+ ResPoolProxy::const_iterator ResPoolProxy::end() const
+ { return _pimpl->end(); }
+
bool ResPoolProxy::empty( const ResKind & kind_r ) const
{ return _pimpl->empty( kind_r ); }
class ResPoolProxy
{
friend std::ostream & operator<<( std::ostream & str, const ResPoolProxy & obj );
-
- typedef std::vector<ui::Selectable::Ptr> SelectableKinds;
- typedef std::map<ResKind,SelectableKinds> SelectablePool;
+ typedef std::multimap<ResKind,ui::Selectable::Ptr> SelectablePool;
public:
/** Implementation */
class Impl;
- typedef SelectableKinds::iterator iterator;
- typedef SelectableKinds::const_iterator const_iterator;
- typedef SelectableKinds::size_type size_type;
+ typedef MapKVIteratorTraits<SelectablePool>::Value_const_iterator const_iterator;
+ typedef SelectablePool::size_type size_type;
typedef ResPool::repository_iterator repository_iterator;
//@}
public:
+ /** \name Iterate through all Selectables of a all kind. */
+ //@{
+ bool empty() const;
+ size_type size() const;
+ const_iterator begin() const;
+ const_iterator end() const;
+ //@}
+ /** \name Iterate through all Selectables of a certain kind. */
+ //@{
/** True if there are items of a certain kind. */
bool empty( const ResKind & kind_r ) const;
size_type size() const
{ return size( ResTraits<_Res>::kind ); }
- /** \name Iterate through all Selectables of a certain kind. */
- //@{
const_iterator byKindBegin( const ResKind & kind_r ) const;
template<class _Res>