acl  3.5.3.0
bitmap.hpp
浏览该文件的文档.
1 #pragma once
2 #include "noncopyable.hpp"
3 
4 namespace acl {
5 
6 class bitmap : public noncopyable
7 {
8 public:
9  /**
10  * 构造函数
11  * @param buf {const void*} 源数据内存位映射区
12  * @param len {size_} buf 位映射内存区中被置位的数量
13  */
14  bitmap(const void* buf, size_t len);
15 
16  /**
17  * 构造函数
18  * @param len {size_t} 最大容纳的位映射的数量
19  */
20  bitmap(size_t len);
21 
22  ~bitmap(void);
23 
24  /**
25  * 将所给数值映射在位集合中
26  * @param n {size_t}
27  * @return {bool} 返回 true 表示添加成功,否则表示该值越界或已经存在
28  */
29  bool bit_set(size_t n);
30 
31  /**
32  * 判断所给数据是否已经被设置在位映射中
33  * @param n {size_t}
34  * @return {bool} 判断指定数值是否存在于位映射集合中
35  */
36  bool bit_isset(size_t n) const;
37 
38  /**
39  * 将指定数值从位集合中去除
40  * @param n {size_t}
41  * @return {bool} 返回 false 表示该值越界或不存在于位集合中
42  */
43  bool bit_unset(size_t n);
44 
45  /**
46  * 将bitmap信息拷贝到buf中
47  * @param buf {void*}存放拷贝结果
48  * @param len {size_t} buf的最大长度
49  * @return {size_t} 返回成功拷贝的内存长度,返回 0 表示 buf 太小
50  */
51  size_t tobuf(void* buf, size_t len) const;
52 
53  /**
54  * 从buf中设置当前bitmap信息
55  * @param buf {const void*} 要设置bitmap信息
56  * @param len {size_t} buf的长度
57  * @return true 成功,false失败
58  */
59  bool frombuf(const void* buf, size_t len);
60 
61  /**
62  * 重置当前的bitmap为 0
63  */
64  void reset(void);
65 
66  /**
67  * 获取当前位映射存储空间可以存储的位的个数
68  * @return {size_t}
69  */
70  size_t size(void) const;
71 
72  /**
73  * 获得内部存储空间大小(字节)
74  */
75  size_t space(void) const;
76 
77  /**
78  * 获取当前已经设置的个数
79  * @return {size_t}
80  */
81  size_t count(void) const;
82 
83  /**
84  * 当前bitmap是否已满
85  * @return {bool}
86  */
87  bool full(void) const;
88 
89 public:
90  const unsigned char* get_bmp(void) const {
91  return bmp_;
92  }
93 
94  unsigned char* get_bmp(void) {
95  return bmp_;
96  }
97 
98 private:
99  unsigned char *bmp_;
100  size_t size_;
101  size_t count_;
102 
103  //从新统计count数量
104  void recount(void);
105 };
106 
107 } // namespace acl
bitmap(const void *buf, size_t len)
size_t count(void) const
bool bit_unset(size_t n)
bool bit_isset(size_t n) const
bool full(void) const
size_t tobuf(void *buf, size_t len) const
unsigned char * get_bmp(void)
Definition: bitmap.hpp:94
bool frombuf(const void *buf, size_t len)
bool bit_set(size_t n)
void reset(void)
const unsigned char * get_bmp(void) const
Definition: bitmap.hpp:90
size_t size(void) const
size_t space(void) const