aboutsummaryrefslogtreecommitdiffstats
path: root/python/gevent/__greenlet_primitives.pxd
diff options
context:
space:
mode:
authorJames Taylor <user234683@users.noreply.github.com>2018-09-14 19:32:27 -0700
committerJames Taylor <user234683@users.noreply.github.com>2018-09-14 19:32:27 -0700
commit4212164e91ba2f49583cf44ad623a29b36db8f77 (patch)
tree47aefe3c0162f03e0c823b43873356f69c1cd636 /python/gevent/__greenlet_primitives.pxd
parent6ca20ff7010f2bafc7fefcb8cad982be27a8aeae (diff)
downloadyt-local-4212164e91ba2f49583cf44ad623a29b36db8f77.tar.lz
yt-local-4212164e91ba2f49583cf44ad623a29b36db8f77.tar.xz
yt-local-4212164e91ba2f49583cf44ad623a29b36db8f77.zip
Windows: Use 32-bit distribution of python
Diffstat (limited to 'python/gevent/__greenlet_primitives.pxd')
-rw-r--r--python/gevent/__greenlet_primitives.pxd44
1 files changed, 44 insertions, 0 deletions
diff --git a/python/gevent/__greenlet_primitives.pxd b/python/gevent/__greenlet_primitives.pxd
new file mode 100644
index 0000000..18381f1
--- /dev/null
+++ b/python/gevent/__greenlet_primitives.pxd
@@ -0,0 +1,44 @@
+cimport cython
+
+# This file must not cimport anything from gevent.
+
+cdef wref
+
+cdef BlockingSwitchOutError
+
+
+cdef extern from "greenlet/greenlet.h":
+
+ ctypedef class greenlet.greenlet [object PyGreenlet]:
+ pass
+
+ # These are actually macros and so much be included
+ # (defined) in each .pxd, as are the two functions
+ # that call them.
+ greenlet PyGreenlet_GetCurrent()
+ object PyGreenlet_Switch(greenlet self, void* args, void* kwargs)
+ void PyGreenlet_Import()
+
+@cython.final
+cdef inline greenlet getcurrent():
+ return PyGreenlet_GetCurrent()
+
+cdef bint _greenlet_imported
+
+cdef inline void greenlet_init():
+ global _greenlet_imported
+ if not _greenlet_imported:
+ PyGreenlet_Import()
+ _greenlet_imported = True
+
+cdef inline object _greenlet_switch(greenlet self):
+ return PyGreenlet_Switch(self, NULL, NULL)
+
+cdef class TrackedRawGreenlet(greenlet):
+ pass
+
+cdef class SwitchOutGreenletWithLoop(TrackedRawGreenlet):
+ cdef public loop
+
+ cpdef switch(self)
+ cpdef switch_out(self)