20 #ifndef MULTI_POLICY_H_    21 #define MULTI_POLICY_H_    29 #include <boost/mpl/size.hpp>    30 #include <boost/mpl/at.hpp>    31 #include <boost/mpl/range_c.hpp>    32 #include <boost/mpl/transform.hpp>    33 #include <boost/mpl/back_inserter.hpp>    34 #include <boost/mpl/vector.hpp>    35 #include <boost/mpl/for_each.hpp>    37 #include <boost/intrusive/options.hpp>    43 template<
typename Policies> 
    44 struct multi_policy_traits {
    45   typedef Policies policy_traits;
    50       typedef typename Item::policy_hook_type type;
    53   typedef detail::multi_type_container<
    54     typename boost::mpl::transform1<policy_traits, getHook>::type> policy_hook_type;
    56   template<
class Container>
    57   struct container_hook {
    58     typedef policy_hook_type type;
    61   template<
class Base, 
class Container, 
class Hook>
    67       template<
class Number>
    69         typedef typename boost::mpl::at_c<policy_traits, Number::value>::type::
    70           template policy<Base, Container,
    71                           boost::intrusive::function_hook<detail::FunctorHook<Hook, Container,
    77     typedef typename boost::mpl::transform1<policies_range, getPolicy,
    78                                             boost::mpl::back_inserter<boost::mpl::vector0<>>>::type
    81     typedef detail::multi_policy_container<Base, policies> policy_container;
    83     class type : 
public policy_container {
    85       typedef policy policy_base; 
    86       typedef Container parent_trie;
    89         : policy_container(base)
    96         policy_container::update(item);
   102         return policy_container::insert(item);
   108         policy_container::lookup(item);
   114         policy_container::erase(item);
   120         policy_container::clear();
   123       struct max_size_setter {
   124         max_size_setter(policy_container& container, 
size_t size)
   125           : m_container(container)
   134           m_container.template get<U::value>().set_max_size(m_size);
   138         policy_container& m_container;
   143       set_max_size(
size_t max_size)
   145         boost::mpl::for_each<boost::mpl::range_c<int, 0,
   147           max_size_setter(*
this, max_size));
   154         return policy_container::template get<0>().get_max_size();
   160     name_getter(std::string& 
name)
   171       m_name += boost::mpl::at_c<policy_traits, U::value>::type::GetName();
   196 #endif // MULTI_POLICY_H_ Copyright (c) 2011-2015 Regents of the University of California. 
 
Table::const_iterator iterator
 
Copyright (c) 2011-2015 Regents of the University of California.