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


BitUtil.h
Go to the documentation of this file.
1 // 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 BITUTIL_H
8 #define BITUTIL_H
9 
10 #include "LuceneObject.h"
11 
12 namespace Lucene {
13 
15 class LPPAPI BitUtil : public LuceneObject {
16 public:
17  virtual ~BitUtil();
19 
20 public:
22  static const uint8_t ntzTable[];
23 
24 public:
26  static int32_t pop(int64_t x);
27 
29  static int64_t pop_array(const int64_t* A, int32_t wordOffset, int32_t numWords);
30 
32  static int64_t pop_intersect(const int64_t* A, const int64_t* B, int32_t wordOffset, int32_t numWords);
33 
35  static int64_t pop_union(const int64_t* A, const int64_t* B, int32_t wordOffset, int32_t numWords);
36 
38  static int64_t pop_andnot(const int64_t* A, const int64_t* B, int32_t wordOffset, int32_t numWords);
39 
41  static int64_t pop_xor(const int64_t* A, const int64_t* B, int32_t wordOffset, int32_t numWords);
42 
44  static int32_t ntz(int64_t val);
45 
47  static int32_t ntz(int32_t val);
48 
51  static int32_t ntz2(int64_t x);
52 
55  static int32_t ntz3(int64_t x);
56 
58  static bool isPowerOfTwo(int32_t v);
59 
61  static bool isPowerOfTwo(int64_t v);
62 
64  static int32_t nextHighestPowerOfTwo(int32_t v);
65 
67  static int64_t nextHighestPowerOfTwo(int64_t v);
68 
69 protected:
70  inline static void CSA(int64_t& h, int64_t& l, int64_t a, int64_t b, int64_t c);
71 };
72 
73 }
74 
75 #endif
LUCENE_CLASS
#define LUCENE_CLASS(Name)
Definition: LuceneObject.h:24
Lucene
Definition: AbstractAllTermDocs.h:12
Lucene::LuceneObject
Base class for all Lucene classes.
Definition: LuceneObject.h:31
Lucene::BitUtil
A variety of high efficiency bit twiddling routines.
Definition: BitUtil.h:15
LuceneObject.h

clucene.sourceforge.net