Lines Matching refs:self

22 static PyObject *weakref_vectorcall(PyWeakReference *self, PyObject *const *args, size_t nargsf, PyObject *kwnames);
25 init_weakref(PyWeakReference *self, PyObject *ob, PyObject *callback)
27 self->hash = -1;
28 self->wr_object = ob;
29 self->wr_prev = NULL;
30 self->wr_next = NULL;
31 self->wr_callback = Py_XNewRef(callback);
32 self->vectorcall = (vectorcallfunc)weakref_vectorcall;
55 clear_weakref(PyWeakReference *self)
57 PyObject *callback = self->wr_callback;
59 if (self->wr_object != Py_None) {
60 PyWeakReference **list = GET_WEAKREFS_LISTPTR(self->wr_object);
62 if (*list == self)
63 /* If 'self' is the end of the list (and thus self->wr_next == NULL)
66 *list = self->wr_next;
67 self->wr_object = Py_None;
68 if (self->wr_prev != NULL)
69 self->wr_prev->wr_next = self->wr_next;
70 if (self->wr_next != NULL)
71 self->wr_next->wr_prev = self->wr_prev;
72 self->wr_prev = NULL;
73 self->wr_next = NULL;
77 self->wr_callback = NULL;
82 * the callback intact and uncalled. It must be possible to call self's
83 * tp_dealloc() after calling this, so self has to be left in a sane enough
93 _PyWeakref_ClearRef(PyWeakReference *self)
97 assert(self != NULL);
98 assert(PyWeakref_Check(self));
100 callback = self->wr_callback;
101 self->wr_callback = NULL;
102 clear_weakref(self);
103 self->wr_callback = callback;
107 weakref_dealloc(PyObject *self)
109 PyObject_GC_UnTrack(self);
110 clear_weakref((PyWeakReference *) self);
111 Py_TYPE(self)->tp_free(self);
116 gc_traverse(PyWeakReference *self, visitproc visit, void *arg)
118 Py_VISIT(self->wr_callback);
124 gc_clear(PyWeakReference *self)
126 clear_weakref(self);
132 weakref_vectorcall(PyWeakReference *self, PyObject *const *args,
142 return Py_NewRef(PyWeakref_GET_OBJECT(self));
146 weakref_hash(PyWeakReference *self)
148 if (self->hash != -1)
149 return self->hash;
150 PyObject* obj = PyWeakref_GET_OBJECT(self);
156 self->hash = PyObject_Hash(obj);
158 return self->hash;
163 weakref_repr(PyWeakReference *self)
166 PyObject* obj = PyWeakref_GET_OBJECT(self);
169 return PyUnicode_FromFormat("<weakref at %p; dead>", self);
177 self,
178 Py_TYPE(PyWeakref_GET_OBJECT(self))->tp_name,
184 self,
185 Py_TYPE(PyWeakref_GET_OBJECT(self))->tp_name,
199 weakref_richcompare(PyWeakReference* self, PyWeakReference* other, int op)
202 !PyWeakref_Check(self) ||
206 if (PyWeakref_GET_OBJECT(self) == Py_None
208 int res = (self == other);
216 PyObject* obj = PyWeakref_GET_OBJECT(self);
291 PyWeakReference *self = NULL;
321 self = (PyWeakReference *) (type->tp_alloc(type, 0));
322 if (self != NULL) {
323 init_weakref(self, ob, callback);
325 insert_head(self, list);
333 insert_head(self, list);
335 insert_after(self, prev);
339 return (PyObject *)self;
343 weakref___init__(PyObject *self, PyObject *args, PyObject *kwargs)
556 proxy_dealloc(PyWeakReference *self)
558 PyObject_GC_UnTrack(self);
559 if (self->wr_callback != NULL)
560 PyObject_GC_UnTrack((PyObject *)self);
561 clear_weakref(self);
562 PyObject_GC_Del(self);