+enum class RegionType {
+ Unknown = 0,
+ Heap = 1,
+ Data = 2
+};
+
+enum class StorageType {
+ NoData = 0,
+ Flat = 1,
+ Chunked = 2,
+ Privatized = 3
+};
+
+class Buffer {
+private:
+ enum class Type {
+ Malloc,
+ Mmap
+ };
+ void* data_ = nullptr;
+ std::size_t size_;
+ Type type_ = Type::Malloc;
+private:
+ Buffer(std::size_t size, Type type = Type::Malloc);
+ Buffer(void* data, std::size_t size, Type type = Type::Malloc) :
+ data_(data), size_(size), type_(type) {}