c63519fa47
The leveldb and univalue 3rd party libraries are not installed and not needed by anyone outside of the Hub. So move them there, making it easier for 3rd party usage.
58 lines
1.7 KiB
C++
58 lines
1.7 KiB
C++
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
|
|
#ifndef STORAGE_LEVELDB_TABLE_BLOCK_BUILDER_H_
|
|
#define STORAGE_LEVELDB_TABLE_BLOCK_BUILDER_H_
|
|
|
|
#include <vector>
|
|
|
|
#include <stdint.h>
|
|
#include "leveldb/slice.h"
|
|
|
|
namespace leveldb {
|
|
|
|
struct Options;
|
|
|
|
class BlockBuilder {
|
|
public:
|
|
explicit BlockBuilder(const Options* options);
|
|
|
|
// Reset the contents as if the BlockBuilder was just constructed.
|
|
void Reset();
|
|
|
|
// REQUIRES: Finish() has not been called since the last call to Reset().
|
|
// REQUIRES: key is larger than any previously added key
|
|
void Add(const Slice& key, const Slice& value);
|
|
|
|
// Finish building the block and return a slice that refers to the
|
|
// block contents. The returned slice will remain valid for the
|
|
// lifetime of this builder or until Reset() is called.
|
|
Slice Finish();
|
|
|
|
// Returns an estimate of the current (uncompressed) size of the block
|
|
// we are building.
|
|
size_t CurrentSizeEstimate() const;
|
|
|
|
// Return true iff no entries have been added since the last Reset()
|
|
bool empty() const {
|
|
return buffer_.empty();
|
|
}
|
|
|
|
private:
|
|
const Options* options_;
|
|
std::string buffer_; // Destination buffer
|
|
std::vector<uint32_t> restarts_; // Restart points
|
|
int counter_; // Number of entries emitted since restart
|
|
bool finished_; // Has Finish() been called?
|
|
std::string last_key_;
|
|
|
|
// No copying allowed
|
|
BlockBuilder(const BlockBuilder&);
|
|
void operator=(const BlockBuilder&);
|
|
};
|
|
|
|
} // namespace leveldb
|
|
|
|
#endif // STORAGE_LEVELDB_TABLE_BLOCK_BUILDER_H_
|