Lucene++ - a full-featured, c++ search engine
API Documentation
Main Page
Related Pages
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
include
ByteBlockPool.h
Go to the documentation of this file.
1
2
// Copyright (c) 2009-2014 Alan Wright. All rights reserved.
3
// Distributable under the terms of either the Apache License (Version 2.0)
4
// or the GNU Lesser General Public License.
6
7
#ifndef BYTEBLOCKPOOL_H
8
#define BYTEBLOCKPOOL_H
9
10
#include "
LuceneObject.h
"
11
12
namespace
Lucene {
13
23
class
ByteBlockPool
:
public
LuceneObject
{
24
public
:
25
ByteBlockPool
(
const
ByteBlockPoolAllocatorBasePtr
&
allocator
,
bool
trackAllocations
);
26
virtual
~ByteBlockPool
();
27
28
LUCENE_CLASS
(
ByteBlockPool
);
29
30
public
:
31
Collection<ByteArray>
buffers
;
32
int32_t
bufferUpto
;
// Which buffer we are up to
33
int32_t
byteUpto
;
// Where we are in head buffer
34
35
ByteArray
buffer
;
36
int32_t
byteOffset
;
37
38
static
const
int32_t
nextLevelArray
[];
39
static
const
int32_t
levelSizeArray
[];
40
41
protected
:
42
bool
trackAllocations
;
43
ByteBlockPoolAllocatorBasePtr
allocator
;
44
45
public
:
46
static
int32_t
FIRST_LEVEL_SIZE
();
47
48
void
reset
();
49
void
nextBuffer
();
50
int32_t
newSlice
(int32_t size);
51
int32_t
allocSlice
(ByteArray slice, int32_t upto);
52
};
53
54
class
ByteBlockPoolAllocatorBase
:
public
LuceneObject
{
55
public
:
56
virtual
~ByteBlockPoolAllocatorBase
();
57
58
LUCENE_CLASS
(
ByteBlockPoolAllocatorBase
);
59
60
public
:
61
virtual
void
recycleByteBlocks
(
Collection<ByteArray>
blocks, int32_t start, int32_t end) = 0;
62
virtual
void
recycleByteBlocks
(
Collection<ByteArray>
blocks) = 0;
63
virtual
ByteArray
getByteBlock
(
bool
trackAllocations) = 0;
64
};
65
66
}
67
68
#endif
clucene.sourceforge.net