typedef struct _heaptypeobject {
/* Note: there's a dependency on the order of these members
in slotptr() in typeobject.c . */
- PyTypeObject type;
+ PyTypeObject ht_type;
PyNumberMethods as_number;
PyMappingMethods as_mapping;
PySequenceMethods as_sequence; /* as_sequence comes after as_mapping,
a given operator (e.g. __getitem__).
see add_operators() in typeobject.c . */
PyBufferProcs as_buffer;
- PyObject *name, *slots;
+ PyObject *ht_name, *ht_slots;
/* here are optional user slots, followed by the members. */
} PyHeapTypeObject;
/* access macro to the members which are floating "behind" the object */
#define PyHeapType_GET_MEMBERS(etype) \
- ((PyMemberDef *)(((char *)etype) + (etype)->type.ob_type->tp_basicsize))
+ ((PyMemberDef *)(((char *)etype) + (etype)->ht_type.ob_type->tp_basicsize))
/* Generic type check */
if (type->tp_flags & Py_TPFLAGS_HEAPTYPE) {
PyHeapTypeObject* et = (PyHeapTypeObject*)type;
- Py_INCREF(et->name);
- return et->name;
+ Py_INCREF(et->ht_name);
+ return et->ht_name;
}
else {
s = strrchr(type->tp_name, '.');
Py_INCREF(value);
- Py_DECREF(et->name);
- et->name = value;
+ Py_DECREF(et->ht_name);
+ et->ht_name = value;
type->tp_name = PyString_AS_STRING(value);
/* Keep name and slots alive in the extended type object */
et = (PyHeapTypeObject *)type;
Py_INCREF(name);
- et->name = name;
- et->slots = slots;
+ et->ht_name = name;
+ et->ht_slots = slots;
/* Initialize tp_flags */
type->tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE |
* of most other objects. It's okay to cast it to char *.
*/
PyObject_Free((char *)type->tp_doc);
- Py_XDECREF(et->name);
- Py_XDECREF(et->slots);
+ Py_XDECREF(et->ht_name);
+ Py_XDECREF(et->ht_slots);
type->ob_type->tp_free((PyObject *)type);
}
VISIT(type->tp_base);
/* There's no need to visit type->tp_subclasses or
- ((PyHeapTypeObject *)type)->slots, because they can't be involved
+ ((PyHeapTypeObject *)type)->ht_slots, because they can't be involved
in cycles; tp_subclasses is a list of weak references,
and slots is a tuple of strings. */