1 #ifndef _utl_TypeLabeledContainer_h_
2 #define _utl_TypeLabeledContainer_h_
8 #include <boost/iterator/transform_iterator.hpp>
46 template<
class Base,
class OwnershipPolicy = Own>
51 if (OwnershipPolicy::IsDestructive())
53 for (
const auto&
p : sv.second)
61 {
return *
dynamic_cast<T*
>(
b); }
70 public boost::transform_iterator<DynamicCast<T>, InternalConstIterator, T&, T> {
79 public boost::transform_iterator<DynamicCast<const T>, InternalConstIterator, const T&, const T> {
90 const typename InternalMap::const_iterator it =
fContainer.find(
typeid(T).name());
99 const typename InternalMap::const_iterator it =
fContainer.find(
typeid(T).name());
107 const typename InternalMap::const_iterator it =
fContainer.find(
typeid(T).name());
116 const typename InternalMap::const_iterator it =
fContainer.find(
typeid(T).name());
122 {
fContainer[std::string(
typeid(T).name())].push_back(t); }
container of classes with common base, labeled by concrete type
Iterator(const InternalConstIterator it)
static bool IsDestructive()
ConstIterator(const InternalConstIterator it)
std::map< std::string, InternalVector > InternalMap
T & operator()(Base *const b) const
void Delete(T *const p, const int first)
InternalVector::const_iterator InternalConstIterator
static void Delete(T *&p)
static void Delete(T *&p)
std::vector< Base * > InternalVector
static bool IsDestructive()