| 470 | |
| 471 | struct ColumnMetadata { |
| 472 | flatbuffers::Offset<void> WriteMetadata(FBB& fbb) { // NOLINT |
| 473 | switch (this->meta_type) { |
| 474 | case ColumnType::PRIMITIVE: |
| 475 | // flatbuffer void |
| 476 | return 0; |
| 477 | case ColumnType::CATEGORY: { |
| 478 | auto cat_meta = fbs::CreateCategoryMetadata( |
| 479 | fbb, GetPrimitiveArray(fbb, this->category_levels), this->category_ordered); |
| 480 | return cat_meta.Union(); |
| 481 | } |
| 482 | case ColumnType::TIMESTAMP: { |
| 483 | // flatbuffer void |
| 484 | flatbuffers::Offset<flatbuffers::String> tz = 0; |
| 485 | if (!this->timezone.empty()) { |
| 486 | tz = fbb.CreateString(this->timezone); |
| 487 | } |
| 488 | |
| 489 | auto ts_meta = |
| 490 | fbs::CreateTimestampMetadata(fbb, ToFlatbufferEnum(this->temporal_unit), tz); |
| 491 | return ts_meta.Union(); |
| 492 | } |
| 493 | case ColumnType::DATE: { |
| 494 | auto date_meta = fbs::CreateDateMetadata(fbb); |
| 495 | return date_meta.Union(); |
| 496 | } |
| 497 | case ColumnType::TIME: { |
| 498 | auto time_meta = |
| 499 | fbs::CreateTimeMetadata(fbb, ToFlatbufferEnum(this->temporal_unit)); |
| 500 | return time_meta.Union(); |
| 501 | } |
| 502 | default: |
| 503 | // null |
| 504 | DCHECK(false); |
| 505 | return 0; |
| 506 | } |
| 507 | } |
| 508 | |
| 509 | ArrayMetadata values; |
| 510 | ColumnType::type meta_type; |
no test coverage detected