2#ifndef GREENLET_INTERNAL_H
3#define GREENLET_INTERNAL_H
5# pragma clang diagnostic push
6# pragma clang diagnostic ignored "-Wunused-function"
14#define PY_SSIZE_T_CLEAN
15#include "greenlet_compiler_compat.hpp"
16#include "greenlet_cpython_compat.hpp"
17#include "greenlet_exceptions.hpp"
18#include "TGreenlet.hpp"
19#include "greenlet_allocator.hpp"
24#define GREENLET_MODULE
33 typedef std::vector<ThreadState*> cleanup_queue_t;
38#define implementation_ptr_t greenlet::Greenlet*
44greenlet::refs::MainGreenletExactChecker(
void *p)
50 if (Py_TYPE(p) != &PyGreenlet_Type) {
51 std::string err(
"MainGreenlet: Expected exactly a greenlet, not a ");
52 err += Py_TYPE(p)->tp_name;
59 Greenlet* g =
static_cast<PyGreenlet*
>(p)->pimpl;
63 if (!
dynamic_cast<MainGreenlet*
>(g)) {
64 std::string err(
"MainGreenlet: Expected exactly a main greenlet, not a ");
65 err += Py_TYPE(p)->tp_name;
72template <
typename T, greenlet::refs::TypeChecker TC>
75 return reinterpret_cast<PyGreenlet*
>(this->p)->pimpl;
78template <
typename T, greenlet::refs::TypeChecker TC>
81 return reinterpret_cast<PyGreenlet*
>(this->p)->pimpl;
88extern PyTypeObject PyGreenlet_Type;
95static PyObject* green_switch(
PyGreenlet* self, PyObject* args, PyObject* kwargs);
99# pragma clang diagnostic pop
Definition TGreenlet.hpp:343
Definition greenlet_exceptions.hpp:104
Definition greenlet_refs.hpp:560
Definition greenlet_refs.hpp:471