Current Dir: /usr/include/python3.9/
[DIR] cpython [ delete | rename ]
[DIR] internal [ delete | rename ]
[FILE] abstract.h [ edit | delete | rename ]
[FILE] asdl.h [ edit | delete | rename ]
[FILE] ast.h [ edit | delete | rename ]
[FILE] bitset.h [ edit | delete | rename ]
[FILE] bltinmodule.h [ edit | delete | rename ]
[FILE] boolobject.h [ edit | delete | rename ]
[FILE] bytearrayobject.h [ edit | delete | rename ]
[FILE] bytesobject.h [ edit | delete | rename ]
[FILE] cellobject.h [ edit | delete | rename ]
[FILE] ceval.h [ edit | delete | rename ]
[FILE] classobject.h [ edit | delete | rename ]
[FILE] code.h [ edit | delete | rename ]
[FILE] codecs.h [ edit | delete | rename ]
[FILE] compile.h [ edit | delete | rename ]
[FILE] complexobject.h [ edit | delete | rename ]
[FILE] context.h [ edit | delete | rename ]
[FILE] datetime.h [ edit | delete | rename ]
[FILE] descrobject.h [ edit | delete | rename ]
[FILE] dictobject.h [ edit | delete | rename ]
[FILE] dynamic_annotations.h [ edit | delete | rename ]
[FILE] enumobject.h [ edit | delete | rename ]
[FILE] errcode.h [ edit | delete | rename ]
[FILE] eval.h [ edit | delete | rename ]
[FILE] exports.h [ edit | delete | rename ]
[FILE] fileobject.h [ edit | delete | rename ]
[FILE] fileutils.h [ edit | delete | rename ]
[FILE] floatobject.h [ edit | delete | rename ]
[FILE] frameobject.h [ edit | delete | rename ]
[FILE] funcobject.h [ edit | delete | rename ]
[FILE] genericaliasobject.h [ edit | delete | rename ]
[FILE] genobject.h [ edit | delete | rename ]
[FILE] graminit.h [ edit | delete | rename ]
[FILE] grammar.h [ edit | delete | rename ]
[FILE] import.h [ edit | delete | rename ]
[FILE] interpreteridobject.h [ edit | delete | rename ]
[FILE] intrcheck.h [ edit | delete | rename ]
[FILE] iterobject.h [ edit | delete | rename ]
[FILE] listobject.h [ edit | delete | rename ]
[FILE] longintrepr.h [ edit | delete | rename ]
[FILE] longobject.h [ edit | delete | rename ]
[FILE] marshal.h [ edit | delete | rename ]
[FILE] memoryobject.h [ edit | delete | rename ]
[FILE] methodobject.h [ edit | delete | rename ]
[FILE] modsupport.h [ edit | delete | rename ]
[FILE] moduleobject.h [ edit | delete | rename ]
[FILE] namespaceobject.h [ edit | delete | rename ]
[FILE] node.h [ edit | delete | rename ]
[FILE] object.h [ edit | delete | rename ]
[FILE] objimpl.h [ edit | delete | rename ]
[FILE] odictobject.h [ edit | delete | rename ]
[FILE] opcode.h [ edit | delete | rename ]
[FILE] osdefs.h [ edit | delete | rename ]
[FILE] osmodule.h [ edit | delete | rename ]
[FILE] parsetok.h [ edit | delete | rename ]
[FILE] patchlevel.h [ edit | delete | rename ]
[FILE] picklebufobject.h [ edit | delete | rename ]
[FILE] pyarena.h [ edit | delete | rename ]
[FILE] pycapsule.h [ edit | delete | rename ]
[FILE] pyconfig-64.h [ edit | delete | rename ]
[FILE] pyconfig.h [ edit | delete | rename ]
[FILE] pyctype.h [ edit | delete | rename ]
[FILE] pydebug.h [ edit | delete | rename ]
[FILE] pydtrace.h [ edit | delete | rename ]
[FILE] pyerrors.h [ edit | delete | rename ]
[FILE] pyexpat.h [ edit | delete | rename ]
[FILE] pyfpe.h [ edit | delete | rename ]
[FILE] pyframe.h [ edit | delete | rename ]
[FILE] pyhash.h [ edit | delete | rename ]
[FILE] pylifecycle.h [ edit | delete | rename ]
[FILE] pymacconfig.h [ edit | delete | rename ]
[FILE] pymacro.h [ edit | delete | rename ]
[FILE] pymath.h [ edit | delete | rename ]
[FILE] pymem.h [ edit | delete | rename ]
[FILE] pyport.h [ edit | delete | rename ]
[FILE] pystate.h [ edit | delete | rename ]
[FILE] pystrcmp.h [ edit | delete | rename ]
[FILE] pystrhex.h [ edit | delete | rename ]
[FILE] pystrtod.h [ edit | delete | rename ]
[FILE] Python-ast.h [ edit | delete | rename ]
[FILE] Python.h [ edit | delete | rename ]
[FILE] pythonrun.h [ edit | delete | rename ]
[FILE] pythread.h [ edit | delete | rename ]
[FILE] pytime.h [ edit | delete | rename ]
[FILE] py_curses.h [ edit | delete | rename ]
[FILE] rangeobject.h [ edit | delete | rename ]
[FILE] setobject.h [ edit | delete | rename ]
[FILE] sliceobject.h [ edit | delete | rename ]
[FILE] structmember.h [ edit | delete | rename ]
[FILE] structseq.h [ edit | delete | rename ]
[FILE] symtable.h [ edit | delete | rename ]
[FILE] sysmodule.h [ edit | delete | rename ]
[FILE] token.h [ edit | delete | rename ]
[FILE] traceback.h [ edit | delete | rename ]
[FILE] tracemalloc.h [ edit | delete | rename ]
[FILE] tupleobject.h [ edit | delete | rename ]
[FILE] typeslots.h [ edit | delete | rename ]
[FILE] ucnhash.h [ edit | delete | rename ]
[FILE] unicodeobject.h [ edit | delete | rename ]
[FILE] warnings.h [ edit | delete | rename ]
[FILE] weakrefobject.h [ edit | delete | rename ]
Viewing: /usr/include/python3.9/setobject.h
/* Set object interface */
#ifndef Py_SETOBJECT_H
#define Py_SETOBJECT_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef Py_LIMITED_API
/* There are three kinds of entries in the table:
1. Unused: key == NULL and hash == 0
2. Dummy: key == dummy and hash == -1
3. Active: key != NULL and key != dummy and hash != -1
The hash field of Unused slots is always zero.
The hash field of Dummy slots are set to -1
meaning that dummy entries can be detected by
either entry->key==dummy or by entry->hash==-1.
*/
#define PySet_MINSIZE 8
typedef struct {
PyObject *key;
Py_hash_t hash; /* Cached hash code of the key */
} setentry;
/* The SetObject data structure is shared by set and frozenset objects.
Invariant for sets:
- hash is -1
Invariants for frozensets:
- data is immutable.
- hash is the hash of the frozenset or -1 if not computed yet.
*/
typedef struct {
PyObject_HEAD
Py_ssize_t fill; /* Number active and dummy entries*/
Py_ssize_t used; /* Number active entries */
/* The table contains mask + 1 slots, and that's a power of 2.
* We store the mask instead of the size because the mask is more
* frequently needed.
*/
Py_ssize_t mask;
/* The table points to a fixed-size smalltable for small tables
* or to additional malloc'ed memory for bigger tables.
* The table pointer is never NULL which saves us from repeated
* runtime null-tests.
*/
setentry *table;
Py_hash_t hash; /* Only used by frozenset objects */
Py_ssize_t finger; /* Search finger for pop() */
setentry smalltable[PySet_MINSIZE];
PyObject *weakreflist; /* List of weak references */
} PySetObject;
#define PySet_GET_SIZE(so) (assert(PyAnySet_Check(so)),(((PySetObject *)(so))->used))
PyAPI_DATA(PyObject *) _PySet_Dummy;
PyAPI_FUNC(int) _PySet_NextEntry(PyObject *set, Py_ssize_t *pos, PyObject **key, Py_hash_t *hash);
PyAPI_FUNC(int) _PySet_Update(PyObject *set, PyObject *iterable);
#endif /* Section excluded by Py_LIMITED_API */
PyAPI_DATA(PyTypeObject) PySet_Type;
PyAPI_DATA(PyTypeObject) PyFrozenSet_Type;
PyAPI_DATA(PyTypeObject) PySetIter_Type;
PyAPI_FUNC(PyObject *) PySet_New(PyObject *);
PyAPI_FUNC(PyObject *) PyFrozenSet_New(PyObject *);
PyAPI_FUNC(int) PySet_Add(PyObject *set, PyObject *key);
PyAPI_FUNC(int) PySet_Clear(PyObject *set);
PyAPI_FUNC(int) PySet_Contains(PyObject *anyset, PyObject *key);
PyAPI_FUNC(int) PySet_Discard(PyObject *set, PyObject *key);
PyAPI_FUNC(PyObject *) PySet_Pop(PyObject *set);
PyAPI_FUNC(Py_ssize_t) PySet_Size(PyObject *anyset);
#define PyFrozenSet_CheckExact(ob) Py_IS_TYPE(ob, &PyFrozenSet_Type)
#define PyAnySet_CheckExact(ob) \
(Py_IS_TYPE(ob, &PySet_Type) || Py_IS_TYPE(ob, &PyFrozenSet_Type))
#define PyAnySet_Check(ob) \
(Py_IS_TYPE(ob, &PySet_Type) || Py_IS_TYPE(ob, &PyFrozenSet_Type) || \
PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
#define PySet_Check(ob) \
(Py_IS_TYPE(ob, &PySet_Type) || \
PyType_IsSubtype(Py_TYPE(ob), &PySet_Type))
#define PyFrozenSet_Check(ob) \
(Py_IS_TYPE(ob, &PyFrozenSet_Type) || \
PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
#ifdef __cplusplus
}
#endif
#endif /* !Py_SETOBJECT_H */