aboutsummaryrefslogtreecommitdiffstats
path: root/python/gevent/_local.pxd
blob: 331ce28303c6ce1b48bcc88bf83b04edfee36f95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# cython: auto_pickle=False

cimport cython
from gevent._greenlet cimport Greenlet

cdef bint _PYPY
cdef ref
cdef copy

cdef object _marker
cdef str key_prefix
cdef bint _greenlet_imported


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()
    void PyGreenlet_Import()

cdef inline greenlet getcurrent():
    return PyGreenlet_GetCurrent()

cdef inline void greenlet_init():
    global _greenlet_imported
    if not _greenlet_imported:
        PyGreenlet_Import()
        _greenlet_imported = True


cdef void _init()

@cython.final
@cython.internal
cdef class _wrefdict(dict):
   cdef object __weakref__

@cython.final
@cython.internal
cdef class _greenlet_deleted:
    cdef object idt
    cdef object wrdicts


@cython.final
@cython.internal
cdef class _local_deleted:
    cdef str key
    cdef object wrthread
    cdef _greenlet_deleted greenlet_deleted

@cython.final
@cython.internal
cdef class _localimpl:
    cdef str key
    cdef dict dicts
    cdef tuple localargs
    cdef dict localkwargs
    cdef tuple localtypeid
    cdef object __weakref__


@cython.final
@cython.internal
cdef class _localimpl_dict_entry:
    cdef object wrgreenlet
    cdef dict localdict

@cython.locals(localdict=dict, key=str,
               greenlet_deleted=_greenlet_deleted,
               local_deleted=_local_deleted)
cdef dict _localimpl_create_dict(_localimpl self,
                                 greenlet greenlet,
                                 object idt)

cdef set _local_attrs

cdef class local:
    cdef _localimpl _local__impl
    cdef set _local_type_get_descriptors
    cdef set _local_type_set_or_del_descriptors
    cdef set _local_type_del_descriptors
    cdef set _local_type_set_descriptors
    cdef set _local_type_vars
    cdef type _local_type

    @cython.locals(entry=_localimpl_dict_entry,
                   dct=dict, duplicate=dict,
                   instance=local)
    cpdef local __copy__(local self)


@cython.locals(impl=_localimpl,dct=dict,
               dct=dict, entry=_localimpl_dict_entry)
cdef inline dict _local_get_dict(local self)

@cython.locals(entry=_localimpl_dict_entry)
cdef _local__copy_dict_from(local self, _localimpl impl, dict duplicate)

@cython.locals(mro=list, gets=set, dels=set, set_or_del=set,
               type_self=type, type_attr=type,
               sets=set)
cdef tuple _local_find_descriptors(local self)

@cython.locals(result=list, local_impl=_localimpl,
               entry=_localimpl_dict_entry, k=str,
               greenlet_dict=dict)
cpdef all_local_dicts_for_greenlet(greenlet greenlet)