Files
rippled/include/xrpl/ledger/detail/ReadViewFwdRange.ipp
Bart 1d42c4f6de refactor: Remove unnecessary copyright notices already covered by LICENSE.md (#5929)
Per XLS-0095, we are taking steps to rename ripple(d) to xrpl(d).

This change specifically removes all copyright notices referencing Ripple, XRPLF, and certain affiliated contributors upon mutual agreement, so the notice in the LICENSE.md file applies throughout. Copyright notices referencing external contributions remain as-is. Duplicate verbiage is also removed.
2025-11-04 08:33:42 +00:00

121 lines
2.6 KiB
C++

#ifndef XRPL_LEDGER_READVIEWFWDRANGEINL_H_INCLUDED
#define XRPL_LEDGER_READVIEWFWDRANGEINL_H_INCLUDED
namespace ripple {
namespace detail {
template <class ValueType>
ReadViewFwdRange<ValueType>::iterator::iterator(iterator const& other)
: view_(other.view_)
, impl_(other.impl_ ? other.impl_->copy() : nullptr)
, cache_(other.cache_)
{
}
template <class ValueType>
ReadViewFwdRange<ValueType>::iterator::iterator(iterator&& other) noexcept
: view_(other.view_)
, impl_(std::move(other.impl_))
, cache_(std::move(other.cache_))
{
}
template <class ValueType>
ReadViewFwdRange<ValueType>::iterator::iterator(
ReadView const* view,
std::unique_ptr<iter_base> impl)
: view_(view), impl_(std::move(impl))
{
}
template <class ValueType>
auto
ReadViewFwdRange<ValueType>::iterator::operator=(iterator const& other)
-> iterator&
{
if (this != &other)
{
view_ = other.view_;
impl_ = other.impl_ ? other.impl_->copy() : nullptr;
cache_ = other.cache_;
}
return *this;
}
template <class ValueType>
auto
ReadViewFwdRange<ValueType>::iterator::operator=(iterator&& other) noexcept
-> iterator&
{
if (this != &other)
{
view_ = other.view_;
impl_ = std::move(other.impl_);
cache_ = std::move(other.cache_);
}
return *this;
}
template <class ValueType>
bool
ReadViewFwdRange<ValueType>::iterator::operator==(iterator const& other) const
{
XRPL_ASSERT(
view_ == other.view_,
"ripple::detail::ReadViewFwdRange::iterator::operator==(iterator) "
"const : input view match");
if (impl_ != nullptr && other.impl_ != nullptr)
return impl_->equal(*other.impl_);
return impl_ == other.impl_;
}
template <class ValueType>
bool
ReadViewFwdRange<ValueType>::iterator::operator!=(iterator const& other) const
{
return !(*this == other);
}
template <class ValueType>
auto
ReadViewFwdRange<ValueType>::iterator::operator*() const -> reference
{
if (!cache_)
cache_ = impl_->dereference();
return *cache_;
}
template <class ValueType>
auto
ReadViewFwdRange<ValueType>::iterator::operator->() const -> pointer
{
return &**this;
}
template <class ValueType>
auto
ReadViewFwdRange<ValueType>::iterator::operator++() -> iterator&
{
impl_->increment();
cache_.reset();
return *this;
}
template <class ValueType>
auto
ReadViewFwdRange<ValueType>::iterator::operator++(int) -> iterator
{
iterator prev(view_, impl_->copy());
prev.cache_ = std::move(cache_);
++(*this);
return prev;
}
} // namespace detail
} // namespace ripple
#endif