tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
accessor_scaled.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2
3#ifndef TETL_LINALG_ACCESSOR_SCALED_HPP
4#define TETL_LINALG_ACCESSOR_SCALED_HPP
5
9
10namespace etl::linalg {
11
13template <typename ScalingFactor, typename Accessor>
17 = detail::scaled_scalar<ScalingFactor, typename Accessor::reference, typename Accessor::element_type>;
18 using element_type = add_const_t<typename reference::value_type>;
19 using data_handle_type = typename Accessor::data_handle_type;
22 constexpr accessor_scaled(ScalingFactor const& s, Accessor const& a)
23 : _scalingFactor{s}
24 , _nestedAccessor{a}
25 {
26 }
28 [[nodiscard]] constexpr auto access(data_handle_type p, size_t i) const noexcept -> reference
29 {
30 return reference(_scalingFactor, _nestedAccessor.access(p, i));
31 }
33 [[nodiscard]] constexpr auto offset(data_handle_type p, size_t i) const noexcept ->
35 {
36 return _nestedAccessor.offset(p, i);
37 }
39 [[nodiscard]] constexpr auto scaling_factor() const -> ScalingFactor { return _scalingFactor; }
41 [[nodiscard]] constexpr auto nested_accessor() const -> Accessor { return _nestedAccessor; }
42
43private:
44 ScalingFactor _scalingFactor;
45 Accessor _nestedAccessor;
46};
47
48} // namespace etl::linalg
49
50#endif // TETL_LINALG_ACCESSOR_SCALED_HPP
Definition accessor_conjugate.hpp:12
constexpr bool is_copy_constructible_v
Definition is_copy_constructible.hpp:30
detail::scaled_scalar< ScalingFactor, typename Accessor::reference, typename Accessor::element_type > reference
Definition accessor_scaled.hpp:16
constexpr auto nested_accessor() const -> Accessor
Definition accessor_scaled.hpp:40
constexpr accessor_scaled(ScalingFactor const &s, Accessor const &a)
Definition accessor_scaled.hpp:21
typename Accessor::data_handle_type data_handle_type
Definition accessor_scaled.hpp:18
constexpr auto access(data_handle_type p, size_t i) const noexcept -> reference
Definition accessor_scaled.hpp:27
accessor_scaled< ScalingFactor, typename Accessor::offset_policy > offset_policy
Definition accessor_scaled.hpp:19
constexpr auto scaling_factor() const -> ScalingFactor
Definition accessor_scaled.hpp:38
constexpr auto offset(data_handle_type p, size_t i) const noexcept -> typename offset_policy::data_handle_type
Definition accessor_scaled.hpp:32
add_const_t< typename reference::value_type > element_type
Definition accessor_scaled.hpp:17