pyo3_ffi/cpython/
dictobject.rs1use crate::object::*;
2#[cfg(not(PyPy))]
3use crate::pyport::Py_ssize_t;
4#[cfg(not(PyPy))]
5use std::ffi::c_int;
6
7#[cfg(not(PyPy))]
8opaque_struct!(pub PyDictKeysObject);
9
10#[cfg(Py_3_11)]
11#[cfg(not(PyPy))]
12opaque_struct!(pub PyDictValues);
13
14#[cfg(not(any(GraalPy, PyPy)))]
15#[repr(C)]
16#[derive(Debug)]
17pub struct PyDictObject {
18 pub ob_base: PyObject,
19 pub ma_used: Py_ssize_t,
20 #[cfg_attr(
21 Py_3_12,
22 deprecated(note = "Deprecated in Python 3.12 and will be removed in the future.")
23 )]
24 #[cfg(not(Py_3_14))]
25 pub ma_version_tag: u64,
26 #[cfg(Py_3_14)]
27 _ma_watcher_tag: u64,
28 pub ma_keys: *mut PyDictKeysObject,
29 #[cfg(not(Py_3_11))]
30 pub ma_values: *mut *mut PyObject,
31 #[cfg(Py_3_11)]
32 pub ma_values: *mut PyDictValues,
33}
34
35#[cfg(PyPy)]
36#[repr(C)]
37#[derive(Debug)]
38pub struct PyDictObject {
39 pub ob_base: PyObject,
40 _tmpkeys: *mut PyObject,
41}
42
43extern "C" {
44 #[cfg(not(PyPy))]
49 pub fn _PyDict_SetItem_KnownHash(
50 mp: *mut PyObject,
51 key: *mut PyObject,
52 item: *mut PyObject,
53 hash: crate::Py_hash_t,
54 ) -> c_int;
55 #[cfg(not(PyPy))]
59 pub fn _PyDict_Next(
60 mp: *mut PyObject,
61 pos: *mut Py_ssize_t,
62 key: *mut *mut PyObject,
63 value: *mut *mut PyObject,
64 hash: *mut crate::Py_hash_t,
65 ) -> c_int;
66 #[cfg(not(PyPy))]
69 pub fn _PyDict_NewPresized(minused: Py_ssize_t) -> *mut PyObject;
70 #[cfg(Py_3_10)]
90 #[cfg(not(PyPy))]
91 pub fn _PyDict_Contains_KnownHash(
92 op: *mut PyObject,
93 key: *mut PyObject,
94 hash: crate::Py_hash_t,
95 ) -> c_int;
96
97 #[cfg(not(Py_3_10))]
98 #[cfg(not(PyPy))]
99 pub fn _PyDict_Contains(mp: *mut PyObject, key: *mut PyObject, hash: Py_ssize_t) -> c_int;
100}