@@ -27,6 +27,11 @@ typedef struct {
2727 PyObject * * ma_values ;
2828} PyDictObject ;
2929
30+ typedef struct {
31+ PyObject_HEAD
32+ PyDictObject * dv_dict ;
33+ } _PyDictViewObject ;
34+
3035#endif /* Py_LIMITED_API */
3136
3237PyAPI_DATA (PyTypeObject ) PyDict_Type ;
@@ -40,9 +45,9 @@ PyAPI_DATA(PyTypeObject) PyDictValues_Type;
4045#define PyDict_Check (op ) \
4146 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
4247#define PyDict_CheckExact (op ) (Py_TYPE(op) == &PyDict_Type)
43- #define PyDictKeys_Check (op ) (Py_TYPE (op) == &PyDictKeys_Type)
44- #define PyDictItems_Check (op ) (Py_TYPE (op) == &PyDictItems_Type)
45- #define PyDictValues_Check (op ) (Py_TYPE (op) == &PyDictValues_Type)
48+ #define PyDictKeys_Check (op ) (PyObject_IsInstance (op, (PyObject *) &PyDictKeys_Type) )
49+ #define PyDictItems_Check (op ) (PyObject_IsInstance (op, (PyObject *) &PyDictItems_Type) )
50+ #define PyDictValues_Check (op ) (PyObject_IsInstance (op, (PyObject *) &PyDictValues_Type) )
4651/* This excludes Values, since they are not sets. */
4752# define PyDictViewSet_Check (op ) \
4853 (PyDictKeys_Check(op) || PyDictItems_Check(op))
@@ -75,6 +80,7 @@ PyDictKeysObject *_PyDict_NewKeysForClass(void);
7580PyAPI_FUNC (PyObject * ) PyObject_GenericGetDict (PyObject * , void * );
7681PyAPI_FUNC (int ) _PyDict_Next (
7782 PyObject * mp , Py_ssize_t * pos , PyObject * * key , PyObject * * value , Py_hash_t * hash );
83+ PyObject * _PyDictView_New (PyObject * , PyTypeObject * );
7884#endif
7985PyAPI_FUNC (PyObject * ) PyDict_Keys (PyObject * mp );
8086PyAPI_FUNC (PyObject * ) PyDict_Values (PyObject * mp );
@@ -88,6 +94,9 @@ PyAPI_FUNC(PyObject *) _PyDict_NewPresized(Py_ssize_t minused);
8894PyAPI_FUNC (void ) _PyDict_MaybeUntrack (PyObject * mp );
8995PyAPI_FUNC (int ) _PyDict_HasOnlyStringKeys (PyObject * mp );
9096Py_ssize_t _PyDict_KeysSize (PyDictKeysObject * keys );
97+ PyObject * _PyDict_SizeOf (PyDictObject * );
98+ PyObject * _PyDict_Pop (PyDictObject * , PyObject * , PyObject * );
99+ PyObject * _PyDict_FromKeys (PyObject * , PyObject * , PyObject * );
91100#define _PyDict_HasSplitTable (d ) ((d)->ma_values != NULL)
92101
93102PyAPI_FUNC (int ) PyDict_ClearFreeList (void );
0 commit comments