x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
handle.hpp - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\python\handle.hpp
旋转
特效
属性
历史版本
// Copyright David Abrahams 2002. // Distributed under 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) #ifndef HANDLE_DWA200269_HPP # define HANDLE_DWA200269_HPP # include
# include
# include
# include
# include
# include
# include
# include
namespace boost { namespace python { template
struct null_ok; template
inline null_ok
* allow_null(T* p) { return (null_ok
*)p; } namespace detail { template
inline T* manage_ptr(detail::borrowed
>* p, int) { return python::xincref((T*)p); } template
inline T* manage_ptr(null_ok
>* p, int) { return python::xincref((T*)p); } template
inline T* manage_ptr(detail::borrowed
* p, long) { return python::incref(expect_non_null((T*)p)); } template
inline T* manage_ptr(null_ok
* p, long) { return (T*)p; } template
inline T* manage_ptr(T* p, ...) { return expect_non_null(p); } } template
class handle { typedef T* (handle::* bool_type )() const; public: // types typedef T element_type; public: // member functions handle(); ~handle(); template
explicit handle(Y* p) : m_p( python::upcast
( detail::manage_ptr(p, 0) ) ) { } handle& operator=(handle const& r) { python::xdecref(m_p); m_p = python::xincref(r.m_p); return *this; } #if !defined(BOOST_MSVC) || (BOOST_MSVC >= 1300) template
handle& operator=(handle
const & r) // never throws { python::xdecref(m_p); m_p = python::xincref(python::upcast
(r.get())); return *this; } #endif template
handle(handle
const& r) : m_p(python::xincref(python::upcast
(r.get()))) { } handle(handle const& r) : m_p(python::xincref(r.m_p)) { } T* operator-> () const; T& operator* () const; T* get() const; T* release(); void reset(); operator bool_type() const // never throws { return m_p ? &handle
::get : 0; } bool operator! () const; // never throws public: // implementation details -- do not touch // Defining this in the class body suppresses a VC7 link failure inline handle(detail::borrowed_reference x) : m_p( python::incref( downcast
((PyObject*)x) )) { } private: // data members T* m_p; }; #ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP } // namespace python #endif template
inline T * get_pointer(python::handle
const & p) { return p.get(); } #ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP namespace python { #else // We don't want get_pointer above to hide the others using boost::get_pointer; #endif typedef handle
type_handle; // // Compile-time introspection // # ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION template
class is_handle { public: BOOST_STATIC_CONSTANT(bool, value = false); }; template
class is_handle
> { public: BOOST_STATIC_CONSTANT(bool, value = true); }; # else namespace detail { typedef char (&yes_handle_t)[1]; typedef char (&no_handle_t)[2]; no_handle_t is_handle_test(...); template
yes_handle_t is_handle_test(boost::type< handle
>); } template
class is_handle { public: BOOST_STATIC_CONSTANT( bool, value = ( sizeof(detail::is_handle_test(boost::type
())) == sizeof(detail::yes_handle_t))); }; # endif // // implementations // template
inline handle
::handle() : m_p(0) { } template
inline handle
::~handle() { python::xdecref(m_p); } template
inline T* handle
::operator->() const { return m_p; } template
inline T& handle
::operator*() const { return *m_p; } template
inline T* handle
::get() const { return m_p; } template
inline bool handle
::operator!() const { return m_p == 0; } template
inline T* handle
::release() { T* result = m_p; m_p = 0; return result; } template
inline void handle
::reset() { python::xdecref(m_p); m_p = 0; } // Because get_managed_object must return a non-null PyObject*, we // return Py_None if the handle is null. template
inline PyObject* get_managed_object(handle
const& h, tag_t) { return h.get() ? python::upcast
(h.get()) : Py_None; } }} // namespace boost::python #endif // HANDLE_DWA200269_HPP
handle.hpp
网页地址
文件地址
上一页
26/85
下一页
下载
( 5 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.