Files
cpython/Include/internal/pycore_slots_generated.h
2026-05-05 09:18:04 +02:00

959 lines
34 KiB
C
Generated

/* Generated by Tools/build/generate_slots.py */
#ifndef _PY_HAVE_INTERNAL_SLOTS_GENERATED_H
#define _PY_HAVE_INTERNAL_SLOTS_GENERATED_H
static inline uint16_t
_PySlot_resolve_type_slot(uint16_t slot_id)
{
switch (slot_id) {
case 1:
return Py_bf_getbuffer;
case 2:
return Py_bf_releasebuffer;
case 3:
return Py_mp_ass_subscript;
case 4:
return Py_mp_length;
case Py_slot_end:
case Py_mp_subscript:
case Py_nb_absolute:
case Py_nb_add:
case Py_nb_and:
case Py_nb_bool:
case Py_nb_divmod:
case Py_nb_float:
case Py_nb_floor_divide:
case Py_nb_index:
case Py_nb_inplace_add:
case Py_nb_inplace_and:
case Py_nb_inplace_floor_divide:
case Py_nb_inplace_lshift:
case Py_nb_inplace_multiply:
case Py_nb_inplace_or:
case Py_nb_inplace_power:
case Py_nb_inplace_remainder:
case Py_nb_inplace_rshift:
case Py_nb_inplace_subtract:
case Py_nb_inplace_true_divide:
case Py_nb_inplace_xor:
case Py_nb_int:
case Py_nb_invert:
case Py_nb_lshift:
case Py_nb_multiply:
case Py_nb_negative:
case Py_nb_or:
case Py_nb_positive:
case Py_nb_power:
case Py_nb_remainder:
case Py_nb_rshift:
case Py_nb_subtract:
case Py_nb_true_divide:
case Py_nb_xor:
case Py_sq_ass_item:
case Py_sq_concat:
case Py_sq_contains:
case Py_sq_inplace_concat:
case Py_sq_inplace_repeat:
case Py_sq_item:
case Py_sq_length:
case Py_sq_repeat:
case Py_tp_alloc:
case Py_tp_base:
case Py_tp_bases:
case Py_tp_call:
case Py_tp_clear:
case Py_tp_dealloc:
case Py_tp_del:
case Py_tp_descr_get:
case Py_tp_descr_set:
case Py_tp_doc:
case Py_tp_getattr:
case Py_tp_getattro:
case Py_tp_hash:
case Py_tp_init:
case Py_tp_is_gc:
case Py_tp_iter:
case Py_tp_iternext:
case Py_tp_methods:
case Py_tp_new:
case Py_tp_repr:
case Py_tp_richcompare:
case Py_tp_setattr:
case Py_tp_setattro:
case Py_tp_str:
case Py_tp_traverse:
case Py_tp_members:
case Py_tp_getset:
case Py_tp_free:
case Py_nb_matrix_multiply:
case Py_nb_inplace_matrix_multiply:
case Py_am_await:
case Py_am_aiter:
case Py_am_anext:
case Py_tp_finalize:
case Py_am_send:
case Py_tp_vectorcall:
case Py_tp_token:
case Py_bf_getbuffer:
case Py_bf_releasebuffer:
case Py_mp_ass_subscript:
case Py_mp_length:
case Py_slot_subslots:
case Py_tp_slots:
case Py_tp_name:
case Py_tp_basicsize:
case Py_tp_extra_basicsize:
case Py_tp_itemsize:
case Py_tp_flags:
case Py_tp_metaclass:
case Py_tp_module:
return slot_id;
default:
return Py_slot_invalid;
}
}
static inline uint16_t
_PySlot_resolve_mod_slot(uint16_t slot_id)
{
switch (slot_id) {
case 1:
return Py_mod_create;
case 2:
return Py_mod_exec;
case 3:
return Py_mod_multiple_interpreters;
case 4:
return Py_mod_gil;
case Py_slot_end:
case Py_mod_create:
case Py_mod_exec:
case Py_mod_multiple_interpreters:
case Py_mod_gil:
case Py_slot_subslots:
case Py_mod_slots:
case Py_mod_name:
case Py_mod_doc:
case Py_mod_state_size:
case Py_mod_methods:
case Py_mod_state_traverse:
case Py_mod_state_clear:
case Py_mod_state_free:
case Py_mod_abi:
case Py_mod_token:
return slot_id;
default:
return Py_slot_invalid;
}
}
static inline void*
_PySlot_type_getslot(PyTypeObject *tp, uint16_t slot_id)
{
switch (slot_id) {
case Py_mp_subscript:
if (!(tp->tp_as_mapping)) return NULL;
return (void*)tp->tp_as_mapping->mp_subscript;
case Py_nb_absolute:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_absolute;
case Py_nb_add:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_add;
case Py_nb_and:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_and;
case Py_nb_bool:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_bool;
case Py_nb_divmod:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_divmod;
case Py_nb_float:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_float;
case Py_nb_floor_divide:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_floor_divide;
case Py_nb_index:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_index;
case Py_nb_inplace_add:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_add;
case Py_nb_inplace_and:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_and;
case Py_nb_inplace_floor_divide:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_floor_divide;
case Py_nb_inplace_lshift:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_lshift;
case Py_nb_inplace_multiply:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_multiply;
case Py_nb_inplace_or:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_or;
case Py_nb_inplace_power:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_power;
case Py_nb_inplace_remainder:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_remainder;
case Py_nb_inplace_rshift:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_rshift;
case Py_nb_inplace_subtract:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_subtract;
case Py_nb_inplace_true_divide:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_true_divide;
case Py_nb_inplace_xor:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_xor;
case Py_nb_int:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_int;
case Py_nb_invert:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_invert;
case Py_nb_lshift:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_lshift;
case Py_nb_multiply:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_multiply;
case Py_nb_negative:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_negative;
case Py_nb_or:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_or;
case Py_nb_positive:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_positive;
case Py_nb_power:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_power;
case Py_nb_remainder:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_remainder;
case Py_nb_rshift:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_rshift;
case Py_nb_subtract:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_subtract;
case Py_nb_true_divide:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_true_divide;
case Py_nb_xor:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_xor;
case Py_sq_ass_item:
if (!(tp->tp_as_sequence)) return NULL;
return (void*)tp->tp_as_sequence->sq_ass_item;
case Py_sq_concat:
if (!(tp->tp_as_sequence)) return NULL;
return (void*)tp->tp_as_sequence->sq_concat;
case Py_sq_contains:
if (!(tp->tp_as_sequence)) return NULL;
return (void*)tp->tp_as_sequence->sq_contains;
case Py_sq_inplace_concat:
if (!(tp->tp_as_sequence)) return NULL;
return (void*)tp->tp_as_sequence->sq_inplace_concat;
case Py_sq_inplace_repeat:
if (!(tp->tp_as_sequence)) return NULL;
return (void*)tp->tp_as_sequence->sq_inplace_repeat;
case Py_sq_item:
if (!(tp->tp_as_sequence)) return NULL;
return (void*)tp->tp_as_sequence->sq_item;
case Py_sq_length:
if (!(tp->tp_as_sequence)) return NULL;
return (void*)tp->tp_as_sequence->sq_length;
case Py_sq_repeat:
if (!(tp->tp_as_sequence)) return NULL;
return (void*)tp->tp_as_sequence->sq_repeat;
case Py_tp_alloc:
return (void*)tp->tp_alloc;
case Py_tp_base:
return (void*)tp->tp_base;
case Py_tp_bases:
return (void*)tp->tp_bases;
case Py_tp_call:
return (void*)tp->tp_call;
case Py_tp_clear:
return (void*)tp->tp_clear;
case Py_tp_dealloc:
return (void*)tp->tp_dealloc;
case Py_tp_del:
return (void*)tp->tp_del;
case Py_tp_descr_get:
return (void*)tp->tp_descr_get;
case Py_tp_descr_set:
return (void*)tp->tp_descr_set;
case Py_tp_doc:
return (void*)tp->tp_doc;
case Py_tp_getattr:
return (void*)tp->tp_getattr;
case Py_tp_getattro:
return (void*)tp->tp_getattro;
case Py_tp_hash:
return (void*)tp->tp_hash;
case Py_tp_init:
return (void*)tp->tp_init;
case Py_tp_is_gc:
return (void*)tp->tp_is_gc;
case Py_tp_iter:
return (void*)tp->tp_iter;
case Py_tp_iternext:
return (void*)tp->tp_iternext;
case Py_tp_methods:
return (void*)tp->tp_methods;
case Py_tp_new:
return (void*)tp->tp_new;
case Py_tp_repr:
return (void*)tp->tp_repr;
case Py_tp_richcompare:
return (void*)tp->tp_richcompare;
case Py_tp_setattr:
return (void*)tp->tp_setattr;
case Py_tp_setattro:
return (void*)tp->tp_setattro;
case Py_tp_str:
return (void*)tp->tp_str;
case Py_tp_traverse:
return (void*)tp->tp_traverse;
case Py_tp_members:
return (void*)tp->tp_members;
case Py_tp_getset:
return (void*)tp->tp_getset;
case Py_tp_free:
return (void*)tp->tp_free;
case Py_nb_matrix_multiply:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_matrix_multiply;
case Py_nb_inplace_matrix_multiply:
if (!(tp->tp_as_number)) return NULL;
return (void*)tp->tp_as_number->nb_inplace_matrix_multiply;
case Py_am_await:
if (!(tp->tp_as_async)) return NULL;
return (void*)tp->tp_as_async->am_await;
case Py_am_aiter:
if (!(tp->tp_as_async)) return NULL;
return (void*)tp->tp_as_async->am_aiter;
case Py_am_anext:
if (!(tp->tp_as_async)) return NULL;
return (void*)tp->tp_as_async->am_anext;
case Py_tp_finalize:
return (void*)tp->tp_finalize;
case Py_am_send:
if (!(tp->tp_as_async)) return NULL;
return (void*)tp->tp_as_async->am_send;
case Py_tp_vectorcall:
return (void*)tp->tp_vectorcall;
case Py_tp_token:
if (!(tp->tp_flags & Py_TPFLAGS_HEAPTYPE)) return NULL;
return (void*)((PyHeapTypeObject*)tp)->ht_token;
case Py_bf_getbuffer:
if (!(tp->tp_as_buffer)) return NULL;
return (void*)tp->tp_as_buffer->bf_getbuffer;
case Py_bf_releasebuffer:
if (!(tp->tp_as_buffer)) return NULL;
return (void*)tp->tp_as_buffer->bf_releasebuffer;
case Py_mp_ass_subscript:
if (!(tp->tp_as_mapping)) return NULL;
return (void*)tp->tp_as_mapping->mp_ass_subscript;
case Py_mp_length:
if (!(tp->tp_as_mapping)) return NULL;
return (void*)tp->tp_as_mapping->mp_length;
}
_PySlot_err_bad_slot("PyType_GetSlot", slot_id);
return NULL;
}
static inline void
_PySlot_heaptype_apply_field_slot(PyHeapTypeObject *ht, PySlot slot)
{
switch (slot.sl_id) {
case Py_mp_subscript:
ht->as_mapping.mp_subscript = (binaryfunc)slot.sl_func;
break;
case Py_nb_absolute:
ht->as_number.nb_absolute = (unaryfunc)slot.sl_func;
break;
case Py_nb_add:
ht->as_number.nb_add = (binaryfunc)slot.sl_func;
break;
case Py_nb_and:
ht->as_number.nb_and = (binaryfunc)slot.sl_func;
break;
case Py_nb_bool:
ht->as_number.nb_bool = (inquiry)slot.sl_func;
break;
case Py_nb_divmod:
ht->as_number.nb_divmod = (binaryfunc)slot.sl_func;
break;
case Py_nb_float:
ht->as_number.nb_float = (unaryfunc)slot.sl_func;
break;
case Py_nb_floor_divide:
ht->as_number.nb_floor_divide = (binaryfunc)slot.sl_func;
break;
case Py_nb_index:
ht->as_number.nb_index = (unaryfunc)slot.sl_func;
break;
case Py_nb_inplace_add:
ht->as_number.nb_inplace_add = (binaryfunc)slot.sl_func;
break;
case Py_nb_inplace_and:
ht->as_number.nb_inplace_and = (binaryfunc)slot.sl_func;
break;
case Py_nb_inplace_floor_divide:
ht->as_number.nb_inplace_floor_divide = (binaryfunc)slot.sl_func;
break;
case Py_nb_inplace_lshift:
ht->as_number.nb_inplace_lshift = (binaryfunc)slot.sl_func;
break;
case Py_nb_inplace_multiply:
ht->as_number.nb_inplace_multiply = (binaryfunc)slot.sl_func;
break;
case Py_nb_inplace_or:
ht->as_number.nb_inplace_or = (binaryfunc)slot.sl_func;
break;
case Py_nb_inplace_power:
ht->as_number.nb_inplace_power = (ternaryfunc)slot.sl_func;
break;
case Py_nb_inplace_remainder:
ht->as_number.nb_inplace_remainder = (binaryfunc)slot.sl_func;
break;
case Py_nb_inplace_rshift:
ht->as_number.nb_inplace_rshift = (binaryfunc)slot.sl_func;
break;
case Py_nb_inplace_subtract:
ht->as_number.nb_inplace_subtract = (binaryfunc)slot.sl_func;
break;
case Py_nb_inplace_true_divide:
ht->as_number.nb_inplace_true_divide = (binaryfunc)slot.sl_func;
break;
case Py_nb_inplace_xor:
ht->as_number.nb_inplace_xor = (binaryfunc)slot.sl_func;
break;
case Py_nb_int:
ht->as_number.nb_int = (unaryfunc)slot.sl_func;
break;
case Py_nb_invert:
ht->as_number.nb_invert = (unaryfunc)slot.sl_func;
break;
case Py_nb_lshift:
ht->as_number.nb_lshift = (binaryfunc)slot.sl_func;
break;
case Py_nb_multiply:
ht->as_number.nb_multiply = (binaryfunc)slot.sl_func;
break;
case Py_nb_negative:
ht->as_number.nb_negative = (unaryfunc)slot.sl_func;
break;
case Py_nb_or:
ht->as_number.nb_or = (binaryfunc)slot.sl_func;
break;
case Py_nb_positive:
ht->as_number.nb_positive = (unaryfunc)slot.sl_func;
break;
case Py_nb_power:
ht->as_number.nb_power = (ternaryfunc)slot.sl_func;
break;
case Py_nb_remainder:
ht->as_number.nb_remainder = (binaryfunc)slot.sl_func;
break;
case Py_nb_rshift:
ht->as_number.nb_rshift = (binaryfunc)slot.sl_func;
break;
case Py_nb_subtract:
ht->as_number.nb_subtract = (binaryfunc)slot.sl_func;
break;
case Py_nb_true_divide:
ht->as_number.nb_true_divide = (binaryfunc)slot.sl_func;
break;
case Py_nb_xor:
ht->as_number.nb_xor = (binaryfunc)slot.sl_func;
break;
case Py_sq_ass_item:
ht->as_sequence.sq_ass_item = (ssizeobjargproc)slot.sl_func;
break;
case Py_sq_concat:
ht->as_sequence.sq_concat = (binaryfunc)slot.sl_func;
break;
case Py_sq_contains:
ht->as_sequence.sq_contains = (objobjproc)slot.sl_func;
break;
case Py_sq_inplace_concat:
ht->as_sequence.sq_inplace_concat = (binaryfunc)slot.sl_func;
break;
case Py_sq_inplace_repeat:
ht->as_sequence.sq_inplace_repeat = (ssizeargfunc)slot.sl_func;
break;
case Py_sq_item:
ht->as_sequence.sq_item = (ssizeargfunc)slot.sl_func;
break;
case Py_sq_length:
ht->as_sequence.sq_length = (lenfunc)slot.sl_func;
break;
case Py_sq_repeat:
ht->as_sequence.sq_repeat = (ssizeargfunc)slot.sl_func;
break;
case Py_tp_alloc:
ht->ht_type.tp_alloc = (allocfunc)slot.sl_func;
break;
case Py_tp_base:
ht->ht_type.tp_base = slot.sl_ptr;
break;
case Py_tp_bases:
ht->ht_type.tp_bases = slot.sl_ptr;
break;
case Py_tp_call:
ht->ht_type.tp_call = (ternaryfunc)slot.sl_func;
break;
case Py_tp_clear:
ht->ht_type.tp_clear = (inquiry)slot.sl_func;
break;
case Py_tp_dealloc:
ht->ht_type.tp_dealloc = (destructor)slot.sl_func;
break;
case Py_tp_del:
ht->ht_type.tp_del = (destructor)slot.sl_func;
break;
case Py_tp_descr_get:
ht->ht_type.tp_descr_get = (descrgetfunc)slot.sl_func;
break;
case Py_tp_descr_set:
ht->ht_type.tp_descr_set = (descrsetfunc)slot.sl_func;
break;
case Py_tp_doc:
ht->ht_type.tp_doc = slot.sl_ptr;
break;
case Py_tp_getattr:
ht->ht_type.tp_getattr = (getattrfunc)slot.sl_func;
break;
case Py_tp_getattro:
ht->ht_type.tp_getattro = (getattrofunc)slot.sl_func;
break;
case Py_tp_hash:
ht->ht_type.tp_hash = (hashfunc)slot.sl_func;
break;
case Py_tp_init:
ht->ht_type.tp_init = (initproc)slot.sl_func;
break;
case Py_tp_is_gc:
ht->ht_type.tp_is_gc = (inquiry)slot.sl_func;
break;
case Py_tp_iter:
ht->ht_type.tp_iter = (getiterfunc)slot.sl_func;
break;
case Py_tp_iternext:
ht->ht_type.tp_iternext = (iternextfunc)slot.sl_func;
break;
case Py_tp_methods:
ht->ht_type.tp_methods = slot.sl_ptr;
break;
case Py_tp_new:
ht->ht_type.tp_new = (newfunc)slot.sl_func;
break;
case Py_tp_repr:
ht->ht_type.tp_repr = (reprfunc)slot.sl_func;
break;
case Py_tp_richcompare:
ht->ht_type.tp_richcompare = (richcmpfunc)slot.sl_func;
break;
case Py_tp_setattr:
ht->ht_type.tp_setattr = (setattrfunc)slot.sl_func;
break;
case Py_tp_setattro:
ht->ht_type.tp_setattro = (setattrofunc)slot.sl_func;
break;
case Py_tp_str:
ht->ht_type.tp_str = (reprfunc)slot.sl_func;
break;
case Py_tp_traverse:
ht->ht_type.tp_traverse = (traverseproc)slot.sl_func;
break;
case Py_tp_members:
ht->ht_type.tp_members = slot.sl_ptr;
break;
case Py_tp_getset:
ht->ht_type.tp_getset = slot.sl_ptr;
break;
case Py_tp_free:
ht->ht_type.tp_free = (freefunc)slot.sl_func;
break;
case Py_nb_matrix_multiply:
ht->as_number.nb_matrix_multiply = (binaryfunc)slot.sl_func;
break;
case Py_nb_inplace_matrix_multiply:
ht->as_number.nb_inplace_matrix_multiply = (binaryfunc)slot.sl_func;
break;
case Py_am_await:
ht->as_async.am_await = (unaryfunc)slot.sl_func;
break;
case Py_am_aiter:
ht->as_async.am_aiter = (unaryfunc)slot.sl_func;
break;
case Py_am_anext:
ht->as_async.am_anext = (unaryfunc)slot.sl_func;
break;
case Py_tp_finalize:
ht->ht_type.tp_finalize = (destructor)slot.sl_func;
break;
case Py_am_send:
ht->as_async.am_send = (sendfunc)slot.sl_func;
break;
case Py_tp_vectorcall:
ht->ht_type.tp_vectorcall = (vectorcallfunc)slot.sl_func;
break;
case Py_bf_getbuffer:
ht->as_buffer.bf_getbuffer = (getbufferproc)slot.sl_func;
break;
case Py_bf_releasebuffer:
ht->as_buffer.bf_releasebuffer = (releasebufferproc)slot.sl_func;
break;
case Py_mp_ass_subscript:
ht->as_mapping.mp_ass_subscript = (objobjargproc)slot.sl_func;
break;
case Py_mp_length:
ht->as_mapping.mp_length = (lenfunc)slot.sl_func;
break;
}
}
static inline _PySlot_DTYPE
_PySlot_get_dtype(uint16_t slot_id)
{
switch (slot_id) {
case Py_slot_end: return _PySlot_DTYPE_VOID;
case Py_mp_subscript: return _PySlot_DTYPE_FUNC;
case Py_nb_absolute: return _PySlot_DTYPE_FUNC;
case Py_nb_add: return _PySlot_DTYPE_FUNC;
case Py_nb_and: return _PySlot_DTYPE_FUNC;
case Py_nb_bool: return _PySlot_DTYPE_FUNC;
case Py_nb_divmod: return _PySlot_DTYPE_FUNC;
case Py_nb_float: return _PySlot_DTYPE_FUNC;
case Py_nb_floor_divide: return _PySlot_DTYPE_FUNC;
case Py_nb_index: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_add: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_and: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_floor_divide: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_lshift: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_multiply: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_or: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_power: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_remainder: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_rshift: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_subtract: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_true_divide: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_xor: return _PySlot_DTYPE_FUNC;
case Py_nb_int: return _PySlot_DTYPE_FUNC;
case Py_nb_invert: return _PySlot_DTYPE_FUNC;
case Py_nb_lshift: return _PySlot_DTYPE_FUNC;
case Py_nb_multiply: return _PySlot_DTYPE_FUNC;
case Py_nb_negative: return _PySlot_DTYPE_FUNC;
case Py_nb_or: return _PySlot_DTYPE_FUNC;
case Py_nb_positive: return _PySlot_DTYPE_FUNC;
case Py_nb_power: return _PySlot_DTYPE_FUNC;
case Py_nb_remainder: return _PySlot_DTYPE_FUNC;
case Py_nb_rshift: return _PySlot_DTYPE_FUNC;
case Py_nb_subtract: return _PySlot_DTYPE_FUNC;
case Py_nb_true_divide: return _PySlot_DTYPE_FUNC;
case Py_nb_xor: return _PySlot_DTYPE_FUNC;
case Py_sq_ass_item: return _PySlot_DTYPE_FUNC;
case Py_sq_concat: return _PySlot_DTYPE_FUNC;
case Py_sq_contains: return _PySlot_DTYPE_FUNC;
case Py_sq_inplace_concat: return _PySlot_DTYPE_FUNC;
case Py_sq_inplace_repeat: return _PySlot_DTYPE_FUNC;
case Py_sq_item: return _PySlot_DTYPE_FUNC;
case Py_sq_length: return _PySlot_DTYPE_FUNC;
case Py_sq_repeat: return _PySlot_DTYPE_FUNC;
case Py_tp_alloc: return _PySlot_DTYPE_FUNC;
case Py_tp_base: return _PySlot_DTYPE_PTR;
case Py_tp_bases: return _PySlot_DTYPE_PTR;
case Py_tp_call: return _PySlot_DTYPE_FUNC;
case Py_tp_clear: return _PySlot_DTYPE_FUNC;
case Py_tp_dealloc: return _PySlot_DTYPE_FUNC;
case Py_tp_del: return _PySlot_DTYPE_FUNC;
case Py_tp_descr_get: return _PySlot_DTYPE_FUNC;
case Py_tp_descr_set: return _PySlot_DTYPE_FUNC;
case Py_tp_doc: return _PySlot_DTYPE_PTR;
case Py_tp_getattr: return _PySlot_DTYPE_FUNC;
case Py_tp_getattro: return _PySlot_DTYPE_FUNC;
case Py_tp_hash: return _PySlot_DTYPE_FUNC;
case Py_tp_init: return _PySlot_DTYPE_FUNC;
case Py_tp_is_gc: return _PySlot_DTYPE_FUNC;
case Py_tp_iter: return _PySlot_DTYPE_FUNC;
case Py_tp_iternext: return _PySlot_DTYPE_FUNC;
case Py_tp_methods: return _PySlot_DTYPE_PTR;
case Py_tp_new: return _PySlot_DTYPE_FUNC;
case Py_tp_repr: return _PySlot_DTYPE_FUNC;
case Py_tp_richcompare: return _PySlot_DTYPE_FUNC;
case Py_tp_setattr: return _PySlot_DTYPE_FUNC;
case Py_tp_setattro: return _PySlot_DTYPE_FUNC;
case Py_tp_str: return _PySlot_DTYPE_FUNC;
case Py_tp_traverse: return _PySlot_DTYPE_FUNC;
case Py_tp_members: return _PySlot_DTYPE_PTR;
case Py_tp_getset: return _PySlot_DTYPE_PTR;
case Py_tp_free: return _PySlot_DTYPE_FUNC;
case Py_nb_matrix_multiply: return _PySlot_DTYPE_FUNC;
case Py_nb_inplace_matrix_multiply: return _PySlot_DTYPE_FUNC;
case Py_am_await: return _PySlot_DTYPE_FUNC;
case Py_am_aiter: return _PySlot_DTYPE_FUNC;
case Py_am_anext: return _PySlot_DTYPE_FUNC;
case Py_tp_finalize: return _PySlot_DTYPE_FUNC;
case Py_am_send: return _PySlot_DTYPE_FUNC;
case Py_tp_vectorcall: return _PySlot_DTYPE_FUNC;
case Py_tp_token: return _PySlot_DTYPE_PTR;
case Py_mod_create: return _PySlot_DTYPE_FUNC;
case Py_mod_exec: return _PySlot_DTYPE_FUNC;
case Py_mod_multiple_interpreters: return _PySlot_DTYPE_UINT64;
case Py_mod_gil: return _PySlot_DTYPE_UINT64;
case Py_bf_getbuffer: return _PySlot_DTYPE_FUNC;
case Py_bf_releasebuffer: return _PySlot_DTYPE_FUNC;
case Py_mp_ass_subscript: return _PySlot_DTYPE_FUNC;
case Py_mp_length: return _PySlot_DTYPE_FUNC;
case Py_slot_subslots: return _PySlot_DTYPE_PTR;
case Py_tp_slots: return _PySlot_DTYPE_PTR;
case Py_mod_slots: return _PySlot_DTYPE_PTR;
case Py_tp_name: return _PySlot_DTYPE_PTR;
case Py_tp_basicsize: return _PySlot_DTYPE_SIZE;
case Py_tp_extra_basicsize: return _PySlot_DTYPE_SIZE;
case Py_tp_itemsize: return _PySlot_DTYPE_SIZE;
case Py_tp_flags: return _PySlot_DTYPE_UINT64;
case Py_mod_name: return _PySlot_DTYPE_PTR;
case Py_mod_doc: return _PySlot_DTYPE_PTR;
case Py_mod_state_size: return _PySlot_DTYPE_SIZE;
case Py_mod_methods: return _PySlot_DTYPE_PTR;
case Py_mod_state_traverse: return _PySlot_DTYPE_FUNC;
case Py_mod_state_clear: return _PySlot_DTYPE_FUNC;
case Py_mod_state_free: return _PySlot_DTYPE_FUNC;
case Py_tp_metaclass: return _PySlot_DTYPE_PTR;
case Py_tp_module: return _PySlot_DTYPE_PTR;
case Py_mod_abi: return _PySlot_DTYPE_PTR;
case Py_mod_token: return _PySlot_DTYPE_PTR;
default: return _PySlot_DTYPE_VOID;
}
}
static inline _PySlot_PROBLEM_HANDLING
_PySlot_get_duplicate_handling(uint16_t slot_id)
{
switch (slot_id) {
case Py_mp_subscript:
case Py_nb_absolute:
case Py_nb_add:
case Py_nb_and:
case Py_nb_bool:
case Py_nb_divmod:
case Py_nb_float:
case Py_nb_floor_divide:
case Py_nb_index:
case Py_nb_inplace_add:
case Py_nb_inplace_and:
case Py_nb_inplace_floor_divide:
case Py_nb_inplace_lshift:
case Py_nb_inplace_multiply:
case Py_nb_inplace_or:
case Py_nb_inplace_power:
case Py_nb_inplace_remainder:
case Py_nb_inplace_rshift:
case Py_nb_inplace_subtract:
case Py_nb_inplace_true_divide:
case Py_nb_inplace_xor:
case Py_nb_int:
case Py_nb_invert:
case Py_nb_lshift:
case Py_nb_multiply:
case Py_nb_negative:
case Py_nb_or:
case Py_nb_positive:
case Py_nb_power:
case Py_nb_remainder:
case Py_nb_rshift:
case Py_nb_subtract:
case Py_nb_true_divide:
case Py_nb_xor:
case Py_sq_ass_item:
case Py_sq_concat:
case Py_sq_contains:
case Py_sq_inplace_concat:
case Py_sq_inplace_repeat:
case Py_sq_item:
case Py_sq_length:
case Py_sq_repeat:
case Py_tp_alloc:
case Py_tp_base:
case Py_tp_bases:
case Py_tp_call:
case Py_tp_clear:
case Py_tp_dealloc:
case Py_tp_del:
case Py_tp_descr_get:
case Py_tp_descr_set:
case Py_tp_getattr:
case Py_tp_getattro:
case Py_tp_hash:
case Py_tp_init:
case Py_tp_is_gc:
case Py_tp_iter:
case Py_tp_iternext:
case Py_tp_methods:
case Py_tp_new:
case Py_tp_repr:
case Py_tp_richcompare:
case Py_tp_setattr:
case Py_tp_setattro:
case Py_tp_str:
case Py_tp_traverse:
case Py_tp_getset:
case Py_tp_free:
case Py_nb_matrix_multiply:
case Py_nb_inplace_matrix_multiply:
case Py_am_await:
case Py_am_aiter:
case Py_am_anext:
case Py_tp_finalize:
case Py_am_send:
case Py_tp_vectorcall:
case Py_tp_token:
case Py_bf_getbuffer:
case Py_bf_releasebuffer:
case Py_mp_ass_subscript:
case Py_mp_length:
return _PySlot_PROBLEM_DEPRECATED;
case Py_mod_exec:
case Py_mod_abi:
return _PySlot_PROBLEM_ALLOW;
default:
return _PySlot_PROBLEM_REJECT;
}
}
static inline _PySlot_PROBLEM_HANDLING
_PySlot_get_null_handling(uint16_t slot_id)
{
switch (slot_id) {
case Py_slot_end:
case Py_tp_doc:
case Py_tp_token:
case Py_mod_multiple_interpreters:
case Py_mod_gil:
case Py_slot_subslots:
case Py_tp_slots:
case Py_mod_slots:
case Py_tp_basicsize:
case Py_tp_extra_basicsize:
case Py_tp_itemsize:
case Py_tp_flags:
case Py_mod_state_size:
return _PySlot_PROBLEM_ALLOW;
case Py_mp_subscript:
case Py_nb_absolute:
case Py_nb_add:
case Py_nb_and:
case Py_nb_bool:
case Py_nb_divmod:
case Py_nb_float:
case Py_nb_floor_divide:
case Py_nb_index:
case Py_nb_inplace_add:
case Py_nb_inplace_and:
case Py_nb_inplace_floor_divide:
case Py_nb_inplace_lshift:
case Py_nb_inplace_multiply:
case Py_nb_inplace_or:
case Py_nb_inplace_power:
case Py_nb_inplace_remainder:
case Py_nb_inplace_rshift:
case Py_nb_inplace_subtract:
case Py_nb_inplace_true_divide:
case Py_nb_inplace_xor:
case Py_nb_int:
case Py_nb_invert:
case Py_nb_lshift:
case Py_nb_multiply:
case Py_nb_negative:
case Py_nb_or:
case Py_nb_positive:
case Py_nb_power:
case Py_nb_remainder:
case Py_nb_rshift:
case Py_nb_subtract:
case Py_nb_true_divide:
case Py_nb_xor:
case Py_sq_ass_item:
case Py_sq_concat:
case Py_sq_contains:
case Py_sq_inplace_concat:
case Py_sq_inplace_repeat:
case Py_sq_item:
case Py_sq_length:
case Py_sq_repeat:
case Py_tp_alloc:
case Py_tp_base:
case Py_tp_bases:
case Py_tp_call:
case Py_tp_clear:
case Py_tp_dealloc:
case Py_tp_del:
case Py_tp_descr_get:
case Py_tp_descr_set:
case Py_tp_getattr:
case Py_tp_getattro:
case Py_tp_hash:
case Py_tp_init:
case Py_tp_is_gc:
case Py_tp_iter:
case Py_tp_iternext:
case Py_tp_methods:
case Py_tp_new:
case Py_tp_repr:
case Py_tp_richcompare:
case Py_tp_setattr:
case Py_tp_setattro:
case Py_tp_str:
case Py_tp_traverse:
case Py_tp_getset:
case Py_tp_free:
case Py_nb_matrix_multiply:
case Py_nb_inplace_matrix_multiply:
case Py_am_await:
case Py_am_aiter:
case Py_am_anext:
case Py_tp_finalize:
case Py_am_send:
case Py_tp_vectorcall:
case Py_mod_create:
case Py_bf_getbuffer:
case Py_bf_releasebuffer:
case Py_mp_ass_subscript:
case Py_mp_length:
return _PySlot_PROBLEM_DEPRECATED;
default:
return _PySlot_PROBLEM_REJECT;
}
}
static inline bool
_PySlot_get_must_be_static(uint16_t slot_id)
{
switch (slot_id) {
case Py_tp_methods: return true;
case Py_tp_members: return true;
case Py_tp_getset: return true;
case Py_mod_methods: return true;
}
return false;
}
#endif /* _PY_HAVE_INTERNAL_SLOTS_GENERATED_H */