aboutsummaryrefslogtreecommitdiffstats
path: root/os/various/bitmap.h
blob: 115b54cf84221d2c3d078384e6bd9c088f9a029f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
    ChibiOS/HAL - Copyright (C) 2015 Uladzimir Pylinsky aka barthess

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
*/

/**
 * @file    bitmap.h
 * @brief   Bit map structures and macros.
 *
 * @addtogroup bitmap
 * @{
 */

#ifndef BITMAP_H_
#define BITMAP_H_

/*===========================================================================*/
/* Module constants.                                                         */
/*===========================================================================*/

/*===========================================================================*/
/* Module pre-compile time settings.                                         */
/*===========================================================================*/

/*===========================================================================*/
/* Derived constants and error checks.                                       */
/*===========================================================================*/

/*===========================================================================*/
/* Module data structures and types.                                         */
/*===========================================================================*/

typedef unsigned int bitmap_word_t;

/**
 * @brief   Type of a event timer structure.
 */
typedef struct {
  bitmap_word_t   *array;
  size_t          len;    /* Array length in _words_ NOT bytes */
} bitmap_t;

/*===========================================================================*/
/* Module macros.                                                            */
/*===========================================================================*/

/*===========================================================================*/
/* External declarations.                                                    */
/*===========================================================================*/

#ifdef __cplusplus
extern "C" {
#endif
  void bitmapObjectInit(bitmap_t *map, bitmap_word_t val);
  void bitmapSet(bitmap_t *map, size_t bit);
  void bitmapClear(bitmap_t *map, size_t bit);
  void bitmapInvert(bitmap_t *map, size_t bit);
  bitmap_word_t bitmapGet(const bitmap_t *map, size_t bit);
  size_t bitmapGetBitsCount(const bitmap_t *map);
#ifdef __cplusplus
}
#endif

#endif /* BITMAP_H_ */

/** @} */