18namespace pw::allocator {
30 kCanAllocateArbitraryLayout = 1 << 0,
31 kImplementsGetRequestedLayout = 1 << 1,
32 kImplementsGetUsableLayout = 1 << 2,
33 kImplementsGetAllocatedLayout = 1 << 3,
34 kImplementsGetCapacity = 1 << 4,
35 kImplementsRecognizes = 1 << 5,
36 kSkipsDestroy = 1 << 6,
68 constexpr Capabilities(uint32_t capabilities) : capabilities_(capabilities) {}
70 constexpr bool has(
Capability capability)
const {
71 return (capabilities_ & capability) == capability;
74 constexpr uint32_t get()
const {
return capabilities_; }
77 const uint32_t capabilities_;
82 return lhs.get() == rhs.get();
85inline constexpr bool operator!=(
const Capabilities& lhs,
86 const Capabilities& rhs) {
87 return lhs.get() != rhs.get();
90inline constexpr Capabilities operator|(
const Capabilities& lhs,
91 const Capabilities& rhs) {
92 return Capabilities(lhs.get() | rhs.get());
95inline constexpr Capabilities operator&(
const Capabilities& lhs,
96 const Capabilities& rhs) {
97 return Capabilities(lhs.get() & rhs.get());
100inline constexpr Capabilities operator^(
const Capabilities& lhs,
101 const Capabilities& rhs) {
102 return Capabilities(lhs.get() ^ rhs.get());
Definition: capability.h:65
Capability
Definition: capability.h:28