python27_sys/
dictobject.rs1use libc::{c_char, c_int};
2
3use crate::object::*;
4use crate::pyport::Py_ssize_t;
5
6ignore! {
7 #[repr(C)]
8 pub struct PyDictObject { }
9}
10
11#[cfg_attr(windows, link(name = "pythonXY"))]
12extern "C" {
13 pub static mut PyDict_Type: PyTypeObject;
14 pub static mut PyDictIterKey_Type: PyTypeObject;
15 pub static mut PyDictIterValue_Type: PyTypeObject;
16 pub static mut PyDictIterItem_Type: PyTypeObject;
17 pub static mut PyDictKeys_Type: PyTypeObject;
18 pub static mut PyDictItems_Type: PyTypeObject;
19 pub static mut PyDictValues_Type: PyTypeObject;
20}
21
22#[inline(always)]
23pub unsafe fn PyDict_Check(op: *mut PyObject) -> c_int {
24 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
25}
26
27#[inline(always)]
28pub unsafe fn PyDict_CheckExact(op: *mut PyObject) -> c_int {
29 let u: *mut PyTypeObject = &mut PyDict_Type;
30 (Py_TYPE(op) == u) as c_int
31}
32
33#[cfg_attr(windows, link(name = "pythonXY"))]
34extern "C" {
35 pub fn PyDict_New() -> *mut PyObject;
36 pub fn PyDictProxy_New(dict: *mut PyObject) -> *mut PyObject;
37 pub fn PyDict_Clear(mp: *mut PyObject);
38 pub fn PyDict_Contains(mp: *mut PyObject, key: *mut PyObject) -> c_int;
39 pub fn PyDict_Copy(mp: *mut PyObject) -> *mut PyObject;
40
41 pub fn PyDict_GetItem(mp: *mut PyObject, key: *mut PyObject) -> *mut PyObject;
42 pub fn PyDict_SetItem(mp: *mut PyObject, key: *mut PyObject, item: *mut PyObject) -> c_int;
43 pub fn PyDict_DelItem(mp: *mut PyObject, key: *mut PyObject) -> c_int;
44 pub fn PyDict_GetItemString(dp: *mut PyObject, key: *const c_char) -> *mut PyObject;
45 pub fn PyDict_SetItemString(
46 dp: *mut PyObject,
47 key: *const c_char,
48 item: *mut PyObject,
49 ) -> c_int;
50 pub fn PyDict_DelItemString(dp: *mut PyObject, key: *const c_char) -> c_int;
51
52 pub fn PyDict_Keys(mp: *mut PyObject) -> *mut PyObject;
53 pub fn PyDict_Values(mp: *mut PyObject) -> *mut PyObject;
54 pub fn PyDict_Items(mp: *mut PyObject) -> *mut PyObject;
55 pub fn PyDict_Size(mp: *mut PyObject) -> Py_ssize_t;
56 pub fn PyDict_Next(
57 mp: *mut PyObject,
58 pos: *mut Py_ssize_t,
59 key: *mut *mut PyObject,
60 value: *mut *mut PyObject,
61 ) -> c_int;
62 ignore! {
63 pub fn _PyDict_Next(
64 mp: *mut PyObject,
65 pos: *mut Py_ssize_t,
66 key: *mut *mut PyObject,
67 value: *mut *mut PyObject,
68 hash: *mut c_long,
69 ) -> c_int;
70 pub fn _PyDict_Contains(mp: *mut PyObject, key: *mut PyObject, hash: c_long) -> c_int;
71 pub fn _PyDict_NewPresized(minused: Py_ssize_t) -> *mut PyObject;
72 pub fn _PyDict_MaybeUntrack(mp: *mut PyObject);
73 }
74 pub fn PyDict_Update(mp: *mut PyObject, other: *mut PyObject) -> c_int;
75 pub fn PyDict_Merge(mp: *mut PyObject, other: *mut PyObject, _override: c_int) -> c_int;
76 pub fn PyDict_MergeFromSeq2(d: *mut PyObject, seq2: *mut PyObject, _override: c_int) -> c_int;
77
78}