if (maskObj->nd != 1 || maskObj->descr->type_num != PyArray_INT || maskObj->dimensions[0] != self->dim[0]) {
if (maskObj->nd != 1 || maskObj->descr->type_num != PyArray_LONG || maskObj->dimensions[0] != self->dim[0]) {
LLMat_delete_rows(LLMatObject *self, PyObject* args){  PyArrayObject *maskObj;  int newm, newnnz;  int act, row;    if (!PyArg_ParseTuple(args, "O!", &PyArray_Type, &maskObj))     return NULL;  if (maskObj->nd != 1 || maskObj->descr->type_num != PyArray_INT || maskObj->dimensions[0] != self->dim[0]) {    PyErr_SetString(PyExc_ValueError, "mask must be a 1D integer NumPy array of appropriate length");    return NULL;  }  if (self->issym) {    PyErr_SetString(SpMatrix_ErrorObject, "method not allowed for symmetric matrices");    return NULL;  }  /* Delete the rows to be cancelled by rearranging the row */  /* array. After having done so, newdim is the new matrix dim. */  newm = 0;  newnnz = self->nnz;  for(row = 0; row < self->dim[0]; row ++){    if (*(int *)(maskObj->data + row*maskObj->strides[0]) != 0){ /* This row has to be kept */      self->root[newm] = self->root[row];      newm ++;    } else {			/* row let out; update free list */      act = self->root[row];      if(act != -1){		/* only do smth. for non-empty rows */	newnnz --;	while(self->link[act] != -1) { /* Walk to the end of the list */	  act = self->link[act];	  newnnz --;	}	self->link[act] = self->free;	/* Attach end of row to free list */	self->free = self->root[row];	/* Start free list where row began */      }    }  }  /* Set the new values */  self->dim[0] = newm;  self->nnz = newnnz;  Py_INCREF(Py_None);   return Py_None;}