Serenity Operating System
at master 43 lines 1.1 kB view raw
1/* 2 * Copyright (c) 2020-2022, Liav A. <liavalb@hotmail.co.il> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/NonnullRefPtr.h> 10#include <LibPartition/DiskPartitionMetadata.h> 11 12#ifdef KERNEL 13# include <Kernel/Storage/StorageDevice.h> 14#else 15# include <LibCore/Forward.h> 16#endif 17 18namespace Partition { 19 20class PartitionTable { 21public: 22 Optional<DiskPartitionMetadata> partition(unsigned index) const; 23 size_t partitions_count() const { return m_partitions.size(); } 24 virtual ~PartitionTable() = default; 25 virtual bool is_valid() const = 0; 26 27 Vector<DiskPartitionMetadata> partitions() const { return m_partitions; } 28 size_t block_size() const { return m_block_size; } 29 30protected: 31#ifdef KERNEL 32 explicit PartitionTable(Kernel::StorageDevice&); 33 NonnullRefPtr<Kernel::StorageDevice> m_device; 34#else 35 explicit PartitionTable(NonnullRefPtr<Core::DeprecatedFile>); 36 NonnullRefPtr<Core::DeprecatedFile> m_device_file; 37#endif 38 39 Vector<DiskPartitionMetadata> m_partitions; 40 size_t m_block_size; 41}; 42 43}