NUMA++ 0.11.0
Loading...
Searching...
No Matches
bitmask.cpp
1/**
2 * @copyright
3 * (c) Copyright ESO 2024
4 * All Rights Reserved
5 * ESO (eso.org) is an Intergovernmental Organisation, and therefore special legal conditions apply.
6 */
7#include <numapp/bitmask.hpp>
8
9#include <ostream>
10
11namespace numapp {
12
13std::ostream& FormatBitmask(std::ostream& os, bitmask const* mask, int min_bits) {
14 unsigned char value = 0;
15 // print value as hex char every 4 bits, starting from msb but minimum min_bits number of bits.
16 for (int bit_num = mask->size - 1; bit_num >= 0; --bit_num) {
17 if (numa_bitmask_isbitset(mask, bit_num)) {
18 value |= (1u << (bit_num % 4));
19 min_bits = bit_num;
20 }
21 if (bit_num > min_bits) {
22 continue;
23 }
24 if (bit_num % 4 == 0) {
25 if (value >= 0u && value < 10u) {
26 os.put('0' + value);
27 } else if (value >= 10u && value < 16u) {
28 os.put('a' - 10 + value);
29 } else {
30 os.put('?');
31 }
32 value = 0;
33 }
34 }
35 return os;
36}
37
38} // 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:13