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

Method readDataSetElement

src/3rdparty/liborigin/OriginAnyParser.cpp:331–393  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

329}
330
331bool OriginAnyParser::readDataSetElement()
332{
333 LOG_PRINT(logfile, "readDataSetElement()\n")
334 /* get info and values of a DataSet (worksheet column, matrix sheet, ...)
335 * return true if a DataSet is found, otherwise return false */
336 unsigned int dse_header_size = 0, dse_data_size = 0, dse_mask_size = 0;
337 std::streamoff dsh_start = 0, dsd_start = 0, dsm_start = 0;
338 string dse_header;
339
340 // get dataset header size
341 dse_header_size = readObjectSize();
342 if (dse_header_size == 0)
343 return false;
344
345 curpos = file.tellg();
346 dsh_start = curpos;
347 LOG_PRINT(logfile, "Column: header size %d [0x%X], starts at %" PRId64 " [0x%" PRIx64 "], ",
348 dse_header_size, dse_header_size, curpos, curpos)
349 dse_header = readObjectAsString(dse_header_size);
350
351 // get known info
352 string name(25, 0);
353 name = dse_header.substr(0x58, 25);
354
355 // go to end of dataset header, get data size
356 file.seekg(dsh_start + dse_header_size + 1, ios_base::beg);
357 dse_data_size = readObjectSize();
358 dsd_start = file.tellg();
359 string dse_data = readObjectAsString(dse_data_size);
360 curpos = file.tellg();
361 LOG_PRINT(logfile,
362 "data size %d [0x%X], from %" PRId64 " [0x%" PRIx64 "] to %" PRId64 " [0x%" PRIx64
363 "],",
364 dse_data_size, dse_data_size, dsd_start, dsd_start, curpos, curpos)
365
366 // get data values
367 getColumnInfoAndData(dse_header, dse_header_size, dse_data, dse_data_size);
368
369 // go to end of data values, get mask size (often zero)
370 file.seekg(dsd_start + dse_data_size, ios_base::beg); // dse_data_size can be zero
371 if (dse_data_size > 0)
372 file.seekg(1, ios_base::cur);
373 dse_mask_size = readObjectSize();
374 dsm_start = file.tellg();
375 if (dse_mask_size > 0)
376 LOG_PRINT(logfile, "\nmask size %d [0x%X], starts at %" PRId64 " [0x%" PRIx64 "]",
377 dse_mask_size, dse_mask_size, dsm_start, dsm_start)
378 string dse_mask = readObjectAsString(dse_mask_size);
379
380 // get mask values
381 if (dse_mask_size > 0) {
382 curpos = file.tellg();
383 LOG_PRINT(logfile, ", ends at %" PRId64 " [0x%" PRIx64 "]\n", curpos, curpos)
384 // TODO: extract mask values from dse_mask
385 // go to end of dataset mask
386 file.seekg(dsm_start + dse_mask_size + 1, ios_base::beg);
387 }
388 curpos = file.tellg();

Callers

nothing calls this directly

Calls 2

tellgMethod · 0.45
seekgMethod · 0.45

Tested by

no test coverage detected