mirror of
https://github.com/python/cpython.git
synced 2024-11-23 18:04:37 +08:00
723d4d2fe8
We already intern and immortalize most string constants. In the free-threaded build, other constants can be a source of reference count contention because they are shared by all threads running the same code objects.
40 lines
951 B
C
40 lines
951 B
C
#ifndef Py_INTERNAL_SETOBJECT_H
|
|
#define Py_INTERNAL_SETOBJECT_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef Py_BUILD_CORE
|
|
# error "this header requires Py_BUILD_CORE define"
|
|
#endif
|
|
|
|
// Export for '_abc' shared extension
|
|
PyAPI_FUNC(int) _PySet_NextEntry(
|
|
PyObject *set,
|
|
Py_ssize_t *pos,
|
|
PyObject **key,
|
|
Py_hash_t *hash);
|
|
|
|
// Export for '_pickle' shared extension
|
|
PyAPI_FUNC(int) _PySet_NextEntryRef(
|
|
PyObject *set,
|
|
Py_ssize_t *pos,
|
|
PyObject **key,
|
|
Py_hash_t *hash);
|
|
|
|
// Export for '_pickle' shared extension
|
|
PyAPI_FUNC(int) _PySet_Update(PyObject *set, PyObject *iterable);
|
|
|
|
// Export for the gdb plugin's (python-gdb.py) benefit
|
|
PyAPI_DATA(PyObject *) _PySet_Dummy;
|
|
|
|
PyAPI_FUNC(int) _PySet_Contains(PySetObject *so, PyObject *key);
|
|
|
|
// Clears the set without acquiring locks. Used by _PyCode_Fini.
|
|
extern void _PySet_ClearInternal(PySetObject *so);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // !Py_INTERNAL_SETOBJECT_H
|