aboutsummaryrefslogtreecommitdiff
path: root/libs/multiboot2/include/multiboot2/information.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/multiboot2/include/multiboot2/information.hpp')
-rw-r--r--libs/multiboot2/include/multiboot2/information.hpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/libs/multiboot2/include/multiboot2/information.hpp b/libs/multiboot2/include/multiboot2/information.hpp
index ac03069..d2b4c98 100644
--- a/libs/multiboot2/include/multiboot2/information.hpp
+++ b/libs/multiboot2/include/multiboot2/information.hpp
@@ -5,6 +5,9 @@
#include "impl/iterator.hpp"
#include "impl/tag.hpp"
+#include <elf/format.hpp>
+#include <elf/section_header.hpp>
+
#include <algorithm>
#include <cstddef>
#include <cstdint>
@@ -50,15 +53,17 @@ namespace multiboot2
/**
* @copydoc multiboot2::impl::elf_symbols_data
*/
- struct elf_symbols : impl::vla_tag<impl::elf_symbols_data, std::byte const, std::span>
+ template<elf::format Format>
+ struct elf_symbols : impl::vla_tag<impl::elf_symbols_data, elf::section_header<Format> const, std::span>
{
- using vla_tag::vla_tag;
+ using base = impl::vla_tag<impl::elf_symbols_data, elf::section_header<Format> const, std::span>;
+ using base::base;
- using iterator = range_type::iterator;
+ using iterator = base::range_type::iterator;
- auto data() const noexcept -> range_type
+ auto data() const noexcept -> base::range_type
{
- return m_vla;
+ return this->m_vla;
}
};
@@ -168,14 +173,16 @@ namespace multiboot2
return maybe_command_line().value();
}
- auto maybe_elf_symbols() const noexcept -> std::optional<elf_symbols>
+ template<elf::format Format>
+ auto maybe_elf_symbols() const noexcept -> std::optional<elf_symbols<Format>>
{
- return get<multiboot2::elf_symbols>();
+ return get<multiboot2::elf_symbols<Format>>();
}
- auto elf_symbols() const -> elf_symbols
+ template<elf::format Format>
+ auto elf_symbols() const -> elf_symbols<Format>
{
- return maybe_elf_symbols().value();
+ return maybe_elf_symbols<Format>().value();
}
auto maybe_loader_name() const noexcept -> std::optional<loader_name>