]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/python/include/boost/python/detail/borrowed_ptr.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / python / include / boost / python / detail / borrowed_ptr.hpp
CommitLineData
7c673cae
FG
1#ifndef BORROWED_PTR_DWA20020601_HPP
2# define BORROWED_PTR_DWA20020601_HPP
3// Copyright David Abrahams 2002.
4// Distributed under the Boost Software License, Version 1.0. (See
5// accompanying file LICENSE_1_0.txt or copy at
6// http://www.boost.org/LICENSE_1_0.txt)
7
8# include <boost/config.hpp>
9# include <boost/type.hpp>
10# include <boost/mpl/if.hpp>
11# include <boost/type_traits/object_traits.hpp>
12# include <boost/type_traits/cv_traits.hpp>
13# include <boost/python/tag.hpp>
14
15namespace boost { namespace python { namespace detail {
16
17template<class T> class borrowed
18{
19 typedef T type;
20};
21
22template<typename T>
23struct is_borrowed_ptr
24{
25 BOOST_STATIC_CONSTANT(bool, value = false);
26};
27
28# if !defined(__MWERKS__) || __MWERKS__ > 0x3000
29template<typename T>
30struct is_borrowed_ptr<borrowed<T>*>
31{
32 BOOST_STATIC_CONSTANT(bool, value = true);
33};
34
35template<typename T>
36struct is_borrowed_ptr<borrowed<T> const*>
37{
38 BOOST_STATIC_CONSTANT(bool, value = true);
39};
40
41template<typename T>
42struct is_borrowed_ptr<borrowed<T> volatile*>
43{
44 BOOST_STATIC_CONSTANT(bool, value = true);
45};
46
47template<typename T>
48struct is_borrowed_ptr<borrowed<T> const volatile*>
49{
50 BOOST_STATIC_CONSTANT(bool, value = true);
51};
52# else
53template<typename T>
54struct is_borrowed
55{
56 BOOST_STATIC_CONSTANT(bool, value = false);
57};
58template<typename T>
59struct is_borrowed<borrowed<T> >
60{
61 BOOST_STATIC_CONSTANT(bool, value = true);
62};
63template<typename T>
64struct is_borrowed_ptr<T*>
65 : is_borrowed<typename remove_cv<T>::type>
66{
67};
68# endif
69
70
71}
72
73template <class T>
74inline T* get_managed_object(detail::borrowed<T> const volatile* p, tag_t)
75{
76 return (T*)p;
77}
78
79}} // namespace boost::python::detail
80
81#endif // #ifndef BORROWED_PTR_DWA20020601_HPP