Current Path: > > opt > > hc_python > lib64 > > python3.12 > site-packages > greenlet
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
__pycache__ | Directory | - | - | |
platform | Directory | - | - | |
tests | Directory | - | - | |
CObjects.cpp | File | 3508 bytes | May 23 2025 10:34:46. | |
PyGreenlet.cpp | File | 23441 bytes | May 23 2025 10:34:46. | |
PyGreenlet.hpp | File | 1463 bytes | May 23 2025 10:34:46. | |
PyGreenletUnswitchable.cpp | File | 4375 bytes | May 23 2025 10:34:46. | |
PyModule.cpp | File | 8587 bytes | May 23 2025 10:34:46. | |
TBrokenGreenlet.cpp | File | 1021 bytes | May 23 2025 10:34:46. | |
TExceptionState.cpp | File | 1359 bytes | May 23 2025 10:34:46. | |
TGreenlet.cpp | File | 25731 bytes | May 23 2025 10:34:46. | |
TGreenlet.hpp | File | 28043 bytes | May 23 2025 10:34:46. | |
TGreenletGlobals.cpp | File | 3264 bytes | May 23 2025 10:34:46. | |
TMainGreenlet.cpp | File | 3276 bytes | May 23 2025 10:34:46. | |
TPythonState.cpp | File | 15779 bytes | May 23 2025 10:34:46. | |
TStackState.cpp | File | 7381 bytes | May 23 2025 10:34:46. | |
TThreadState.hpp | File | 19131 bytes | May 23 2025 10:34:46. | |
TThreadStateCreator.hpp | File | 2610 bytes | May 23 2025 10:34:46. | |
TThreadStateDestroy.cpp | File | 8169 bytes | May 23 2025 10:34:46. | |
TUserGreenlet.cpp | File | 23553 bytes | May 23 2025 10:34:46. | |
__init__.py | File | 1723 bytes | May 23 2025 10:34:46. | |
_greenlet.cpython-312-x86_64-linux-gnu.so | File | 1446128 bytes | May 23 2025 10:34:46. | |
greenlet.cpp | File | 10996 bytes | May 23 2025 10:34:46. | |
greenlet.h | File | 4755 bytes | May 23 2025 10:34:46. | |
greenlet_allocator.hpp | File | 1582 bytes | May 23 2025 10:34:46. | |
greenlet_compiler_compat.hpp | File | 4346 bytes | May 23 2025 10:34:46. | |
greenlet_cpython_compat.hpp | File | 4068 bytes | May 23 2025 10:34:46. | |
greenlet_exceptions.hpp | File | 4503 bytes | May 23 2025 10:34:46. | |
greenlet_internal.hpp | File | 2709 bytes | May 23 2025 10:34:46. | |
greenlet_refs.hpp | File | 34436 bytes | May 23 2025 10:34:46. | |
greenlet_slp_switch.hpp | File | 3198 bytes | May 23 2025 10:34:46. | |
greenlet_thread_support.hpp | File | 867 bytes | May 23 2025 10:34:46. | |
slp_platformselect.h | File | 3841 bytes | May 23 2025 10:34:46. |
#ifndef GREENLET_THREAD_STATE_CREATOR_HPP #define GREENLET_THREAD_STATE_CREATOR_HPP #include <ctime> #include <stdexcept> #include "greenlet_internal.hpp" #include "greenlet_refs.hpp" #include "greenlet_thread_support.hpp" #include "TThreadState.hpp" namespace greenlet { typedef void (*ThreadStateDestructor)(ThreadState* const); template<ThreadStateDestructor Destructor> class ThreadStateCreator { private: // Initialized to 1, and, if still 1, created on access. // Set to 0 on destruction. ThreadState* _state; G_NO_COPIES_OF_CLS(ThreadStateCreator); inline bool has_initialized_state() const noexcept { return this->_state != (ThreadState*)1; } inline bool has_state() const noexcept { return this->has_initialized_state() && this->_state != nullptr; } public: // Only one of these, auto created per thread. // Constructing the state constructs the MainGreenlet. ThreadStateCreator() : _state((ThreadState*)1) { } ~ThreadStateCreator() { if (this->has_state()) { Destructor(this->_state); } this->_state = nullptr; } inline ThreadState& state() { // The main greenlet will own this pointer when it is created, // which will be right after this. The plan is to give every // greenlet a pointer to the main greenlet for the thread it // runs in; if we are doing something cross-thread, we need to // access the pointer from the main greenlet. Deleting the // thread, and hence the thread-local storage, will delete the // state pointer in the main greenlet. if (!this->has_initialized_state()) { // XXX: Assuming allocation never fails this->_state = new ThreadState; // For non-standard threading, we need to store an object // in the Python thread state dictionary so that it can be // DECREF'd when the thread ends (ideally; the dict could // last longer) and clean this object up. } if (!this->_state) { throw std::runtime_error("Accessing state after destruction."); } return *this->_state; } operator ThreadState&() { return this->state(); } operator ThreadState*() { return &this->state(); } inline int tp_traverse(visitproc visit, void* arg) { if (this->has_state()) { return this->_state->tp_traverse(visit, arg); } return 0; } }; }; // namespace greenlet #endif
SILENT KILLER Tool