1 from __future__
import absolute_import
6 from ctypes
import c_void_p
, py_object
, c_char_p
9 from gi
.repository
import Gio
14 if not hasattr(ctypes
, "pythonapi"):
17 class CAPI(ctypes
.Structure
):
22 ("newgobj", ctypes
.PYFUNCTYPE(py_object
, c_void_p
)),
25 api_obj
= gi
._gobject
._PyGObject
_API
26 if sys
.version_info
[0] == 2:
27 func_type
= ctypes
.PYFUNCTYPE(c_void_p
, py_object
)
28 PyCObject_AsVoidPtr
= func_type(
29 ('PyCObject_AsVoidPtr', ctypes
.pythonapi
))
30 ptr
= PyCObject_AsVoidPtr(api_obj
)
32 func_type
= ctypes
.PYFUNCTYPE(c_void_p
, py_object
, c_char_p
)
33 PyCapsule_GetPointer
= func_type(
34 ('PyCapsule_GetPointer', ctypes
.pythonapi
))
35 ptr
= PyCapsule_GetPointer(api_obj
, b
"gobject._PyGObject_API")
37 ptr
= ctypes
.cast(ptr
, ctypes
.POINTER(CAPI
))
44 @unittest.skipUnless(API
, "no pythonapi support")
45 class TestPythonCAPI(unittest
.TestCase
):
47 def test_newgobj(self
):
50 ptr
= int(repr(w
).split()[-1].split(")")[0], 16)
53 new_w
= capi
.newgobj(ptr
)