9# pragma clang diagnostic push
10# pragma clang diagnostic ignored "-Wunused-function"
13#include "greenlet_exceptions.hpp"
15#include "greenlet_internal.hpp"
16#include "greenlet_refs.hpp"
19#include "TThreadStateDestroy.cpp"
21#include "PyGreenlet.hpp"
24using greenlet::Require;
30PyGreenlet_GetCurrent(
void)
32 return GET_THREAD_STATE().state().get_current().relinquish_ownership();
38 return green_setparent((
PyGreenlet*)g, (PyObject*)nparent, NULL);
42PyGreenlet_New(PyObject* run,
PyGreenlet* parent)
49 OwnedGreenlet g = OwnedGreenlet::consuming(green_new(&PyGreenlet_Type,
nullptr,
nullptr));
55 NewDictReference kwargs;
57 kwargs.SetItem(mod_globs->str_run, run);
60 kwargs.SetItem(
"parent", (PyObject*)parent);
63 Require(green_init(g.borrow(), mod_globs->empty_tuple, kwargs.borrow()));
69 return g.relinquish_ownership();
73PyGreenlet_Switch(
PyGreenlet* self, PyObject* args, PyObject* kwargs)
75 if (!PyGreenlet_Check(self)) {
81 args = mod_globs->empty_tuple;
84 if (kwargs == NULL || !PyDict_Check(kwargs)) {
88 return green_switch(self, args, kwargs);
92PyGreenlet_Throw(
PyGreenlet* self, PyObject* typ, PyObject* val, PyObject* tb)
94 if (!PyGreenlet_Check(self)) {
100 return internal_green_throw(self, err_pieces).relinquish_ownership();
112 if (!PyGreenlet_Check(self)) {
116 return self->pimpl->main();
122 if (!PyGreenlet_Check(self)) {
126 return self->pimpl->active();
132 if (!PyGreenlet_Check(self)) {
136 return self->pimpl->started();
142 if (!PyGreenlet_Check(self)) {
147 return self->pimpl->parent().acquire();
153# pragma clang diagnostic pop
Definition greenlet_exceptions.hpp:17
Definition greenlet_refs.hpp:447
Definition greenlet_refs.hpp:995