NUMA++ 0.12.0
Loading...
Searching...
No Matches
bitmask.cpp
Go to the documentation of this file.
1/**
2 * @file
3 * @copyright
4 * SPDX-FileCopyrightText: 2023-2024 European Southern Observatory (ESO)
5 *
6 * SPDX-License-Identifier: LGPL-3.0-only
7 */
8#include <numapp/bitmask.hpp>
9
10#include <ostream>
11
12namespace numapp {
13
14std::ostream& FormatBitmask(std::ostream& os, bitmask const* mask, int min_bits) {
15 unsigned char value = 0;
16 // print value as hex char every 4 bits, starting from msb but minimum min_bits number of bits.
17 for (int bit_num = mask->size - 1; bit_num >= 0; --bit_num) {
18 if (numa_bitmask_isbitset(mask, bit_num)) {
19 value |= (1u << (bit_num % 4));
20 min_bits = bit_num;
21 }
22 if (bit_num > min_bits) {
23 continue;
24 }
25 if (bit_num % 4 == 0) {
26 if (value >= 0u && value < 10u) {
27 os.put('0' + value);
28 } else if (value >= 10u && value < 16u) {
29 os.put('a' - 10 + value);
30 } else {
31 os.put('?');
32 }
33 value = 0;
34 }
35 }
36 return os;
37}
38
39} // namespace numapp
Contains declarations for numapp::Bitmask.
std::ostream & FormatBitmask(std::ostream &os, bitmask const *mask, int min_bits)
Formats mask and inserts it to os.
Definition bitmask.cpp:14