GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TTransientBits.h
Go to the documentation of this file.
1#ifndef TTRANSIENTBITS_H
2#define TTRANSIENTBITS_H
3
4/** \addtogroup Sorting
5 * @{
6 */
7
8////////////////////////////////////////////////////////////////////////////////
9///
10/// \class TTransientBits
11///
12/// Class for storing bits for transient data members
13///
14////////////////////////////////////////////////////////////////////////////////
15
16#include <iostream>
17
18#include "RtypesCore.h"
19
20template <typename T>
22public:
24 explicit TTransientBits(const T& tmp) : fBits(tmp) {}
25 ~TTransientBits() = default;
26
27 TTransientBits(const TTransientBits&) = default;
28 TTransientBits(TTransientBits&&) noexcept = default;
29
30 TTransientBits& operator=(const TTransientBits&) = default;
31 TTransientBits& operator=(TTransientBits&&) noexcept = default;
32
33 void SetBit(T bit, Bool_t flag) { flag ? SetBit(bit) : ClearBit(bit); }
34 void SetBit(T bit) { fBits |= bit; }
35 void ClearBit(T bit) { fBits &= ~bit; }
36 Bool_t TestBit(T bit) const { return fBits & bit; }
37 T TestBits(T bit) const { return (fBits & bit); }
38 template <typename U>
39 void SetBit(U bit, Bool_t flag) { flag ? SetBit(bit) : ClearBit(bit); }
40 template <typename U>
41 void SetBit(U bit) { fBits |= static_cast<std::underlying_type_t<U>>(bit); }
42 template <typename U>
43 void ClearBit(U bit) { fBits &= ~static_cast<std::underlying_type_t<U>>(bit); }
44 template <typename U>
45 Bool_t TestBit(U bit) const { return fBits & static_cast<std::underlying_type_t<U>>(bit); }
46 template <typename U>
47 T TestBits(U bit) const { return (fBits & static_cast<std::underlying_type_t<U>>(bit)); }
48
50 {
51 fBits = rhs;
52 return *this;
53 }
54 T Value() const { return fBits; }
55
56 void Clear() { fBits = 0; }
57 void Print() const { std::cout << fBits << std::endl; }
58
60};
61
62/*! @} */
63#endif /* _TTRANSIENTBITS_H_ */
void SetBit(T bit)
~TTransientBits()=default
T TestBits(U bit) const
void SetBit(T bit, Bool_t flag)
void Print() const
TTransientBits & operator=(const T &rhs)
void ClearBit(T bit)
Bool_t TestBit(U bit) const
TTransientBits(TTransientBits &&) noexcept=default
void SetBit(U bit, Bool_t flag)
Bool_t TestBit(T bit) const
TTransientBits(const TTransientBits &)=default
T TestBits(T bit) const
void ClearBit(U bit)
TTransientBits(const T &tmp)
void SetBit(U bit)