Belle II Software  release-08-01-10
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 ; }