My Project
pieceMask64.h
Go to the documentation of this file.
1 /* pieceMask64.h
2  */
3 #ifndef PIECEMASK64_H
4 #define PIECEMASK64_H
5 #include "osl/bits/mask.h"
6 
7 namespace osl
8 {
9  namespace container
10  {
12  {
13  protected:
15  public:
16  static int numToIndex(int) { return 0; }
17  static int numToOffset(int num) { return num; }
19  explicit PieceMask64(misc::Mask64 const& m) : mask(m) {}
20  protected:
21  misc::Mask64& mutableMask(int) { return mask; }
22  public:
23  const misc::Mask64& getMask(int) const { return mask; }
24  void resetAll()
25  {
27  }
28  void setAll()
29  {
30  mask=misc::Mask64::makeDirect(0xffffffffffuLL);
31  }
33  {
34  mask ^= o.mask;
35  return *this;
36  }
38  {
39  mask &= o.mask;
40  return *this;
41  }
43  {
44  mask |= o.mask;
45  return *this;
46  }
48  {
49  mask -= o.mask;
50  return *this;
51  }
53  {
54  mask += o.mask;
55  return *this;
56  }
57  bool none() const { return mask.none(); }
58  bool hasMultipleBit() const
59  {
60  if (none())
61  return false;
62  return mask.hasMultipleBit();
63  }
68  int countBit2() const
69  {
70  if (none())
71  return 0;
72  return mask.countBit2();
73  }
74  int
75 #ifdef __GNUC__
76  __attribute__ ((pure))
77 #endif
78  countBit() const
79  {
80  return mask.countBit();
81  }
82  int takeOneBit()
83  {
84  assert(!none());
85  return mask.takeOneBit();
86  }
87  };
88 } // namespace container
89  using container::PieceMask64;
90 } // namespace osl
91 
92 
93 #endif /* PIECEMASK64_H */
94 // ;;; Local Variables:
95 // ;;; mode:c++
96 // ;;; c-basic-offset:2
97 // ;;; End:
static int numToIndex(int)
Definition: pieceMask64.h:16
PieceMask64(misc::Mask64 const &m)
Definition: pieceMask64.h:19
static int numToOffset(int num)
Definition: pieceMask64.h:17
misc::Mask64 & mutableMask(int)
Definition: pieceMask64.h:21
int countBit2() const
bit の数を2まで数える
Definition: pieceMask64.h:68
const misc::Mask64 & getMask(int) const
Definition: pieceMask64.h:23
PieceMask64 & operator-=(const PieceMask64 &o)
Definition: pieceMask64.h:47
PieceMask64 & operator+=(const PieceMask64 &o)
Definition: pieceMask64.h:52
PieceMask64 & operator^=(const PieceMask64 &o)
Definition: pieceMask64.h:32
PieceMask64 & operator|=(const PieceMask64 &o)
Definition: pieceMask64.h:42
PieceMask64 & operator&=(const PieceMask64 &o)
Definition: pieceMask64.h:37
static const GeneralMask makeDirect(Integer value)
Definition: mask.h:219
GeneralMask< unsigned long long > Mask64
Definition: mask.h:347
const PtypeO PTYPEO_EDGE __attribute__((unused))