1#ifndef PTR_DWA20020601_HPP
2# define PTR_DWA20020601_HPP
3
4# include <boost/python/detail/prefix.hpp>
5// Copyright David Abrahams 2002.
6// Distributed under the Boost Software License, Version 1.0. (See
7// accompanying file LICENSE_1_0.txt or copy at
8// http://www.boost.org/LICENSE_1_0.txt)
9//
10// Based on boost/ref.hpp, thus:
11// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
12// Copyright (C) 2001 Peter Dimov
13
14# pragma once
15
16# include <boost/config.hpp>
17# include <boost/mpl/bool.hpp>
18
19namespace boost { namespace python {
20
21template<class Ptr> class pointer_wrapper
22{
23 public:
24 typedef Ptr type;
25
26 explicit pointer_wrapper(Ptr x): p_(x) {}
27 operator Ptr() const { return p_; }
28 Ptr get() const { return p_; }
29 private:
30 Ptr p_;
31};
32
33template<class T>
34inline pointer_wrapper<T> ptr(T t)
35{
36 return pointer_wrapper<T>(t);
37}
38
39template<typename T>
40class is_pointer_wrapper
41 : public mpl::false_
42{
43};
44
45template<typename T>
46class is_pointer_wrapper<pointer_wrapper<T> >
47 : public mpl::true_
48{
49};
50
51template<typename T>
52class unwrap_pointer
53{
54 public:
55 typedef T type;
56};
57
58template<typename T>
59class unwrap_pointer<pointer_wrapper<T> >
60{
61 public:
62 typedef T type;
63};
64
65}} // namespace boost::python
66
67#endif // #ifndef PTR_DWA20020601_HPP
68

source code of boost/boost/python/ptr.hpp