|
|
|
@ -41,20 +41,9 @@ constexpr size_t BitsForDeriveDense(size_t n) { |
|
|
|
} |
|
|
|
|
|
|
|
class KMemoryRegionTypeValue { |
|
|
|
private: |
|
|
|
using ValueType = typename std::underlying_type<KMemoryRegionType>::type; |
|
|
|
|
|
|
|
private: |
|
|
|
ValueType m_value{}; |
|
|
|
size_t m_next_bit{}; |
|
|
|
bool m_finalized{}; |
|
|
|
bool m_sparse_only{}; |
|
|
|
bool m_dense_only{}; |
|
|
|
|
|
|
|
private: |
|
|
|
constexpr KMemoryRegionTypeValue(ValueType v) : m_value(v) {} |
|
|
|
|
|
|
|
public: |
|
|
|
using ValueType = std::underlying_type_t<KMemoryRegionType>; |
|
|
|
|
|
|
|
constexpr KMemoryRegionTypeValue() = default; |
|
|
|
|
|
|
|
constexpr operator KMemoryRegionType() const { |
|
|
|
@ -139,6 +128,16 @@ public: |
|
|
|
constexpr bool IsAncestorOf(ValueType v) const { |
|
|
|
return (m_value | v) == v; |
|
|
|
} |
|
|
|
|
|
|
|
private: |
|
|
|
constexpr KMemoryRegionTypeValue(ValueType v) : m_value(v) {} |
|
|
|
|
|
|
|
private: |
|
|
|
ValueType m_value{}; |
|
|
|
size_t m_next_bit{}; |
|
|
|
bool m_finalized{}; |
|
|
|
bool m_sparse_only{}; |
|
|
|
bool m_dense_only{}; |
|
|
|
}; |
|
|
|
|
|
|
|
} // namespace impl |
|
|
|
|