pyo3_ffi/cpython/
dictobject.rs

1use crate::object::*;
2use crate::pyport::Py_ssize_t;
3use std::os::raw::c_int;
4
5opaque_struct!(PyDictKeysObject);
6
7#[cfg(Py_3_11)]
8opaque_struct!(PyDictValues);
9
10#[cfg(not(GraalPy))]
11#[repr(C)]
12#[derive(Debug)]
13pub struct PyDictObject {
14    pub ob_base: PyObject,
15    pub ma_used: Py_ssize_t,
16    pub ma_version_tag: u64,
17    pub ma_keys: *mut PyDictKeysObject,
18    #[cfg(not(Py_3_11))]
19    pub ma_values: *mut *mut PyObject,
20    #[cfg(Py_3_11)]
21    pub ma_values: *mut PyDictValues,
22}
23
24extern "C" {
25    // skipped _PyDict_GetItem_KnownHash
26    // skipped _PyDict_GetItemIdWithError
27    // skipped _PyDict_GetItemStringWithError
28    // skipped PyDict_SetDefault
29    pub fn _PyDict_SetItem_KnownHash(
30        mp: *mut PyObject,
31        key: *mut PyObject,
32        item: *mut PyObject,
33        hash: crate::Py_hash_t,
34    ) -> c_int;
35    // skipped _PyDict_DelItem_KnownHash
36    // skipped _PyDict_DelItemIf
37    // skipped _PyDict_NewKeysForClass
38    pub fn _PyDict_Next(
39        mp: *mut PyObject,
40        pos: *mut Py_ssize_t,
41        key: *mut *mut PyObject,
42        value: *mut *mut PyObject,
43        hash: *mut crate::Py_hash_t,
44    ) -> c_int;
45    // skipped PyDict_GET_SIZE
46    // skipped _PyDict_ContainsId
47    pub fn _PyDict_NewPresized(minused: Py_ssize_t) -> *mut PyObject;
48    // skipped _PyDict_MaybeUntrack
49    // skipped _PyDict_HasOnlyStringKeys
50    // skipped _PyDict_KeysSize
51    // skipped _PyDict_SizeOf
52    // skipped _PyDict_Pop
53    // skipped _PyDict_Pop_KnownHash
54    // skipped _PyDict_FromKeys
55    // skipped _PyDict_HasSplitTable
56    // skipped _PyDict_MergeEx
57    // skipped _PyDict_SetItemId
58    // skipped _PyDict_DelItemId
59    // skipped _PyDict_DebugMallocStats
60    // skipped _PyObjectDict_SetItem
61    // skipped _PyDict_LoadGlobal
62    // skipped _PyDict_GetItemHint
63    // skipped _PyDictViewObject
64    // skipped _PyDictView_New
65    // skipped _PyDictView_Intersect
66
67    #[cfg(Py_3_10)]
68    pub fn _PyDict_Contains_KnownHash(
69        op: *mut PyObject,
70        key: *mut PyObject,
71        hash: crate::Py_hash_t,
72    ) -> c_int;
73
74    #[cfg(not(Py_3_10))]
75    pub fn _PyDict_Contains(mp: *mut PyObject, key: *mut PyObject, hash: Py_ssize_t) -> c_int;
76}