CoolFace
Apppublic

vidya7732/AI_Doctor_LLM_GenModel

sourceHugging Faceupdated 11mo agoView on Hugging Face
0likes
setobject.h108 linesDownload Raw Back to include
1/* Set object interface */2 3#ifndef Py_SETOBJECT_H4#define Py_SETOBJECT_H5#ifdef __cplusplus6extern "C" {7#endif8 9#ifndef Py_LIMITED_API10 11/* There are three kinds of entries in the table:12 131. Unused:  key == NULL and hash == 0142. Dummy:   key == dummy and hash == -1153. Active:  key != NULL and key != dummy and hash != -116 17The hash field of Unused slots is always zero.18 19The hash field of Dummy slots are set to -120meaning that dummy entries can be detected by21either entry->key==dummy or by entry->hash==-1.22*/23 24#define PySet_MINSIZE 825 26typedef struct {27    PyObject *key;28    Py_hash_t hash;             /* Cached hash code of the key */29} setentry;30 31/* The SetObject data structure is shared by set and frozenset objects.32 33Invariant for sets:34 - hash is -135 36Invariants for frozensets:37 - data is immutable.38 - hash is the hash of the frozenset or -1 if not computed yet.39 40*/41 42typedef struct {43    PyObject_HEAD44 45    Py_ssize_t fill;            /* Number active and dummy entries*/46    Py_ssize_t used;            /* Number active entries */47 48    /* The table contains mask + 1 slots, and that's a power of 2.49     * We store the mask instead of the size because the mask is more50     * frequently needed.51     */52    Py_ssize_t mask;53 54    /* The table points to a fixed-size smalltable for small tables55     * or to additional malloc'ed memory for bigger tables.56     * The table pointer is never NULL which saves us from repeated57     * runtime null-tests.58     */59    setentry *table;60    Py_hash_t hash;             /* Only used by frozenset objects */61    Py_ssize_t finger;          /* Search finger for pop() */62 63    setentry smalltable[PySet_MINSIZE];64    PyObject *weakreflist;      /* List of weak references */65} PySetObject;66 67#define PySet_GET_SIZE(so) (assert(PyAnySet_Check(so)),(((PySetObject *)(so))->used))68 69PyAPI_DATA(PyObject *) _PySet_Dummy;70 71PyAPI_FUNC(int) _PySet_NextEntry(PyObject *set, Py_ssize_t *pos, PyObject **key, Py_hash_t *hash);72PyAPI_FUNC(int) _PySet_Update(PyObject *set, PyObject *iterable);73 74#endif /* Section excluded by Py_LIMITED_API */75 76PyAPI_DATA(PyTypeObject) PySet_Type;77PyAPI_DATA(PyTypeObject) PyFrozenSet_Type;78PyAPI_DATA(PyTypeObject) PySetIter_Type;79 80PyAPI_FUNC(PyObject *) PySet_New(PyObject *);81PyAPI_FUNC(PyObject *) PyFrozenSet_New(PyObject *);82 83PyAPI_FUNC(int) PySet_Add(PyObject *set, PyObject *key);84PyAPI_FUNC(int) PySet_Clear(PyObject *set);85PyAPI_FUNC(int) PySet_Contains(PyObject *anyset, PyObject *key);86PyAPI_FUNC(int) PySet_Discard(PyObject *set, PyObject *key);87PyAPI_FUNC(PyObject *) PySet_Pop(PyObject *set);88PyAPI_FUNC(Py_ssize_t) PySet_Size(PyObject *anyset);89 90#define PyFrozenSet_CheckExact(ob) Py_IS_TYPE(ob, &PyFrozenSet_Type)91#define PyAnySet_CheckExact(ob) \92    (Py_IS_TYPE(ob, &PySet_Type) || Py_IS_TYPE(ob, &PyFrozenSet_Type))93#define PyAnySet_Check(ob) \94    (Py_IS_TYPE(ob, &PySet_Type) || Py_IS_TYPE(ob, &PyFrozenSet_Type) || \95      PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \96      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))97#define PySet_Check(ob) \98    (Py_IS_TYPE(ob, &PySet_Type) || \99    PyType_IsSubtype(Py_TYPE(ob), &PySet_Type))100#define   PyFrozenSet_Check(ob) \101    (Py_IS_TYPE(ob, &PyFrozenSet_Type) || \102      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))103 104#ifdef __cplusplus105}106#endif107#endif /* !Py_SETOBJECT_H */108