34 lines
709 B
Python
34 lines
709 B
Python
|
"""Utils for interoperability with other libraries.
|
||
|
|
||
|
Just CFFI pointer casting for now.
|
||
|
"""
|
||
|
|
||
|
# Copyright (C) PyZMQ Developers
|
||
|
# Distributed under the terms of the Modified BSD License.
|
||
|
|
||
|
|
||
|
try:
|
||
|
long
|
||
|
except NameError:
|
||
|
long = int # Python 3
|
||
|
|
||
|
|
||
|
def cast_int_addr(n):
|
||
|
"""Cast an address to a Python int
|
||
|
|
||
|
This could be a Python integer or a CFFI pointer
|
||
|
"""
|
||
|
if isinstance(n, (int, long)):
|
||
|
return n
|
||
|
try:
|
||
|
import cffi
|
||
|
except ImportError:
|
||
|
pass
|
||
|
else:
|
||
|
# from pyzmq, this is an FFI void *
|
||
|
ffi = cffi.FFI()
|
||
|
if isinstance(n, ffi.CData):
|
||
|
return int(ffi.cast("size_t", n))
|
||
|
|
||
|
raise ValueError("Cannot cast %r to int" % n)
|