summaryrefslogtreecommitdiffstats
path: root/Objects/typeobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/typeobject.c')
-rw-r--r--Objects/typeobject.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 00f0dc9..0d7009a 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -324,6 +324,29 @@ managed_static_type_get_def(PyTypeObject *self, int isbuiltin)
return &_PyRuntime.types.managed_static.types[full_index].def;
}
+
+PyObject *
+_PyStaticType_GetBuiltins(void)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ Py_ssize_t count = (Py_ssize_t)interp->types.builtins.num_initialized;
+ assert(count <= _Py_MAX_MANAGED_STATIC_BUILTIN_TYPES);
+
+ PyObject *results = PyList_New(count);
+ if (results == NULL) {
+ return NULL;
+ }
+ for (Py_ssize_t i = 0; i < count; i++) {
+ PyTypeObject *cls = interp->types.builtins.initialized[i].type;
+ assert(cls != NULL);
+ assert(interp->types.builtins.initialized[i].isbuiltin);
+ PyList_SET_ITEM(results, i, Py_NewRef((PyObject *)cls));
+ }
+
+ return results;
+}
+
+
// Also see _PyStaticType_InitBuiltin() and _PyStaticType_FiniBuiltin().
/* end static builtin helpers */
@@ -10927,6 +10950,24 @@ update_all_slots(PyTypeObject* type)
}
+PyObject *
+_PyType_GetSlotWrapperNames(void)
+{
+ size_t len = Py_ARRAY_LENGTH(slotdefs) - 1;
+ PyObject *names = PyList_New(len);
+ if (names == NULL) {
+ return NULL;
+ }
+ assert(slotdefs[len].name == NULL);
+ for (size_t i = 0; i < len; i++) {
+ pytype_slotdef *slotdef = &slotdefs[i];
+ assert(slotdef->name != NULL);
+ PyList_SET_ITEM(names, i, Py_NewRef(slotdef->name_strobj));
+ }
+ return names;
+}
+
+
/* Call __set_name__ on all attributes (including descriptors)
in a newly generated type */
static int