✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ server366.web-hosting.com ​🇻​♯➤ 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2025

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 67.223.118.204 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.52
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/hc_python/lib/python3.12/site-packages/greenlet//PyGreenletUnswitchable.cpp
/* -*- indent-tabs-mode: nil; tab-width: 4; -*- */
/**
   Implementation of the Python slots for PyGreenletUnswitchable_Type
*/
#ifndef PY_GREENLET_UNSWITCHABLE_CPP
#define PY_GREENLET_UNSWITCHABLE_CPP



#define PY_SSIZE_T_CLEAN
#include <Python.h>
#include "structmember.h" // PyMemberDef

#include "greenlet_internal.hpp"
// Code after this point can assume access to things declared in stdint.h,
// including the fixed-width types. This goes for the platform-specific switch functions
// as well.
#include "greenlet_refs.hpp"
#include "greenlet_slp_switch.hpp"

#include "greenlet_thread_support.hpp"
#include "TGreenlet.hpp"

#include "TGreenlet.cpp"
#include "TGreenletGlobals.cpp"
#include "TThreadStateDestroy.cpp"


using greenlet::LockGuard;
using greenlet::LockInitError;
using greenlet::PyErrOccurred;
using greenlet::Require;

using greenlet::g_handle_exit;
using greenlet::single_result;

using greenlet::Greenlet;
using greenlet::UserGreenlet;
using greenlet::MainGreenlet;
using greenlet::BrokenGreenlet;
using greenlet::ThreadState;
using greenlet::PythonState;


#include "PyGreenlet.hpp"

static PyGreenlet*
green_unswitchable_new(PyTypeObject* type, PyObject* UNUSED(args), PyObject* UNUSED(kwds))
{
    PyGreenlet* o =
        (PyGreenlet*)PyBaseObject_Type.tp_new(type, mod_globs->empty_tuple, mod_globs->empty_dict);
    if (o) {
        new BrokenGreenlet(o, GET_THREAD_STATE().state().borrow_current());
        assert(Py_REFCNT(o) == 1);
    }
    return o;
}

static PyObject*
green_unswitchable_getforce(PyGreenlet* self, void* UNUSED(context))
{
    BrokenGreenlet* broken = dynamic_cast<BrokenGreenlet*>(self->pimpl);
    return PyBool_FromLong(broken->_force_switch_error);
}

static int
green_unswitchable_setforce(PyGreenlet* self, PyObject* nforce, void* UNUSED(context))
{
    if (!nforce) {
        PyErr_SetString(
            PyExc_AttributeError,
            "Cannot delete force_switch_error"
        );
        return -1;
    }
    BrokenGreenlet* broken = dynamic_cast<BrokenGreenlet*>(self->pimpl);
    int is_true = PyObject_IsTrue(nforce);
    if (is_true == -1) {
        return -1;
    }
    broken->_force_switch_error = is_true;
    return 0;
}

static PyObject*
green_unswitchable_getforceslp(PyGreenlet* self, void* UNUSED(context))
{
    BrokenGreenlet* broken = dynamic_cast<BrokenGreenlet*>(self->pimpl);
    return PyBool_FromLong(broken->_force_slp_switch_error);
}

static int
green_unswitchable_setforceslp(PyGreenlet* self, PyObject* nforce, void* UNUSED(context))
{
    if (!nforce) {
        PyErr_SetString(
            PyExc_AttributeError,
            "Cannot delete force_slp_switch_error"
        );
        return -1;
    }
    BrokenGreenlet* broken = dynamic_cast<BrokenGreenlet*>(self->pimpl);
    int is_true = PyObject_IsTrue(nforce);
    if (is_true == -1) {
        return -1;
    }
    broken->_force_slp_switch_error = is_true;
    return 0;
}

static PyGetSetDef green_unswitchable_getsets[] = {
    /* name, getter, setter, doc, closure (context pointer) */
    {
      .name="force_switch_error",
      .get=(getter)green_unswitchable_getforce,
      .set=(setter)green_unswitchable_setforce,
      .doc=nullptr
    },
    {
      .name="force_slp_switch_error",
      .get=(getter)green_unswitchable_getforceslp,
      .set=(setter)green_unswitchable_setforceslp,
      .doc=nullptr
    },
    {.name=nullptr}
};

