MCPcopy Create free account
hub / github.com/LASzip/LASzip / merge

Method merge

src/lasinterval.cpp:377–470  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

375}
376
377BOOL LASinterval::merge(const BOOL erase)
378{
379 // maybe delete temporary merge cells from the previous merge
380 if (merged_cells)
381 {
382 if (merged_cells_temporary)
383 {
384 LASintervalCell* next_next;
385 LASintervalCell* next = merged_cells->next;
386 while (next)
387 {
388 next_next = next->next;
389 delete next;
390 next = next_next;
391 }
392 delete merged_cells;
393 }
394 merged_cells = 0;
395 }
396 // are there cells to merge
397 if (cells_to_merge == 0) return FALSE;
398 if (((my_cell_set*)cells_to_merge)->size() == 0) return FALSE;
399 // is there just one cell
400 if (((my_cell_set*)cells_to_merge)->size() == 1)
401 {
402 merged_cells_temporary = FALSE;
403 // simply use this cell as the merge cell
404 my_cell_set::iterator set_element = ((my_cell_set*)cells_to_merge)->begin();
405 merged_cells = (*set_element);
406 }
407 else
408 {
409 merged_cells_temporary = TRUE;
410 merged_cells = new LASintervalStartCell();
411 // iterate over all cells and add their intervals to map
412 LASintervalCell* cell;
413 my_cell_map map;
414 my_cell_set::iterator set_element = ((my_cell_set*)cells_to_merge)->begin();
415#pragma warning(push)
416#pragma warning(disable : 6011)
417 while (true)
418 {
419 if (set_element == ((my_cell_set*)cells_to_merge)->end()) break;
420 cell = (*set_element);
421 merged_cells->full += ((LASintervalStartCell*)cell)->full;
422 while (cell)
423 {
424 map.insert(my_cell_map::value_type(cell->start, cell));
425 cell = cell->next;
426 }
427 set_element++;
428 }
429#pragma warning(pop)
430 // initialize merged_cells with first interval
431 my_cell_map::iterator map_element = map.begin();
432 cell = (*map_element).second;
433 map.erase(map_element);
434 merged_cells->start = cell->start;

Callers 1

merge_intervalsMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected