Belle II Software development
BitMask.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8#pragma once
9
11#define ADD_BITMASK_OPERATORS(Bitmask) \
12 \
13 inline Bitmask operator| (Bitmask x , Bitmask y ) \
14 { return static_cast<Bitmask>( static_cast<int>(x) \
15 | static_cast<int>(y)); } \
16 \
17 inline Bitmask operator& (Bitmask x , Bitmask y ) \
18 { return static_cast<Bitmask>( static_cast<int>(x) \
19 & static_cast<int>(y)); } \
20 \
21 inline Bitmask operator^ (Bitmask x , Bitmask y ) \
22 { return static_cast<Bitmask>( static_cast<int>(x) \
23 ^ static_cast<int>(y)); } \
24 \
25 inline Bitmask operator~ (Bitmask x ) \
26 { return static_cast<Bitmask>(~static_cast<int>(x)); } \
27 \
28 inline Bitmask & operator&=(Bitmask & x , Bitmask y) \
29 { x = x & y ; return x ; } \
30 \
31 inline Bitmask & operator|=(Bitmask & x , Bitmask y) \
32 { x = x | y ; return x ; } \
33 \
34 inline Bitmask & operator^=(Bitmask & x , Bitmask y) \
35 { x = x ^ y ; return x ; }