Feathercoin  0.5.0
P2P Digital Currency
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
block_builder.h
Go to the documentation of this file.
1 // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. See the AUTHORS file for names of contributors.
4 
5 #ifndef STORAGE_LEVELDB_TABLE_BLOCK_BUILDER_H_
6 #define STORAGE_LEVELDB_TABLE_BLOCK_BUILDER_H_
7 
8 #include <vector>
9 
10 #include <stdint.h>
11 #include "leveldb/slice.h"
12 
13 namespace leveldb {
14 
15 struct Options;
16 
17 class BlockBuilder {
18  public:
19  explicit BlockBuilder(const Options* options);
20 
21  // Reset the contents as if the BlockBuilder was just constructed.
22  void Reset();
23 
24  // REQUIRES: Finish() has not been callled since the last call to Reset().
25  // REQUIRES: key is larger than any previously added key
26  void Add(const Slice& key, const Slice& value);
27 
28  // Finish building the block and return a slice that refers to the
29  // block contents. The returned slice will remain valid for the
30  // lifetime of this builder or until Reset() is called.
31  Slice Finish();
32 
33  // Returns an estimate of the current (uncompressed) size of the block
34  // we are building.
35  size_t CurrentSizeEstimate() const;
36 
37  // Return true iff no entries have been added since the last Reset()
38  bool empty() const {
39  return buffer_.empty();
40  }
41 
42  private:
43  const Options* options_;
44  std::string buffer_; // Destination buffer
45  std::vector<uint32_t> restarts_; // Restart points
46  int counter_; // Number of entries emitted since restart
47  bool finished_; // Has Finish() been called?
48  std::string last_key_;
49 
50  // No copying allowed
51  BlockBuilder(const BlockBuilder&);
52  void operator=(const BlockBuilder&);
53 };
54 
55 } // namespace leveldb
56 
57 #endif // STORAGE_LEVELDB_TABLE_BLOCK_BUILDER_H_
std::string * value
Definition: version_set.cc:270
size_t CurrentSizeEstimate() const
BlockBuilder(const Options *options)
std::vector< uint32_t > restarts_
Definition: block_builder.h:45
void operator=(const BlockBuilder &)
const Options * options_
Definition: block_builder.h:43
bool empty() const
Definition: block_builder.h:38
void Add(const Slice &key, const Slice &value)