// Copyright (c) 2003 Raoul M. Gough
//
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
// at http://www.boost.org/LICENSE_1_0.txt)
//
// Header file container_suite.hpp
//
// Top-level interface to the container suite.
//
// History
// =======
// 2003/ 8/23 rmg File creation
// 2003/ 9/ 8 rmg Extracted trait facilities into container_traits.hpp
// 2008/12/08 Roman Change indexing suite layout
//
// $Id: container_suite.hpp,v 1.1.2.7 2004/02/08 18:57:42 raoulgough Exp $
//
#ifndef BOOST_PYTHON_INDEXING_CONTAINER_SUITE_HPP
#define BOOST_PYTHON_INDEXING_CONTAINER_SUITE_HPP
#include <indexing_suite/methods.hpp>
#include <indexing_suite/algorithms.hpp>
#include <indexing_suite/visitor.hpp>
#include <boost/python/return_by_value.hpp>
#include <boost/python/return_value_policy.hpp>
namespace boost { namespace python { namespace indexing {
typedef boost::python::return_value_policy<boost::python::return_by_value>
default_container_policies;
template<
class Container,
method_set_type MethodMask = all_methods, // All supported by algorithms
class Algorithms
= algorithms<Container>
>
struct container_suite
: public visitor<Algorithms, default_container_policies, MethodMask>
{
typedef Algorithms algorithms;
template<typename Policy>
static visitor<Algorithms, Policy, MethodMask>
with_policies (Policy const &policy)
{
return visitor <Algorithms, Policy, MethodMask> (policy);
}
};
} } }
#endif // BOOST_PYTHON_INDEXING_CONTAINER_SUITE_HPP