| 640 | } |
| 641 | |
| 642 | inline int DictEncoderBase::WriteData(uint8_t* buffer, int buffer_len) { |
| 643 | // Write bit width in first byte |
| 644 | *buffer = bit_width(); |
| 645 | ++buffer; |
| 646 | --buffer_len; |
| 647 | |
| 648 | RleEncoder encoder(buffer, buffer_len, bit_width()); |
| 649 | for (int index: buffered_indices_) { |
| 650 | if (!encoder.Put(index)) return -1; |
| 651 | } |
| 652 | encoder.Flush(); |
| 653 | return 1 + encoder.len(); |
| 654 | } |
| 655 | |
| 656 | template <> |
| 657 | template<parquet::Type::type PARQUET_TYPE> |