ezEngine  Milestone 7
Bitfield.h
1 #pragma once
2 
3 #include <Foundation/Containers/DynamicArray.h>
4 #include <Foundation/Containers/HybridArray.h>
5 
12 template<class Container>
14 {
15 public:
16  ezBitfield();
17 
19  EZ_FORCE_INLINE ezUInt32 GetCount(); // [tested]
20 
22  void SetCount(ezUInt32 uiBitCount); // [tested]
23 
25  void SetCount(ezUInt32 uiBitCount, bool bSetNew); // [tested]
26 
28  EZ_FORCE_INLINE bool IsEmpty() const; // [tested]
29 
31  void Clear(); // [tested]
32 
34  EZ_FORCE_INLINE void SetBit(ezUInt32 uiBit); // [tested]
35 
37  EZ_FORCE_INLINE void ClearBit(ezUInt32 uiBit); // [tested]
38 
40  EZ_FORCE_INLINE bool IsSet(ezUInt32 uiBit) const; // [tested]
41 
43  void ClearAllBits(); // [tested]
44 
46  void SetAllBits(); // [tested]
47 
49  void SetRange(ezUInt32 uiFirstBit, ezUInt32 uiLastBit); // [tested]
50 
52  void ClearRange(ezUInt32 uiFirstBit, ezUInt32 uiLastBit); // [tested]
53 
54 private:
55  EZ_FORCE_INLINE ezUInt32 GetBitInt(ezUInt32 uiBitIndex) const;
56  EZ_FORCE_INLINE ezUInt32 GetBitMask(ezUInt32 uiBitIndex) const;
57 
58  ezUInt32 m_uiCount;
59  Container m_Container;
60 };
61 
64 
66 //template<ezUInt32 Size>
67 //using ezHybridBitfield = ezBitfield<ezHybridArray<ezUInt32, Size> >;
68 
69 
70 #include <Foundation/Containers/Implementation/Bitfield_inl.h>
71