PartitionTable.h 818 B

1234567891011121314151617181920212223242526272829303132
  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. #include <LibPartition/PartitionableDevice.h>
  10. namespace Partition {
  11. class PartitionTable {
  12. public:
  13. Optional<DiskPartitionMetadata> partition(unsigned index) const;
  14. size_t partitions_count() const { return m_partitions.size(); }
  15. virtual ~PartitionTable() = default;
  16. virtual bool is_valid() const = 0;
  17. Vector<DiskPartitionMetadata> partitions() const { return m_partitions; }
  18. size_t block_size() const { return m_device.block_size(); }
  19. protected:
  20. explicit PartitionTable(PartitionableDevice&&);
  21. PartitionableDevice m_device;
  22. Vector<DiskPartitionMetadata> m_partitions;
  23. };
  24. }