Branch data Line data Source code
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 <stddef.h>
9 : : #include <stdint.h>
10 : :
11 : : #include "leveldb/iterator.h"
12 : :
13 : : namespace leveldb {
14 : :
15 : : struct BlockContents;
16 : : class Comparator;
17 : :
18 : : class 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 [ + - ]: 255 : 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_
|