16 #ifndef polybori_groebner_BitMask_h_
17 #define polybori_groebner_BitMask_h_
29 template <
unsigned NBits>
35 enum { nbits = 0, mask = (
unsigned long)0 };
37 unsigned long low(
const unsigned long& value)
const {
return 0; }
38 const unsigned long&
high(
const unsigned long& value)
const {
return value; }
39 const unsigned long&
shift(
const unsigned long& value)
const {
return value; }
40 unsigned long back(
const unsigned long& value)
const {
return 0; }
44 template <
unsigned NBits>
49 unsigned long low(
const unsigned long& value)
const {
52 unsigned long high(
const unsigned long& value)
const {
53 return value >> NBits;
55 unsigned long shift(
const unsigned long& value)
const {
56 return value << NBits;
58 unsigned long back(
const unsigned long& value)
const {
59 return value << (
sizeof(
unsigned long)*8 - NBits);
66 enum { nbits =
sizeof(
unsigned long)*8,
67 mask = ((
unsigned long)(
BitMask<nbits-1>::mask) << 1) | 0x1};
69 const unsigned long&
low(
const unsigned long& value)
const {
return value; }
70 unsigned long high(
const unsigned long& value)
const {
return 0; }
71 unsigned long shift(
const unsigned long& value)
const {
return 0; }
72 const unsigned long&
back(
const unsigned long& value)
const {
return value; }
unsigned long back(const unsigned long &value) const
Definition: BitMask.h:58
const unsigned long & low(const unsigned long &value) const
Definition: BitMask.h:69
unsigned long high(const unsigned long &value) const
Definition: BitMask.h:70
const unsigned long & high(const unsigned long &value) const
Definition: BitMask.h:38
unsigned long low(const unsigned long &value) const
Definition: BitMask.h:37
#define END_NAMESPACE_PBORIGB
Definition: groebner_defs.h:16
unsigned long high(const unsigned long &value) const
Definition: BitMask.h:52
unsigned long back(const unsigned long &value) const
Definition: BitMask.h:40
#define BEGIN_NAMESPACE_PBORIGB
Definition: groebner_defs.h:15
const unsigned long & back(const unsigned long &value) const
Definition: BitMask.h:72
unsigned long shift(const unsigned long &value) const
Definition: BitMask.h:55
const unsigned long & shift(const unsigned long &value) const
Definition: BitMask.h:39
unsigned long low(const unsigned long &value) const
Definition: BitMask.h:49
unsigned long shift(const unsigned long &value) const
Definition: BitMask.h:71
This class defines a bit mask and related operations.
Definition: BitMask.h:30