Lucene++ - a full-featured, c++ search engine
API Documentation


 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ByteBlockPool.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2011 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  {
25  public:
27  virtual ~ByteBlockPool();
28 
30 
31  public:
33  int32_t bufferUpto; // Which buffer we are up to
34  int32_t byteUpto; // Where we are in head buffer
35 
36  ByteArray buffer;
37  int32_t byteOffset;
38 
39  static const int32_t nextLevelArray[];
40  static const int32_t levelSizeArray[];
41 
42  protected:
45 
46  public:
47  static int32_t FIRST_LEVEL_SIZE();
48 
49  void reset();
50  void nextBuffer();
51  int32_t newSlice(int32_t size);
52  int32_t allocSlice(ByteArray slice, int32_t upto);
53  };
54 
56  {
57  public:
59 
61 
62  public:
63  virtual void recycleByteBlocks(Collection<ByteArray> blocks, int32_t start, int32_t end) = 0;
64  virtual void recycleByteBlocks(Collection<ByteArray> blocks) = 0;
65  virtual ByteArray getByteBlock(bool trackAllocations) = 0;
66  };
67 }
68 
69 #endif

clucene.sourceforge.net