# Path: pyczmq/_cffi.py
# C = ffi.dlopen('czmq')
# Z = ffi.dlopen('zmq')
# def ptop(typ, val):
# def cdef(decl, returns_string=False, nullable=False):
#     def wrap(f):
#         def inner_f(*args):


from pyczmq._cffi import C, ffi, cdef, ptop

__doc__ = """
The zpoller class provides a minimalist interface to ZeroMQ's zmq_poll
API, for the very common case of reading from a number of sockets. It
does not provide polling for output, nor polling on file handles. If
you need either of these, use the zmq_poll API directly.
"""

cdef('typedef struct _zpoller_t zpoller_t;')


@cdef('void zpoller_destroy (zpoller_t **self_p);')
def destroy(poller):
    """Destroy a poller"""

# Path: pyczmq/_cffi.py
# C = ffi.dlopen('czmq')
# Z = ffi.dlopen('zmq')
# def ptop(typ, val):
# def cdef(decl, returns_string=False, nullable=False):
#     def wrap(f):
#         def inner_f(*args):


# Path: pyczmq/zpoller.py
from pyczmq._cffi import C, ffi, cdef, ptop


__doc__ = """
The zpoller class provides a minimalist interface to ZeroMQ's zmq_poll
API, for the very common case of reading from a number of sockets. It
does not provide polling for output, nor polling on file handles. If
you need either of these, use the zmq_poll API directly.
"""

cdef('typedef struct _zpoller_t zpoller_t;')


@cdef('void zpoller_destroy (zpoller_t **self_p);')
def destroy(poller):
    """Destroy a poller"""

    C.zpoller_destroy(ptop('zpoller_t', poller))