| 192 | BlockConstructor() : block_(nullptr) {} |
| 193 | ~BlockConstructor() override { delete block_; } |
| 194 | Status FinishImpl(const Options& options, const KVMap& data) override { |
| 195 | delete block_; |
| 196 | block_ = nullptr; |
| 197 | BlockBuilder builder(&options); |
| 198 | |
| 199 | for (KVMap::const_iterator it = data.begin(); it != data.end(); ++it) { |
| 200 | builder.Add(it->first, it->second); |
| 201 | } |
| 202 | // Open the block |
| 203 | data_ = string(builder.Finish()); |
| 204 | BlockContents contents; |
| 205 | contents.data = data_; |
| 206 | contents.cachable = false; |
| 207 | contents.heap_allocated = false; |
| 208 | block_ = new Block(contents); |
| 209 | return Status::OK(); |
| 210 | } |
| 211 | Iterator* NewIterator() const override { return block_->NewIterator(); } |
| 212 | |
| 213 | private: |