x
Yes
No
Do you want to visit DriveHQ English website?
Inicio
Características
Precios
Prueba gratuita
Software cliente
Acerca de nosotros
Servidor de archivos
|
Solución de copias de seguridad
|
Servidor FTP
|
Servidor de correo electrónico
|
Alojamiento web
|
Software cliente
Servidor de archivos
Solución de copia de seguridad
Servidor FTP
Servidor de correo electrónico
Alojamiento web
Software cliente
obj_mgr_arg_from_python.hpp - Hosted on DriveHQ Cloud IT Platform
Arriba
Subir
Descargar
Compartir
Publicar
Nueva carpeta
Nuevo archivo
Copiar
Cortar
Eliminar
Pegar
Clasificación
Actualizar
Ruta de la carpeta: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\python\converter\obj_mgr_arg_from_python.hpp
Girar
Efecto
Propiedad
Historial
// 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 OBJ_MGR_ARG_FROM_PYTHON_DWA2002628_HPP # define OBJ_MGR_ARG_FROM_PYTHON_DWA2002628_HPP # include
# include
# include
# include
# include
# include
# include
// // arg_from_python converters for Python type wrappers, to be used as // base classes for specializations. // namespace boost { namespace python { namespace converter { template
struct object_manager_value_arg_from_python { typedef T result_type; object_manager_value_arg_from_python(PyObject*); bool convertible() const; T operator()() const; private: PyObject* m_source; }; // Used for converting reference-to-object-manager arguments from // python. The process used here is a little bit odd. Upon // construction, we build the object manager object in the m_result // object, *forcing* it to accept the source Python object by casting // its pointer to detail::borrowed_reference. This is supposed to // bypass any type checking of the source object. The convertible // check then extracts the owned object and checks it. If the check // fails, nothing else in the program ever gets to touch this strange // "forced" object. template
struct object_manager_ref_arg_from_python { typedef Ref result_type; object_manager_ref_arg_from_python(PyObject*); bool convertible() const; Ref operator()() const; ~object_manager_ref_arg_from_python(); private: typename python::detail::referent_storage
::type m_result; }; // // implementations // template
inline object_manager_value_arg_from_python
::object_manager_value_arg_from_python(PyObject* x) : m_source(x) { } template
inline bool object_manager_value_arg_from_python
::convertible() const { return object_manager_traits
::check(m_source); } template
inline T object_manager_value_arg_from_python
::operator()() const { return T(python::detail::borrowed_reference(m_source)); } template
inline object_manager_ref_arg_from_python
::object_manager_ref_arg_from_python(PyObject* x) { # if defined(__EDG_VERSION__) && __EDG_VERSION__ <= 243 // needed for warning suppression python::detail::borrowed_reference x_ = python::detail::borrowed_reference(x); python::detail::construct_referent
(&m_result.bytes, x_); # else python::detail::construct_referent
(&m_result.bytes, (python::detail::borrowed_reference)x); # endif } template
inline object_manager_ref_arg_from_python
::~object_manager_ref_arg_from_python() { python::detail::destroy_referent
(this->m_result.bytes); } namespace detail { template
inline bool object_manager_ref_check(T const& x) { return object_manager_traits
::check(get_managed_object(x, tag)); } } template
inline bool object_manager_ref_arg_from_python
::convertible() const { return detail::object_manager_ref_check( python::detail::void_ptr_to_reference(this->m_result.bytes, (Ref(*)())0)); } template
inline Ref object_manager_ref_arg_from_python
::operator()() const { return python::detail::void_ptr_to_reference( this->m_result.bytes, (Ref(*)())0); } }}} // namespace boost::python::converter #endif // OBJ_MGR_ARG_FROM_PYTHON_DWA2002628_HPP
obj_mgr_arg_from_python.hpp
Dirección de la página
Dirección del archivo
Anterior
11/27
Siguiente
Descargar
( 3 KB )
Comments
Total ratings:
0
Average rating:
No clasificado
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.