MCPcopy Create free account
hub / github.com/PDAL/PDAL / getFieldAs

Method getFieldAs

pdal/PointView.hpp:430–504  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

428
429template <class T>
430inline T PointView::getFieldAs(Dimension::Id dim, PointId pointIndex) const
431{
432 assert(pointIndex < m_size);
433 T retval;
434 bool ok = false;
435 const Dimension::Detail *dd = m_layout->dimDetail(dim);
436 Everything e;
437
438 PointId tableIdx = m_index[pointIndex];
439 // Note that getFieldInternal() can't be hoisted out of the switch
440 // because we don't want to call it in the case where the dimension
441 // type isn't known. A separate test could be made, but that *might*
442 // cost and this is an important code path.
443 switch (dd->type())
444 {
445 case Dimension::Type::Float:
446 m_pointTable.getFieldInternal(dim, tableIdx, &e);
447 ok = Utils::numericCast(e.f, retval);
448 break;
449 case Dimension::Type::Double:
450 m_pointTable.getFieldInternal(dim, tableIdx, &e);
451 ok = Utils::numericCast(e.d, retval);
452 break;
453 case Dimension::Type::Signed8:
454 m_pointTable.getFieldInternal(dim, tableIdx, &e);
455 ok = Utils::numericCast(e.s8, retval);
456 break;
457 case Dimension::Type::Signed16:
458 m_pointTable.getFieldInternal(dim, tableIdx, &e);
459 ok = Utils::numericCast(e.s16, retval);
460 break;
461 case Dimension::Type::Signed32:
462 m_pointTable.getFieldInternal(dim, tableIdx, &e);
463 ok = Utils::numericCast(e.s32, retval);
464 break;
465 case Dimension::Type::Signed64:
466 m_pointTable.getFieldInternal(dim, tableIdx, &e);
467 ok = Utils::numericCast(e.s64, retval);
468 break;
469 case Dimension::Type::Unsigned8:
470 m_pointTable.getFieldInternal(dim, tableIdx, &e);
471 ok = Utils::numericCast(e.u8, retval);
472 break;
473 case Dimension::Type::Unsigned16:
474 m_pointTable.getFieldInternal(dim, tableIdx, &e);
475 ok = Utils::numericCast(e.u16, retval);
476 break;
477 case Dimension::Type::Unsigned32:
478 m_pointTable.getFieldInternal(dim, tableIdx, &e);
479 ok = Utils::numericCast(e.u32, retval);
480 break;
481 case Dimension::Type::Unsigned64:
482 m_pointTable.getFieldInternal(dim, tableIdx, &e);
483 ok = Utils::numericCast(e.u64, retval);
484 break;
485 case Dimension::Type::None:
486 default:
487 ok = true;

Callers

nothing calls this directly

Calls 7

numericCastFunction · 0.85
interpretationNameFunction · 0.85
toDoubleFunction · 0.85
strMethod · 0.80
nameFunction · 0.70
typeMethod · 0.45
getFieldInternalMethod · 0.45

Tested by

no test coverage detected