| 33 | } |
| 34 | |
| 35 | Slice FilterBlockBuilder::Finish() { |
| 36 | if (!start_.empty()) { |
| 37 | GenerateFilter(); |
| 38 | } |
| 39 | |
| 40 | // Append array of per-filter offsets |
| 41 | const uint32_t array_offset = result_.size(); |
| 42 | for (size_t i = 0; i < filter_offsets_.size(); i++) { |
| 43 | PutFixed32(&result_, filter_offsets_[i]); |
| 44 | } |
| 45 | |
| 46 | PutFixed32(&result_, array_offset); |
| 47 | result_.push_back(kFilterBaseLg); // Save encoding parameter in result |
| 48 | return Slice(result_); |
| 49 | } |
| 50 | |
| 51 | void FilterBlockBuilder::GenerateFilter() { |
| 52 | const size_t num_keys = start_.size(); |