static bool export_boolean_sparse(int _iH5File, int *_piVar, char* _pstName) { int iRet = 0; int iNbItem = 0; int* piNbItemRow = NULL; int* piColPos = NULL; int piDims[2]; SciErr sciErr = getBooleanSparseMatrix(pvApiCtx, _piVar, &piDims[0], &piDims[1], &iNbItem, &piNbItemRow, &piColPos); if (sciErr.iErr) { printError(&sciErr, 0); return false; } iRet = writeBooleanSparseMatrix(_iH5File, _pstName, piDims[0], piDims[1], iNbItem, piNbItemRow, piColPos); if (iRet) { //Msg ?? return false; } char pstMsg[512]; sprintf(pstMsg, "boolean sparse (%d x %d)", piDims[0], piDims[1]); print_type(pstMsg); return true; }
int get_bsparse_info(void* _pvCtx, int _iRhs, int* _piParent, int *_piAddr, int _iItemPos) { SciErr sciErr; int iRows = 0; int iCols = 0; int iItem = 0; int* piNbRow = NULL; int* piColPos = NULL; if (_iItemPos == 0) { //Not in list sciErr = getBooleanSparseMatrix(_pvCtx, _piAddr, &iRows, &iCols, &iItem, &piNbRow, &piColPos); } else { sciErr = getBooleanSparseMatrixInList(_pvCtx, _piParent, _iItemPos, &iRows, &iCols, &iItem, &piNbRow, &piColPos); } if (sciErr.iErr) { printError(&sciErr, 0); return 0; } FREE(piNbRow); FREE(piColPos); insert_indent(); sciprint("Boolean Sparse (%d x %d), Item(s) : %d \n", iRows, iCols, iItem); return 0;; }
/*--------------------------------------------------------------------------*/ int getAllocatedBooleanSparseMatrix(void* _pvCtx, int* _piAddress, int* _piRows, int* _piCols, int* _piNbItem, int** _piNbItemRow, int** _piColPos) { SciErr sciErr; sciErr.iErr = 0; sciErr.iMsgCount = 0; int* piNbItemRow = NULL; int* piColPos = NULL; sciErr = getBooleanSparseMatrix(_pvCtx, _piAddress, _piRows, _piCols, _piNbItem, &piNbItemRow, &piColPos); if(sciErr.iErr) { addErrorMessage(&sciErr, API_ERROR_GET_ALLOC_BOOLEAN_SPARSE, _("%s: Unable to get argument #%d"), "getAllocatedBooleanSparseMatrix", getRhsFromAddress(_pvCtx, _piAddress)); printError(&sciErr, 0); return sciErr.iErr; } *_piNbItemRow = (int*)MALLOC(sizeof(int) * *_piRows); memcpy(*_piNbItemRow, piNbItemRow, sizeof(int) * *_piRows); *_piColPos = (int*)MALLOC(sizeof(int) * *_piNbItem); memcpy(*_piColPos, piColPos, sizeof(int) * *_piNbItem); return 0; }
SciErr readNamedBooleanSparseMatrix(void* _pvCtx, const char* _pstName, int* _piRows, int* _piCols, int* _piNbItem, int* _piNbItemRow, int* _piColPos) { SciErr sciErr; sciErr.iErr = 0; sciErr.iMsgCount = 0; int* piAddr = NULL; int* piNbItemRow = 0; int* piColPos = 0; sciErr = getVarAddressFromName(_pvCtx, _pstName, &piAddr); if(sciErr.iErr) { addErrorMessage(&sciErr, API_ERROR_READ_NAMED_BOOLEAN_SPARSE, _("%s: Unable to get variable \"%s\""), "readNamedBooleanSparseMatrix", _pstName); return sciErr; } sciErr = getBooleanSparseMatrix(_pvCtx, piAddr, _piRows, _piCols, _piNbItem, &piNbItemRow, &piColPos); if(sciErr.iErr) { addErrorMessage(&sciErr, API_ERROR_READ_NAMED_BOOLEAN_SPARSE, _("API_ERROR_READ_NAMED_BOOLEAN_SPARSE")); return sciErr; } if(_piNbItemRow == NULL) { return sciErr; } memcpy(_piNbItemRow, piNbItemRow, *_piRows * sizeof(int)); if(_piColPos == NULL) { return sciErr; } memcpy(_piColPos, piColPos, *_piNbItem * sizeof(int)); return sciErr; }