| 681 | |
| 682 | template <typename ArrayType> |
| 683 | void WriteBinaryViewField(const ArrayType& array) { |
| 684 | writer_->Key("VIEWS"); |
| 685 | writer_->StartArray(); |
| 686 | for (int64_t i = 0; i < array.length(); ++i) { |
| 687 | auto s = array.raw_values()[i]; |
| 688 | writer_->StartObject(); |
| 689 | writer_->Key("SIZE"); |
| 690 | writer_->Int64(s.size()); |
| 691 | if (s.is_inline()) { |
| 692 | writer_->Key("INLINED"); |
| 693 | if constexpr (ArrayType::TypeClass::is_utf8) { |
| 694 | writer_->String(reinterpret_cast<const char*>(s.inline_data()), s.size()); |
| 695 | } else { |
| 696 | writer_->String(HexEncode(s.inline_data(), s.size())); |
| 697 | } |
| 698 | } else { |
| 699 | // Prefix is always 4 bytes so it may not be utf-8 even if the whole |
| 700 | // string view is |
| 701 | writer_->Key("PREFIX_HEX"); |
| 702 | writer_->String(HexEncode(s.inline_data(), BinaryViewType::kPrefixSize)); |
| 703 | writer_->Key("BUFFER_INDEX"); |
| 704 | writer_->Int64(s.ref.buffer_index); |
| 705 | writer_->Key("OFFSET"); |
| 706 | writer_->Int64(s.ref.offset); |
| 707 | } |
| 708 | writer_->EndObject(); |
| 709 | } |
| 710 | writer_->EndArray(); |
| 711 | } |
| 712 | |
| 713 | void WriteVariadicBuffersField(const BinaryViewArray& arr) { |
| 714 | writer_->Key("VARIADIC_DATA_BUFFERS"); |
nothing calls this directly
no test coverage detected