| 337 | } |
| 338 | |
| 339 | void leveldb_writebatch_iterate(const leveldb_writebatch_t* b, void* state, |
| 340 | void (*put)(void*, const char* k, size_t klen, |
| 341 | const char* v, size_t vlen), |
| 342 | void (*deleted)(void*, const char* k, |
| 343 | size_t klen)) { |
| 344 | class H : public WriteBatch::Handler { |
| 345 | public: |
| 346 | void* state_; |
| 347 | void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen); |
| 348 | void (*deleted_)(void*, const char* k, size_t klen); |
| 349 | void Put(const Slice& key, const Slice& value) override { |
| 350 | (*put_)(state_, key.data(), key.size(), value.data(), value.size()); |
| 351 | } |
| 352 | void Delete(const Slice& key) override { |
| 353 | (*deleted_)(state_, key.data(), key.size()); |
| 354 | } |
| 355 | }; |
| 356 | H handler; |
| 357 | handler.state_ = state; |
| 358 | handler.put_ = put; |
| 359 | handler.deleted_ = deleted; |
| 360 | b->rep.Iterate(&handler); |
| 361 | } |
| 362 | |
| 363 | void leveldb_writebatch_append(leveldb_writebatch_t* destination, |
| 364 | const leveldb_writebatch_t* source) { |