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_H_
6#define STORAGE_LEVELDB_TABLE_BLOCK_H_
7
8#include <cstddef>
9#include <cstdint>
10
11#include "leveldb/iterator.h"
12
13namespace leveldb {
14
15struct BlockContents;
16class Comparator;
17
18class Block {
19 public:
20 // Initialize the block with the specified contents.
21 explicit Block(const BlockContents& contents);
22
23 Block(const Block&) = delete;
24 Block& operator=(const Block&) = delete;
25
26 ~Block();
27
28 size_t size() const { return size_; }
29 Iterator* NewIterator(const Comparator* comparator);
30
31 private:
32 class Iter;
33
34 uint32_t NumRestarts() const;
35
36 const char* data_;
37 size_t size_;
38 uint32_t restart_offset_; // Offset in data_ of restart array
39 bool owned_; // Block owns data_[]
40};
41
42} // namespace leveldb
43
44#endif // STORAGE_LEVELDB_TABLE_BLOCK_H_
45