10#include <detail/preprocessor.hpp>
11#include <param/detail/paramdef.hpp>
29template <
typename Def>
86 : file_start(file.get_file_start()),
87 ptr(&*file.get_param_row_locators().begin() + pos) {}
94 : file_start(other.file_start), ptr(other.ptr) {}
102 requires(std::is_const_v<Def>)
103 : file_start(other.file_start), ptr(other.ptr) {}
113 return { this->ptr->
row,
114 *
reinterpret_cast<Def*
>(
217 template <
typename OtherDef>
220 requires(std::is_same_v<const Def, const OtherDef>)
232 return *(*
this + offset);
248 template <
typename OtherDef>
250 requires(std::is_same_v<const Def, const OtherDef>)
252 return this->ptr == rhs.ptr;
262 template <
typename OtherDef>
265 requires(std::is_same_v<const Def, const OtherDef>)
267 return this->ptr <=> rhs.ptr;
278 requires(!std::is_const_v<Def>)
279 : file_start(other.file_start), ptr(other.ptr) {}
287template <
typename Def>
The bidirectional param table iterator.
Definition param_iterator.hpp:30
param_iterator operator-(difference_type offset) const noexcept
Subtract offset entries from the iterator.
Definition param_iterator.hpp:200
param_iterator(const param_file &file, difference_type pos) noexcept
Construct a param iterator at a given row entry position.
Definition param_iterator.hpp:85
std::bidirectional_iterator_tag iterator_category
Bidirectional iterator category tag.
Definition param_iterator.hpp:45
param_iterator & operator-=(difference_type offset) noexcept
Advance the iterator backwards by offset entries.
Definition param_iterator.hpp:189
std::strong_ordering operator<=>(const param_iterator< OtherDef > &rhs) const noexcept
The iterator relation operator in terms of row indices.
Definition param_iterator.hpp:263
ptrdiff_t difference_type
Iterator difference type.
Definition param_iterator.hpp:57
param_iterator operator+(difference_type offset) const noexcept
Add offset entries to the iterator.
Definition param_iterator.hpp:177
value_type operator*() const noexcept
Dereference the iterator at the current position to get a row index/row pair.
Definition param_iterator.hpp:112
param_iterator(const param_iterator &other) noexcept
Construct a new param iterator (copy constructor).
Definition param_iterator.hpp:93
value_type * pointer
Iterator pointer type.
Definition param_iterator.hpp:63
param_iterator & operator++() noexcept
Advance the iterator forwards by one entry (precrement).
Definition param_iterator.hpp:123
bool operator==(const param_iterator< OtherDef > &rhs) const noexcept
The iterator equality comparison operator.
Definition param_iterator.hpp:249
difference_type operator-(const param_iterator< OtherDef > &rhs) const noexcept
How many steps would it take from this iterator to reach iterator rhs?
Definition param_iterator.hpp:218
param_iterator & operator--() noexcept
Advance the iterator backwards by one entry (predecrement).
Definition param_iterator.hpp:144
param_iterator(const param_iterator< std::remove_const_t< Def > > &other) noexcept
Construct a new param iterator (const iterator promotion).
Definition param_iterator.hpp:100
value_type & reference
Iterator reference type.
Definition param_iterator.hpp:69
param_iterator operator++(int) noexcept
Advance the iterator forwards by one entry (postcrement).
Definition param_iterator.hpp:133
value_type operator[](difference_type offset) const noexcept
Param table iterator subscript.
Definition param_iterator.hpp:231
param_iterator() noexcept
Default construct a param iterator.
Definition param_iterator.hpp:77
std::pair< row_index_type, Def & > value_type
Dereferencing returns a row index/row pair.
Definition param_iterator.hpp:51
param_iterator & operator+=(difference_type offset) noexcept
Advance the iterator forwards by offset entries.
Definition param_iterator.hpp:166
std::bidirectional_iterator_tag iterator_concept
Bidirectional iterator concept tag.
Definition param_iterator.hpp:39
param_iterator operator--(int) noexcept
Advance the iterator backwards by one entry (postdecrement).
Definition param_iterator.hpp:154
An interface to a param table of one of the predefined types.
Definition param_table.hpp:34
ELDEN RING param defines and enums.
ELDEN RING param file layouts.
An instance of a structure describing a param table entry later in the file.
Definition param_file.hpp:77
uintptr_t file_offset
The offset (from the start of the file) to this param's row data.
Definition param_file.hpp:89
row_index_type row
The param row index.
Definition param_file.hpp:82
The layout of a .param file.
Definition param_file.hpp:24