PyTypeObject PyGreenletUnswitchable_Type = {
    .ob_base = PyVarObject_HEAD_INIT(NULL, 0)
    .tp_name = "greenlet._greenlet.UnswitchableGreenlet",
    .tp_dealloc = (destructor)green_dealloc,
    .tp_flags = G_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
    .tp_doc = "Undocumented internal class for testing error conditions",
    .tp_traverse = (traverseproc)green_traverse,
    .tp_clear = (inquiry)green_clear,

    .tp_getset = green_unswitchable_getsets,
    .tp_base = &PyGreenlet_Type,
    .tp_init = (initproc)green_init,
    .tp_alloc = PyType_GenericAlloc,
    .tp_new = (newfunc)green_unswitchable_new,
    .tp_free = PyObject_GC_Del,
#ifndef Py_GIL_DISABLED
    // See comments in the base type
    .tp_is_gc = (inquiry)green_is_gc,
#endif
};


#endif


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
11 Jun 2026 5.00 AM
root / root
0755
__pycache__
--
11 Jun 2026 5.00 AM
root / root
0755
platform
--
11 Jun 2026 5.00 AM
root / root
0755
tests
--
11 Jun 2026 5.00 AM
root / root
0755
CObjects.cpp
3.566 KB
11 Jun 2026 5.00 AM
root / root
0644
PyGreenlet.cpp
27.523 KB
11 Jun 2026 5.00 AM
root / root
0644
PyGreenlet.hpp
1.429 KB
11 Jun 2026 5.00 AM
root / root
0644
PyGreenletUnswitchable.cpp
4.059 KB
11 Jun 2026 5.00 AM
root / root
0644
PyModule.cpp
8.588 KB
11 Jun 2026 5.00 AM
root / root
0644
TBrokenGreenlet.cpp
0.997 KB
11 Jun 2026 5.00 AM
root / root
0644
TExceptionState.cpp
1.327 KB
11 Jun 2026 5.00 AM
root / root
0644
TGreenlet.cpp
25.624 KB
11 Jun 2026 5.00 AM
root / root
0644
TGreenlet.hpp
28.576 KB
11 Jun 2026 5.00 AM
root / root
0644
TGreenletGlobals.cpp
3.838 KB
11 Jun 2026 5.00 AM
root / root
0644
TMainGreenlet.cpp
3.509 KB
11 Jun 2026 5.00 AM
root / root
0644
TPythonState.cpp
19.15 KB
11 Jun 2026 5.00 AM
root / root
0644
TStackState.cpp
7.208 KB
11 Jun 2026 5.00 AM
root / root
0644
TThreadState.hpp
23.342 KB
11 Jun 2026 5.00 AM
root / root
0644
TThreadStateCreator.hpp
2.702 KB
11 Jun 2026 5.00 AM
root / root
0644
TThreadStateDestroy.cpp
7.986 KB
11 Jun 2026 5.00 AM
root / root
0644
TUserGreenlet.cpp
23.763 KB
11 Jun 2026 5.00 AM
root / root
0644
__init__.py
1.408 KB
11 Jun 2026 5.00 AM
root / root
0644
_greenlet.cpython-312-x86_64-linux-gnu.so
1.32 MB
11 Jun 2026 5.00 AM
root / root
0755
greenlet.cpp
10.828 KB
11 Jun 2026 5.00 AM
root / root
0644
greenlet.h
4.644 KB
11 Jun 2026 5.00 AM
root / root
0644
greenlet_allocator.hpp
1.792 KB
11 Jun 2026 5.00 AM
root / root
0644
greenlet_compiler_compat.hpp
4.244 KB
11 Jun 2026 5.00 AM
root / root
0644
greenlet_cpython_compat.hpp
3.247 KB
11 Jun 2026 5.00 AM
root / root
0644
greenlet_exceptions.hpp
4.397 KB
11 Jun 2026 5.00 AM
root / root
0644
greenlet_internal.hpp
2.703 KB
11 Jun 2026 5.00 AM
root / root
0644
greenlet_msvc_compat.hpp
3.12 KB
11 Jun 2026 5.00 AM
root / root
0644
greenlet_refs.hpp
37.175 KB
11 Jun 2026 5.00 AM
root / root
0644
greenlet_slp_switch.hpp
3.221 KB
11 Jun 2026 5.00 AM
root / root
0644
greenlet_thread_support.hpp
0.847 KB
11 Jun 2026 5.00 AM
root / root
0644
slp_platformselect.h
3.866 KB
11 Jun 2026 5.00 AM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF