Serenity Operating System
at master 52 lines 1.3 kB view raw
1/* 2 * Copyright (c) 2020, Liav A. <liavalb@hotmail.co.il> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/UUID.h> 10 11namespace Partition { 12 13class DiskPartitionMetadata { 14private: 15 class PartitionType { 16 friend class DiskPartitionMetadata; 17 18 public: 19 explicit PartitionType(u8 partition_type); 20 explicit PartitionType(Array<u8, 16> partition_type); 21 UUID to_uuid() const; 22 u8 to_byte_indicator() const; 23 bool is_uuid() const; 24 bool is_valid() const; 25 26 private: 27 Array<u8, 16> m_partition_type {}; 28 bool m_partition_type_is_uuid { false }; 29 }; 30 31public: 32 DiskPartitionMetadata(u64 block_offset, u64 block_limit, u8 partition_type); 33 DiskPartitionMetadata(u64 start_block, u64 end_block, Array<u8, 16> partition_type); 34 DiskPartitionMetadata(u64 block_offset, u64 block_limit, Array<u8, 16> partition_type, UUID unique_guid, u64 special_attributes); 35 u64 start_block() const; 36 u64 end_block() const; 37 38 DiskPartitionMetadata offset(u64 blocks_count) const; 39 40 Optional<u64> special_attributes() const; 41 PartitionType const& type() const; 42 const UUID& unique_guid() const; 43 44private: 45 u64 m_start_block; 46 u64 m_end_block; 47 PartitionType m_type; 48 UUID m_unique_guid {}; 49 u64 m_attributes { 0 }; 50}; 51 52}