MCPcopy Create free account
hub / github.com/KDE/labplot / scanHDF5DataSet

Method scanHDF5DataSet

src/backend/datasources/filters/HDF5Filter.cpp:1317–1380  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1315}
1316
1317void HDF5FilterPrivate::scanHDF5DataSet(hid_t did, char* dataSetName, QTreeWidgetItem* parentItem) {
1318 QString attr = scanHDF5Attrs(did).join(QString());
1319
1320 char link[MAXNAMELENGTH];
1321 m_status = H5Iget_name(did, link, MAXNAMELENGTH);
1322 handleError(m_status, QStringLiteral("H5Iget_name"));
1323
1324 QStringList dataSetProps;
1325 hsize_t size = H5Dget_storage_size(did);
1326 handleError((int)size, QStringLiteral("H5Dget_storage_size"));
1327 hid_t datatype = H5Dget_type(did);
1328 handleError((int)datatype, QStringLiteral("H5Dget_type"));
1329 size_t typeSize = H5Tget_size(datatype);
1330 handleError((int)typeSize, QStringLiteral("H5Dget_size"));
1331
1332 dataSetProps << readHDF5DataType(datatype);
1333
1334 hid_t dataspace = H5Dget_space(did);
1335 int rank = H5Sget_simple_extent_ndims(dataspace);
1336 handleError(rank, QStringLiteral("H5Sget_simple_extent_ndims"));
1337 unsigned int rows = 1, cols = 1, regs = 1;
1338 if (rank == 1) {
1339 hsize_t dims_out[1];
1340 m_status = H5Sget_simple_extent_dims(dataspace, dims_out, nullptr);
1341 handleError(m_status, QStringLiteral("H5Sget_simple_extent_dims"));
1342 rows = dims_out[0];
1343 dataSetProps << QLatin1String(", ") << QString::number(rows) << QLatin1String(" (") << QString::number(size / typeSize) << QLatin1String(")");
1344 } else if (rank == 2) {
1345 hsize_t dims_out[2];
1346 m_status = H5Sget_simple_extent_dims(dataspace, dims_out, nullptr);
1347 handleError(m_status, QStringLiteral("H5Sget_simple_extent_dims"));
1348 rows = dims_out[0];
1349 cols = dims_out[1];
1350 dataSetProps << QLatin1String(", ") << QString::number(rows) << QLatin1String("x") << QString::number(cols) << QLatin1String(" (")
1351 << QString::number(size / typeSize) << QLatin1String(")");
1352 } else if (rank == 3) {
1353 hsize_t dims_out[3];
1354 m_status = H5Sget_simple_extent_dims(dataspace, dims_out, nullptr);
1355 handleError(m_status, QStringLiteral("H5Sget_simple_extent_dims"));
1356 rows = dims_out[0];
1357 cols = dims_out[1];
1358 regs = dims_out[2];
1359 dataSetProps << QLatin1String(", ") << QString::number(rows) << QLatin1String("x") << QString::number(cols) << QLatin1String("x")
1360 << QString::number(regs) << QLatin1String(" (") << QString::number(size / typeSize) << QLatin1String(")");
1361 } else
1362 dataSetProps << QLatin1String(", ") << i18n("rank %1 not supported yet", rank);
1363
1364 hid_t pid = H5Dget_create_plist(did);
1365 handleError((int)pid, QStringLiteral("H5Dget_create_plist"));
1366 dataSetProps << QStringLiteral(", ") << readHDF5PropertyList(pid).join(QString());
1367
1368 auto* dataSetItem =
1369 new QTreeWidgetItem(QStringList() << QLatin1String(dataSetName) << QLatin1String(link) << i18n("data set") << dataSetProps.join(QString()) << attr);
1370 dataSetItem->setIcon(0, QIcon::fromTheme(QStringLiteral("x-office-spreadsheet")));
1371 for (int i = 0; i < dataSetItem->columnCount(); ++i) {
1372 if (rows > 0 && cols > 0 && regs > 0) {
1373 dataSetItem->setBackground(i, QColor(192, 255, 192));
1374 dataSetItem->setForeground(i, Qt::black);

Callers

nothing calls this directly

Calls 5

QStringClass · 0.70
QColorClass · 0.50
setIconMethod · 0.45
columnCountMethod · 0.45
addChildMethod · 0.45

Tested by

no test coverage detected