bitmap.h 1022 字节
Newer Older
羽飞's avatar
羽飞 已提交
1
/* Copyright (c) 2021 OceanBase and/or its affiliates. All rights reserved.
羽飞's avatar
羽飞 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14
miniob is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
         http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details. */

//
// Created by wangyunlai on 2021/5/7.
//

羽飞's avatar
羽飞 已提交
15
#pragma once
羽飞's avatar
羽飞 已提交
16

17
namespace common {
羽飞's avatar
羽飞 已提交
18 19 20

class Bitmap {
public:
羽飞's avatar
羽飞 已提交
21
  Bitmap();
羽飞's avatar
羽飞 已提交
22 23
  Bitmap(char *bitmap, int size);

羽飞's avatar
羽飞 已提交
24
  void init(char *bitmap, int size);
羽飞's avatar
羽飞 已提交
25 26 27 28
  bool get_bit(int index);
  void set_bit(int index);
  void clear_bit(int index);

羽飞's avatar
羽飞 已提交
29 30 31
  /**
   * @param start 从哪个位开始查找,start是包含在内的
   */
32 33
  int next_unsetted_bit(int start);
  int next_setted_bit(int start);
羽飞's avatar
羽飞 已提交
34 35

private:
36 37
  char *bitmap_;
  int size_;
羽飞's avatar
羽飞 已提交
38 39
};

40
}  // namespace common