| 206 | } |
| 207 | |
| 208 | void TileDBWriter::ready(pdal::BasePointTable& table) |
| 209 | { |
| 210 | // Create objects to store the buffer data. |
| 211 | auto layout = table.layout(); |
| 212 | bool hasBitFields = false; |
| 213 | std::array<std::optional<Dimension::Id>, 6> bitFieldIds; |
| 214 | for (const auto& dimId : layout->dims()) |
| 215 | { |
| 216 | if (m_args->m_combine_bit_fields) |
| 217 | { |
| 218 | const auto& dimName = layout->dimName(dimId); |
| 219 | auto bitIndex = BitFieldsBuffer::bitFieldIndex(dimName); |
| 220 | if (bitIndex.has_value()) |
| 221 | { |
| 222 | hasBitFields = true; |
| 223 | bitFieldIds[bitIndex.value()] = dimId; |
| 224 | continue; |
| 225 | } |
| 226 | } |
| 227 | // Allocate the buffer. |
| 228 | switch (layout->dimType(dimId)) |
| 229 | { |
| 230 | case Dimension::Type::Double: |
| 231 | m_buffers.emplace_back(new TypedDimBuffer<double>(layout, dimId)); |
| 232 | break; |
| 233 | case Dimension::Type::Float: |
| 234 | m_buffers.emplace_back(new TypedDimBuffer<float>(layout, dimId)); |
| 235 | break; |
| 236 | case Dimension::Type::Signed8: |
| 237 | m_buffers.emplace_back(new TypedDimBuffer<int8_t>(layout, dimId)); |
| 238 | break; |
| 239 | case Dimension::Type::Signed16: |
| 240 | m_buffers.emplace_back(new TypedDimBuffer<int16_t>(layout, dimId)); |
| 241 | break; |
| 242 | case Dimension::Type::Signed32: |
| 243 | m_buffers.emplace_back(new TypedDimBuffer<int32_t>(layout, dimId)); |
| 244 | break; |
| 245 | case Dimension::Type::Signed64: |
| 246 | m_buffers.emplace_back(new TypedDimBuffer<int64_t>(layout, dimId)); |
| 247 | break; |
| 248 | case Dimension::Type::Unsigned8: |
| 249 | m_buffers.emplace_back(new TypedDimBuffer<uint8_t>(layout, dimId)); |
| 250 | break; |
| 251 | case Dimension::Type::Unsigned16: |
| 252 | m_buffers.emplace_back(new TypedDimBuffer<uint16_t>(layout, dimId)); |
| 253 | break; |
| 254 | case Dimension::Type::Unsigned32: |
| 255 | m_buffers.emplace_back(new TypedDimBuffer<uint32_t>(layout, dimId)); |
| 256 | break; |
| 257 | case Dimension::Type::Unsigned64: |
| 258 | m_buffers.emplace_back(new TypedDimBuffer<uint64_t>(layout, dimId)); |
| 259 | break; |
| 260 | case Dimension::Type::None: |
| 261 | default: |
| 262 | throw pdal_error("Unsupported attribute type for " + |
| 263 | layout->dimName(dimId)); |
| 264 | } |
| 265 |
nothing calls this directly
no test coverage detected