static types::InternalType* import_boolean(int dataset) { int complex = 0; int dims = 0; int ret = getDatasetInfo(dataset, &complex, &dims, NULL); if (ret < 0) { closeDataSet(dataset); return nullptr; } std::vector<int> d(dims); int size = getDatasetInfo(dataset, &complex, &dims, d.data()); if (dims == 0 || size <= 0) { closeDataSet(dataset); return types::Double::Empty(); } types::Bool* bools = new types::Bool(dims, d.data()); int* b = bools->get(); readBooleanMatrix(dataset, b); return bools; }
static bool import_boolean(int* pvCtx, int _iDatasetId, int _iItemPos, int *_piAddress, char *_pstVarname) { int iRet = 0; int *piData = NULL; int iDims = 0; int* piDims = NULL; int iComplex = 0; int iSize = 0; SciErr sciErr; iRet = getDatasetInfo(_iDatasetId, &iComplex, &iDims, NULL); if (iRet < 0) { return false; } piDims = (int*)MALLOC(sizeof(int) * iDims); iSize = getDatasetInfo(_iDatasetId, &iComplex, &iDims, piDims); if (iSize == 0) { FREE(piDims); return false; } piData = (int *)MALLOC(iSize * sizeof(int)); iRet = readBooleanMatrix(_iDatasetId, piData); if (iRet) { FREE(piData); FREE(piDims); return false; } if (_piAddress == NULL) { sciErr = createNamedMatrixOfBoolean(pvCtx, _pstVarname, piDims[0], piDims[1], piData); } else //if not null this variable is in a list { sciErr = createMatrixOfBooleanInNamedList(pvCtx, _pstVarname, _piAddress, _iItemPos, piDims[0], piDims[1], piData); } FREE(piDims); if (piData) { FREE(piData); } if (sciErr.iErr) { printError(&sciErr, 0); return false; } return true; }