PartitionTable.h 924 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Copyright (c) 2020, Liav A. <liavalb@hotmail.co.il>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/RefPtr.h>
  8. #include <AK/Vector.h>
  9. #include <Kernel/Storage/Partition/DiskPartition.h>
  10. #include <Kernel/Storage/Partition/DiskPartitionMetadata.h>
  11. #include <Kernel/Storage/StorageDevice.h>
  12. namespace Kernel {
  13. class PartitionTable {
  14. public:
  15. enum class Error {
  16. Invalid,
  17. MBRProtective,
  18. ConatinsEBR,
  19. };
  20. public:
  21. Optional<DiskPartitionMetadata> partition(unsigned index);
  22. size_t partitions_count() const { return m_partitions.size(); }
  23. virtual ~PartitionTable() = default;
  24. virtual bool is_valid() const = 0;
  25. Vector<DiskPartitionMetadata> partitions() const { return m_partitions; }
  26. protected:
  27. explicit PartitionTable(const StorageDevice&);
  28. NonnullRefPtr<StorageDevice> m_device;
  29. Vector<DiskPartitionMetadata> m_partitions;
  30. };
  31. }