Row* Row_InternalNew(PyObject* description, PyObject* map_name_to_index, Py_ssize_t cValues, PyObject** apValues) { // Called by other modules to create rows. Takes ownership of apValues. #ifdef _MSC_VER #pragma warning(disable : 4365) #endif Row* row = PyObject_NEW(Row, &RowType); #ifdef _MSC_VER #pragma warning(default : 4365) #endif if (row) { Py_INCREF(description); row->description = description; Py_INCREF(map_name_to_index); row->map_name_to_index = map_name_to_index; row->apValues = apValues; row->cValues = cValues; } else { FreeRowValues(cValues, apValues); } return row; }
static void Row_dealloc(Row* self) { // Note: Now that __newobj__ is available, our variables could be zero... Py_XDECREF(self->description); Py_XDECREF(self->map_name_to_index); FreeRowValues(self->cValues, self->apValues); PyObject_Del(self); }
Row* Row_New(PyObject* description, PyObject* map_name_to_index, Py_ssize_t cValues, PyObject** apValues) { // Called by other modules to create rows. Takes ownership of apValues. Row* row = PyObject_NEW(Row, &RowType); if (row) { Py_INCREF(description); row->description = description; Py_INCREF(map_name_to_index); row->map_name_to_index = map_name_to_index; row->apValues = apValues; row->cValues = cValues; } else { FreeRowValues(cValues, apValues); } return row; }