}
static int
-set_clear_internal(PySetObject *so)
+set_clear_internal(PyObject *self)
{
+ PySetObject *so = _PySet_CAST(self);
setentry *entry;
setentry *table = so->table;
Py_ssize_t fill = so->fill;
}
static void
-set_dealloc(PySetObject *so)
+set_dealloc(PyObject *self)
{
+ PySetObject *so = _PySet_CAST(self);
setentry *entry;
Py_ssize_t used = so->used;
}
static PyObject *
-set_repr(PySetObject *so)
+set_repr(PyObject *self)
{
+ PySetObject *so = _PySet_CAST(self);
PyObject *result;
Py_BEGIN_CRITICAL_SECTION(so);
result = set_repr_lock_held(so);
}
static Py_ssize_t
-set_len(PySetObject *so)
+set_len(PyObject *self)
{
+ PySetObject *so = _PySet_CAST(self);
return FT_ATOMIC_LOAD_SSIZE_RELAXED(so->used);
}
setentry *other_entry;
assert (PyAnySet_Check(so));
- assert (PyAnySet_Check(otherset));
_Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(so);
_Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(otherset);
- other = (PySetObject*)otherset;
+ other = _PySet_CAST(otherset);
if (other == so || other->used == 0)
/* a.update(a) or a.update(set()); nothing to do */
return 0;
}
static int
-set_traverse(PySetObject *so, visitproc visit, void *arg)
+set_traverse(PyObject *self, visitproc visit, void *arg)
{
+ PySetObject *so = _PySet_CAST(self);
Py_ssize_t pos = 0;
setentry *entry;
static Py_hash_t
frozenset_hash_impl(PyObject *self)
{
- assert(PyAnySet_Check(self));
- PySetObject *so = (PySetObject *)self;
+ PySetObject *so = _PySet_CAST(self);
Py_uhash_t hash = 0;
setentry *entry;
static Py_hash_t
frozenset_hash(PyObject *self)
{
- PySetObject *so = (PySetObject *)self;
+ PySetObject *so = _PySet_CAST(self);
Py_uhash_t hash;
if (so->hash != -1) {
} setiterobject;
static void
-setiter_dealloc(setiterobject *si)
+setiter_dealloc(PyObject *self)
{
+ setiterobject *si = (setiterobject*)self;
/* bpo-31095: UnTrack is needed before calling any callbacks */
_PyObject_GC_UNTRACK(si);
Py_XDECREF(si->si_set);
}
static int
-setiter_traverse(setiterobject *si, visitproc visit, void *arg)
+setiter_traverse(PyObject *self, visitproc visit, void *arg)
{
+ setiterobject *si = (setiterobject*)self;
Py_VISIT(si->si_set);
return 0;
}
PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
-static PyObject *setiter_iternext(setiterobject *si);
-
static PyObject *
setiter_reduce(setiterobject *si, PyObject *Py_UNUSED(ignored))
{
{NULL, NULL} /* sentinel */
};
-static PyObject *setiter_iternext(setiterobject *si)
+static PyObject *setiter_iternext(PyObject *self)
{
+ setiterobject *si = (setiterobject*)self;
PyObject *key = NULL;
Py_ssize_t i, mask;
setentry *entry;
sizeof(setiterobject), /* tp_basicsize */
0, /* tp_itemsize */
/* methods */
- (destructor)setiter_dealloc, /* tp_dealloc */
+ setiter_dealloc, /* tp_dealloc */
0, /* tp_vectorcall_offset */
0, /* tp_getattr */
0, /* tp_setattr */
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
0, /* tp_doc */
- (traverseproc)setiter_traverse, /* tp_traverse */
+ setiter_traverse, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */
0, /* tp_weaklistoffset */
PyObject_SelfIter, /* tp_iter */
- (iternextfunc)setiter_iternext, /* tp_iternext */
+ setiter_iternext, /* tp_iternext */
setiter_methods, /* tp_methods */
0,
};
static PyObject *
-set_iter(PySetObject *so)
+set_iter(PyObject *so)
{
Py_ssize_t size = set_len(so);
setiterobject *si = PyObject_GC_New(setiterobject, &PySetIter_Type);
set_clear_impl(PySetObject *so)
/*[clinic end generated code: output=4e71d5a83904161a input=c6f831b366111950]*/
{
- set_clear_internal(so);
+ set_clear_internal((PyObject*)so);
Py_RETURN_NONE;
}
}
static PyObject *
-set_or(PySetObject *so, PyObject *other)
+set_or(PyObject *self, PyObject *other)
{
PySetObject *result;
- if (!PyAnySet_Check(so) || !PyAnySet_Check(other))
+ if (!PyAnySet_Check(self) || !PyAnySet_Check(other))
Py_RETURN_NOTIMPLEMENTED;
+ PySetObject *so = _PySet_CAST(self);
result = (PySetObject *)set_copy(so, NULL);
if (result == NULL) {
}
static PyObject *
-set_ior(PySetObject *so, PyObject *other)
+set_ior(PyObject *self, PyObject *other)
{
if (!PyAnySet_Check(other))
Py_RETURN_NOTIMPLEMENTED;
+ PySetObject *so = _PySet_CAST(self);
if (set_update_internal(so, other)) {
return NULL;
}
static PyObject *
-set_and(PySetObject *so, PyObject *other)
+set_and(PyObject *self, PyObject *other)
{
- if (!PyAnySet_Check(so) || !PyAnySet_Check(other))
+ if (!PyAnySet_Check(self) || !PyAnySet_Check(other))
Py_RETURN_NOTIMPLEMENTED;
+ PySetObject *so = _PySet_CAST(self);
PyObject *rv;
Py_BEGIN_CRITICAL_SECTION2(so, other);
}
static PyObject *
-set_iand(PySetObject *so, PyObject *other)
+set_iand(PyObject *self, PyObject *other)
{
PyObject *result;
if (!PyAnySet_Check(other))
Py_RETURN_NOTIMPLEMENTED;
+ PySetObject *so = _PySet_CAST(self);
Py_BEGIN_CRITICAL_SECTION2(so, other);
result = set_intersection_update(so, other);
_Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(other);
if ((PyObject *)so == other)
- return set_clear_internal(so);
+ return set_clear_internal((PyObject*)so);
if (PyAnySet_Check(other)) {
setentry *entry;
}
static PyObject *
-set_sub(PySetObject *so, PyObject *other)
+set_sub(PyObject *self, PyObject *other)
{
- if (!PyAnySet_Check(so) || !PyAnySet_Check(other))
+ if (!PyAnySet_Check(self) || !PyAnySet_Check(other))
Py_RETURN_NOTIMPLEMENTED;
+ PySetObject *so = _PySet_CAST(self);
PyObject *rv;
Py_BEGIN_CRITICAL_SECTION2(so, other);
}
static PyObject *
-set_isub(PySetObject *so, PyObject *other)
+set_isub(PyObject *self, PyObject *other)
{
if (!PyAnySet_Check(other))
Py_RETURN_NOTIMPLEMENTED;
+ PySetObject *so = _PySet_CAST(self);
int rv;
Py_BEGIN_CRITICAL_SECTION2(so, other);
}
static PyObject *
-set_xor(PySetObject *so, PyObject *other)
+set_xor(PyObject *self, PyObject *other)
{
- if (!PyAnySet_Check(so) || !PyAnySet_Check(other))
+ if (!PyAnySet_Check(self) || !PyAnySet_Check(other))
Py_RETURN_NOTIMPLEMENTED;
+ PySetObject *so = _PySet_CAST(self);
return set_symmetric_difference(so, other);
}
static PyObject *
-set_ixor(PySetObject *so, PyObject *other)
+set_ixor(PyObject *self, PyObject *other)
{
PyObject *result;
if (!PyAnySet_Check(other))
Py_RETURN_NOTIMPLEMENTED;
+ PySetObject *so = _PySet_CAST(self);
+
result = set_symmetric_difference_update(so, other);
if (result == NULL)
return NULL;
}
static PyObject *
-set_richcompare(PySetObject *v, PyObject *w, int op)
+set_richcompare(PyObject *self, PyObject *w, int op)
{
+ PySetObject *v = _PySet_CAST(self);
PyObject *r1;
int r2;
Py_RETURN_FALSE;
return set_issubset(v, w);
case Py_NE:
- r1 = set_richcompare(v, w, Py_EQ);
+ r1 = set_richcompare((PyObject*)v, w, Py_EQ);
if (r1 == NULL)
return NULL;
r2 = PyObject_IsTrue(r1);
return rv;
}
+static int
+set_contains(PyObject *self, PyObject *key)
+{
+ PySetObject *so = _PySet_CAST(self);
+ return _PySet_Contains(so, key);
+}
+
/*[clinic input]
@critical_section
@coexist
}
static int
-set_init(PySetObject *self, PyObject *args, PyObject *kwds)
+set_init(PyObject *so, PyObject *args, PyObject *kwds)
{
+ PySetObject *self = _PySet_CAST(so);
PyObject *iterable = NULL;
if (!_PyArg_NoKeywords("set", kwds))
}
Py_BEGIN_CRITICAL_SECTION(self);
if (self->fill)
- set_clear_internal(self);
+ set_clear_internal((PyObject*)self);
self->hash = -1;
Py_END_CRITICAL_SECTION();
}
static PySequenceMethods set_as_sequence = {
- (lenfunc)set_len, /* sq_length */
+ set_len, /* sq_length */
0, /* sq_concat */
0, /* sq_repeat */
0, /* sq_item */
0, /* sq_slice */
0, /* sq_ass_item */
0, /* sq_ass_slice */
- (objobjproc)_PySet_Contains, /* sq_contains */
+ set_contains, /* sq_contains */
};
/* set object ********************************************************/
static PyNumberMethods set_as_number = {
0, /*nb_add*/
- (binaryfunc)set_sub, /*nb_subtract*/
+ set_sub, /*nb_subtract*/
0, /*nb_multiply*/
0, /*nb_remainder*/
0, /*nb_divmod*/
0, /*nb_invert*/
0, /*nb_lshift*/
0, /*nb_rshift*/
- (binaryfunc)set_and, /*nb_and*/
- (binaryfunc)set_xor, /*nb_xor*/
- (binaryfunc)set_or, /*nb_or*/
+ set_and, /*nb_and*/
+ set_xor, /*nb_xor*/
+ set_or, /*nb_or*/
0, /*nb_int*/
0, /*nb_reserved*/
0, /*nb_float*/
0, /*nb_inplace_add*/
- (binaryfunc)set_isub, /*nb_inplace_subtract*/
+ set_isub, /*nb_inplace_subtract*/
0, /*nb_inplace_multiply*/
0, /*nb_inplace_remainder*/
0, /*nb_inplace_power*/
0, /*nb_inplace_lshift*/
0, /*nb_inplace_rshift*/
- (binaryfunc)set_iand, /*nb_inplace_and*/
- (binaryfunc)set_ixor, /*nb_inplace_xor*/
- (binaryfunc)set_ior, /*nb_inplace_or*/
+ set_iand, /*nb_inplace_and*/
+ set_ixor, /*nb_inplace_xor*/
+ set_ior, /*nb_inplace_or*/
};
PyDoc_STRVAR(set_doc,
sizeof(PySetObject), /* tp_basicsize */
0, /* tp_itemsize */
/* methods */
- (destructor)set_dealloc, /* tp_dealloc */
+ set_dealloc, /* tp_dealloc */
0, /* tp_vectorcall_offset */
0, /* tp_getattr */
0, /* tp_setattr */
0, /* tp_as_async */
- (reprfunc)set_repr, /* tp_repr */
+ set_repr, /* tp_repr */
&set_as_number, /* tp_as_number */
&set_as_sequence, /* tp_as_sequence */
0, /* tp_as_mapping */
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
Py_TPFLAGS_BASETYPE |
- _Py_TPFLAGS_MATCH_SELF, /* tp_flags */
+ _Py_TPFLAGS_MATCH_SELF, /* tp_flags */
set_doc, /* tp_doc */
- (traverseproc)set_traverse, /* tp_traverse */
- (inquiry)set_clear_internal, /* tp_clear */
- (richcmpfunc)set_richcompare, /* tp_richcompare */
+ set_traverse, /* tp_traverse */
+ set_clear_internal, /* tp_clear */
+ set_richcompare, /* tp_richcompare */
offsetof(PySetObject, weakreflist), /* tp_weaklistoffset */
- (getiterfunc)set_iter, /* tp_iter */
+ set_iter, /* tp_iter */
0, /* tp_iternext */
set_methods, /* tp_methods */
0, /* tp_members */
0, /* tp_descr_get */
0, /* tp_descr_set */
0, /* tp_dictoffset */
- (initproc)set_init, /* tp_init */
+ set_init, /* tp_init */
PyType_GenericAlloc, /* tp_alloc */
set_new, /* tp_new */
PyObject_GC_Del, /* tp_free */
static PyNumberMethods frozenset_as_number = {
0, /*nb_add*/
- (binaryfunc)set_sub, /*nb_subtract*/
+ set_sub, /*nb_subtract*/
0, /*nb_multiply*/
0, /*nb_remainder*/
0, /*nb_divmod*/
0, /*nb_invert*/
0, /*nb_lshift*/
0, /*nb_rshift*/
- (binaryfunc)set_and, /*nb_and*/
- (binaryfunc)set_xor, /*nb_xor*/
- (binaryfunc)set_or, /*nb_or*/
+ set_and, /*nb_and*/
+ set_xor, /*nb_xor*/
+ set_or, /*nb_or*/
};
PyDoc_STRVAR(frozenset_doc,
sizeof(PySetObject), /* tp_basicsize */
0, /* tp_itemsize */
/* methods */
- (destructor)set_dealloc, /* tp_dealloc */
+ set_dealloc, /* tp_dealloc */
0, /* tp_vectorcall_offset */
0, /* tp_getattr */
0, /* tp_setattr */
0, /* tp_as_async */
- (reprfunc)set_repr, /* tp_repr */
+ set_repr, /* tp_repr */
&frozenset_as_number, /* tp_as_number */
&set_as_sequence, /* tp_as_sequence */
0, /* tp_as_mapping */
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
Py_TPFLAGS_BASETYPE |
- _Py_TPFLAGS_MATCH_SELF, /* tp_flags */
+ _Py_TPFLAGS_MATCH_SELF, /* tp_flags */
frozenset_doc, /* tp_doc */
- (traverseproc)set_traverse, /* tp_traverse */
- (inquiry)set_clear_internal, /* tp_clear */
- (richcmpfunc)set_richcompare, /* tp_richcompare */
+ set_traverse, /* tp_traverse */
+ set_clear_internal, /* tp_clear */
+ set_richcompare, /* tp_richcompare */
offsetof(PySetObject, weakreflist), /* tp_weaklistoffset */
- (getiterfunc)set_iter, /* tp_iter */
+ set_iter, /* tp_iter */
0, /* tp_iternext */
frozenset_methods, /* tp_methods */
0, /* tp_members */
PyErr_BadInternalCall();
return -1;
}
- return set_len((PySetObject *)anyset);
+ return set_len(anyset);
}
int
void
_PySet_ClearInternal(PySetObject *so)
{
- (void)set_clear_internal(so);
+ (void)set_clear_internal((PyObject*)so);
}
int