18namespace pw::allocator {
26enum Capability : uint32_t {
28 kImplementsGetRequestedLayout = 1 << 0,
29 kImplementsGetUsableLayout = 1 << 1,
30 kImplementsGetAllocatedLayout = 1 << 2,
31 kImplementsGetCapacity = 1 << 4,
32 kImplementsRecognizes = 1 << 5,
33 kSkipsDestroy = 1 << 6,
65 constexpr Capabilities(uint32_t capabilities) : capabilities_(capabilities) {}
67 constexpr bool has(Capability capability)
const {
68 return (capabilities_ & capability) == capability;
71 constexpr uint32_t get()
const {
return capabilities_; }
74 const uint32_t capabilities_;
79 return lhs.get() == rhs.get();
82inline constexpr bool operator!=(
const Capabilities& lhs,
83 const Capabilities& rhs) {
84 return lhs.get() != rhs.get();
87inline constexpr Capabilities operator|(
const Capabilities& lhs,
88 const Capabilities& rhs) {
89 return Capabilities(lhs.get() | rhs.get());
92inline constexpr Capabilities operator&(
const Capabilities& lhs,
93 const Capabilities& rhs) {
94 return Capabilities(lhs.get() & rhs.get());
97inline constexpr Capabilities operator^(
const Capabilities& lhs,
98 const Capabilities& rhs) {
99 return Capabilities(lhs.get() ^ rhs.get());
Definition: capability.h:62