PartitionTable.h 1.0 KB

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