Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/libs/python/example/std_pair.cpp @ 29

Last change on this file since 29 was 29, checked in by landauf, 17 years ago

updated boost from 1_33_1 to 1_34_1

File size: 1.2 KB
Line 
1// Copyright Ralf W. Grosse-Kunstleve 2002-2004. Distributed under the Boost
2// Software License, Version 1.0. (See accompanying
3// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
4
5#include <boost/python/module.hpp>
6#include <boost/python/def.hpp>
7#include <boost/python/tuple.hpp>
8#include <boost/python/to_python_converter.hpp>
9
10namespace { // Avoid cluttering the global namespace.
11
12  // Converts a std::pair instance to a Python tuple.
13  template <typename T1, typename T2>
14  struct std_pair_to_tuple
15  {
16    static PyObject* convert(std::pair<T1, T2> const& p)
17    {
18      return boost::python::incref(
19        boost::python::make_tuple(p.first, p.second).ptr());
20    }
21  };
22
23  // Helper for convenience.
24  template <typename T1, typename T2>
25  struct std_pair_to_python_converter
26  {
27    std_pair_to_python_converter()
28    {
29      boost::python::to_python_converter<
30        std::pair<T1, T2>,
31        std_pair_to_tuple<T1, T2> >();
32    }
33  };
34
35  // Example function returning a std::pair.
36  std::pair<int, int>
37  foo() { return std::pair<int, int>(3, 5); }
38
39} // namespace anonymous
40
41BOOST_PYTHON_MODULE(std_pair_ext)
42{
43  using namespace boost::python;
44  std_pair_to_python_converter<int, int>();
45  def("foo", foo);
46}
Note: See TracBrowser for help on using the repository browser.