mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
bpo-45316: Move private PyDict functions to internal C API (GH-31577)
Move the following private unexported functions to the internal C API headers: * _PyDictKeys_GetVersionForCurrentState() * _PyDictKeys_StringLookup() * _PyDict_FromKeys() * _PyDict_GetItemHint() * _PyDict_KeysSize() * _PyDict_LoadGlobal() * _PyDict_NewKeysForClass() * _PyDict_Pop_KnownHash() * _PyDict_SetItem_Take2() * _PyObjectDict_SetItem() * _PyObject_MakeDictFromInstanceAttributes() * _Py_dict_lookup()
This commit is contained in:
parent
4a0c7a1aac
commit
8ddbdd9e96
2 changed files with 19 additions and 17 deletions
|
@ -43,13 +43,29 @@ typedef struct {
|
|||
PyObject *me_value; /* This field is only meaningful for combined tables */
|
||||
} PyDictKeyEntry;
|
||||
|
||||
extern PyDictKeysObject *_PyDict_NewKeysForClass(void);
|
||||
extern PyObject *_PyDict_FromKeys(PyObject *, PyObject *, PyObject *);
|
||||
|
||||
/* Gets a version number unique to the current state of the keys of dict, if possible.
|
||||
* Returns the version number, or zero if it was not possible to get a version number. */
|
||||
extern uint32_t _PyDictKeys_GetVersionForCurrentState(PyDictKeysObject *dictkeys);
|
||||
|
||||
extern Py_ssize_t _PyDict_KeysSize(PyDictKeysObject *keys);
|
||||
|
||||
/* _Py_dict_lookup() returns index of entry which can be used like DK_ENTRIES(dk)[index].
|
||||
* -1 when no entry found, -3 when compare raises error.
|
||||
*/
|
||||
Py_ssize_t _Py_dict_lookup(PyDictObject *mp, PyObject *key, Py_hash_t hash, PyObject **value_addr);
|
||||
extern Py_ssize_t _Py_dict_lookup(PyDictObject *mp, PyObject *key, Py_hash_t hash, PyObject **value_addr);
|
||||
|
||||
extern Py_ssize_t _PyDict_GetItemHint(PyDictObject *, PyObject *, Py_ssize_t, PyObject **);
|
||||
extern Py_ssize_t _PyDictKeys_StringLookup(PyDictKeysObject* dictkeys, PyObject *key);
|
||||
extern PyObject *_PyDict_LoadGlobal(PyDictObject *, PyDictObject *, PyObject *);
|
||||
|
||||
/* Consumes references to key and value */
|
||||
int _PyDict_SetItem_Take2(PyDictObject *op, PyObject *key, PyObject *value);
|
||||
extern int _PyDict_SetItem_Take2(PyDictObject *op, PyObject *key, PyObject *value);
|
||||
extern int _PyObjectDict_SetItem(PyTypeObject *tp, PyObject **dictptr, PyObject *name, PyObject *value);
|
||||
|
||||
extern PyObject *_PyDict_Pop_KnownHash(PyObject *, PyObject *, Py_hash_t, PyObject *);
|
||||
|
||||
#define DKIX_EMPTY (-1)
|
||||
#define DKIX_DUMMY (-2) /* Used internally */
|
||||
|
@ -138,7 +154,7 @@ extern uint64_t _pydict_global_version;
|
|||
|
||||
#define DICT_NEXT_VERSION() (++_pydict_global_version)
|
||||
|
||||
PyObject *_PyObject_MakeDictFromInstanceAttributes(PyObject *obj, PyDictValues *values);
|
||||
extern PyObject *_PyObject_MakeDictFromInstanceAttributes(PyObject *obj, PyDictValues *values);
|
||||
|
||||
static inline void
|
||||
_PyDictValues_AddToInsertionOrder(PyDictValues *values, Py_ssize_t ix)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue