| 506 | |
| 507 | template<typename T> |
| 508 | void PointView::setField(Dimension::Id dim, PointId idx, T val) |
| 509 | { |
| 510 | const Dimension::Detail *dd = layout()->dimDetail(dim); |
| 511 | |
| 512 | Everything e; |
| 513 | bool ok = true; |
| 514 | switch (dd->type()) |
| 515 | { |
| 516 | case Dimension::Type::Float: |
| 517 | ok = Utils::numericCast(val, e.f); |
| 518 | break; |
| 519 | case Dimension::Type::Double: |
| 520 | ok = Utils::numericCast(val, e.d); |
| 521 | break; |
| 522 | case Dimension::Type::Signed8: |
| 523 | ok = Utils::numericCast(val, e.s8); |
| 524 | break; |
| 525 | case Dimension::Type::Signed16: |
| 526 | ok = Utils::numericCast(val, e.s16); |
| 527 | break; |
| 528 | case Dimension::Type::Signed32: |
| 529 | ok = Utils::numericCast(val, e.s32); |
| 530 | break; |
| 531 | case Dimension::Type::Signed64: |
| 532 | ok = Utils::numericCast(val, e.s64); |
| 533 | break; |
| 534 | case Dimension::Type::Unsigned8: |
| 535 | ok = Utils::numericCast(val, e.u8); |
| 536 | break; |
| 537 | case Dimension::Type::Unsigned16: |
| 538 | ok = Utils::numericCast(val, e.u16); |
| 539 | break; |
| 540 | case Dimension::Type::Unsigned32: |
| 541 | ok = Utils::numericCast(val, e.u32); |
| 542 | break; |
| 543 | case Dimension::Type::Unsigned64: |
| 544 | ok = Utils::numericCast(val, e.u64); |
| 545 | break; |
| 546 | case Dimension::Type::None: |
| 547 | return; |
| 548 | } |
| 549 | if (ok) |
| 550 | { |
| 551 | if (idx == m_index.size()) |
| 552 | addPoint(); |
| 553 | m_pointTable.setFieldInternal(dim, tableId(idx), &e); |
| 554 | } |
| 555 | else |
| 556 | { |
| 557 | std::ostringstream oss; |
| 558 | oss << "Unable to set data and convert as requested: "; |
| 559 | oss << Dimension::name(dim) << ":" << Utils::typeidName<T>() << |
| 560 | "(" << (double)val << ") -> " << |
| 561 | Dimension::interpretationName(dd->type()); |
| 562 | throw pdal_error(oss.str()); |
| 563 | } |
| 564 | } |
| 565 |
nothing calls this directly
no test coverage detected