/*********************** Install Module **************************/
+static int
+array_traverse(PyObject *module, visitproc visit, void *arg)
+{
+ array_state *state = get_array_state(module);
+ Py_VISIT(state->ArrayType);
+ Py_VISIT(state->ArrayIterType);
+ return 0;
+}
+
+static int
+array_clear(PyObject *module)
+{
+ array_state *state = get_array_state(module);
+ Py_CLEAR(state->ArrayType);
+ Py_CLEAR(state->ArrayIterType);
+ return 0;
+}
+
+static void
+array_free(void *module)
+{
+ array_clear((PyObject *)module);
+}
+
/* No functions in array module. */
static PyMethodDef a_methods[] = {
ARRAY__ARRAY_RECONSTRUCTOR_METHODDEF
{NULL, NULL, 0, NULL} /* Sentinel */
};
-#define CREATE_TYPE(module, type, spec) \
-do { \
- type = (PyTypeObject *)PyType_FromModuleAndSpec(m, spec, NULL); \
- if (type == NULL) { \
- return -1; \
- } \
+#define CREATE_TYPE(module, type, spec) \
+do { \
+ type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec, NULL); \
+ if (type == NULL) { \
+ return -1; \
+ } \
} while (0)
static int
.m_doc = module_doc,
.m_methods = a_methods,
.m_slots = arrayslots,
+ .m_traverse = array_traverse,
+ .m_clear = array_clear,
+ .m_free = array_free,
};