| |
| /* Set object interface */ |
| |
| #ifndef Py_SETOBJECT_H |
| #define Py_SETOBJECT_H |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* |
| This data structure is shared by set and frozenset objects. |
| */ |
| |
| typedef struct { |
| PyObject_HEAD |
| PyObject *data; |
| long hash; /* only used by frozenset objects */ |
| PyObject *weakreflist; /* List of weak references */ |
| |
| /* Invariants: |
| * data is a dictionary whose values are all True. |
| * data points to the same dict for the whole life of the set. |
| * For frozensets only: |
| * data is immutable. |
| * hash is the hash of the frozenset or -1 if not computed yet. |
| */ |
| } PySetObject; |
| |
| PyAPI_DATA(PyTypeObject) PySet_Type; |
| PyAPI_DATA(PyTypeObject) PyFrozenSet_Type; |
| |
| #define PyFrozenSet_CheckExact(ob) ((ob)->ob_type == &PyFrozenSet_Type) |
| #define PyAnySet_Check(ob) \ |
| ((ob)->ob_type == &PySet_Type || (ob)->ob_type == &PyFrozenSet_Type || \ |
| PyType_IsSubtype((ob)->ob_type, &PySet_Type) || \ |
| PyType_IsSubtype((ob)->ob_type, &PyFrozenSet_Type)) |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif /* !Py_SETOBJECT_H */ |