12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- /*
- * Copyright (c) 2020-2022, Liav A. <liavalb@hotmail.co.il>
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
- #pragma once
- #include <AK/NonnullRefPtr.h>
- #include <LibPartition/DiskPartitionMetadata.h>
- #ifdef KERNEL
- # include <Kernel/Storage/StorageDevice.h>
- #else
- # include <LibCore/Forward.h>
- #endif
- namespace Partition {
- class PartitionTable {
- public:
- Optional<DiskPartitionMetadata> partition(unsigned index) const;
- size_t partitions_count() const { return m_partitions.size(); }
- virtual ~PartitionTable() = default;
- virtual bool is_valid() const = 0;
- Vector<DiskPartitionMetadata> partitions() const { return m_partitions; }
- size_t block_size() const { return m_block_size; }
- protected:
- #ifdef KERNEL
- explicit PartitionTable(Kernel::StorageDevice&);
- NonnullRefPtr<Kernel::StorageDevice> m_device;
- #else
- explicit PartitionTable(NonnullRefPtr<Core::DeprecatedFile>);
- NonnullRefPtr<Core::DeprecatedFile> m_device_file;
- #endif
- Vector<DiskPartitionMetadata> m_partitions;
- size_t m_block_size;
- };
- }
|