xtensor
Loading...
Searching...
No Matches
xt::xfunctor_adaptor< F, CT > Class Template Reference

Adapt a container with a functor, forwarding methods such as resize / reshape. More...

#include <xfunctor_view.hpp>

Inheritance diagram for xt::xfunctor_adaptor< F, CT >:
xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > > xt::xcontainer_semantic< xfunctor_adaptor< F, CT > > xt::xaccessible< D > xt::xsemantic_base< D >

Public Types

using self_type = xfunctor_adaptor<F, CT>
 
using semantic_base = xcontainer_semantic<self_type>
 
using xexpression_type = std::decay_t<CT>
 
using base_type = xfunctor_applier_base<self_type>
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename xexpression_type::strides_type
 
- Public Types inherited from xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >
using self_type
 
using inner_types
 
using xexpression_type
 
using undecay_expression
 
using functor_type
 
using accessible_base
 
using extension_base
 
using expression_tag
 
using value_type
 
using reference
 
using const_reference
 
using pointer
 
using const_pointer
 
using size_type
 
using difference_type
 
using shape_type
 
using strides_type
 
using backstrides_type
 
using inner_shape_type
 
using inner_strides_type
 
using inner_backstrides_type
 
using bool_load_type
 
using stepper
 
using const_stepper
 
using layout_iterator
 
using const_layout_iterator
 
using reverse_layout_iterator
 
using const_reverse_layout_iterator
 
using broadcast_iterator
 
using const_broadcast_iterator
 
using reverse_broadcast_iterator
 
using const_reverse_broadcast_iterator
 
using linear_iterator
 
using const_linear_iterator
 
using reverse_linear_iterator
 
using const_reverse_linear_iterator
 
using iterator
 
using const_iterator
 
using reverse_iterator
 
using const_reverse_iterator
 
- Public Types inherited from xt::xcontainer_semantic< xfunctor_adaptor< F, CT > >
using base_type
 
using derived_type
 
using temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t<D>
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types<D>::temporary_type
 

Public Member Functions

template<class E >
self_typeoperator= (const xexpression< E > &e)
 
template<class E >
disable_xexpression< E, self_type > & operator= (const E &e)
 
Extended copy semantic
template<class S = shape_type>
auto resize (S &&shape, bool force=false)
 
template<class S = shape_type>
auto resize (S &&shape, layout_type l)
 
template<class S = shape_type>
auto resize (S &&shape, const strides_type &strides)
 
template<class S = shape_type>
autoreshape (S &&shape, layout_type layout=base_type::static_layout) &
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
- Public Member Functions inherited from xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >
reference operator() (Args... args)
 
const_reference operator() (Args... args) const
 
reference unchecked (Args... args)
 
const_reference unchecked (Args... args) const
 
reference element (IT first, IT last)
 
const_reference element (IT first, IT last) const
 
auto data_element (size_type i) -> decltype(std::declval< FCT >()(std::declval< undecay_expression >().data_element(i)))
 
auto data_element (size_type i) const -> decltype(std::declval< FCT >()(std::declval< const undecay_expression >().data_element(i)))
 
auto flat (size_type i) -> decltype(std::declval< FCT >()(std::declval< undecay_expression >().flat(i)))
 
auto flat (size_type i) const -> decltype(std::declval< FCT >()(std::declval< const undecay_expression >().flat(i)))
 
auto load_simd (size_type i) const -> decltype(std::declval< FCT >().template proxy_simd_load< align, requested_type, N >(std::declval< undecay_expression >(), i))
 
auto store_simd (size_type i, const simd &e) -> decltype(std::declval< FCT >() .template proxy_simd_store< align >(std::declval< undecay_expression >(), i, e))
 
broadcast_iterator< S, Lbegin (const S &shape) noexcept
 
const_broadcast_iterator< S, Lbegin (const S &shape) const noexcept
 
broadcast_iterator< S, Lend (const S &shape) noexcept
 
const_broadcast_iterator< S, Lend (const S &shape) const noexcept
 
const_broadcast_iterator< S, Lcbegin (const S &shape) const noexcept
 
const_broadcast_iterator< S, Lcend (const S &shape) const noexcept
 
reverse_broadcast_iterator< S, Lrbegin (const S &shape) noexcept
 
const_reverse_broadcast_iterator< S, Lrbegin (const S &shape) const noexcept
 
reverse_broadcast_iterator< S, Lrend (const S &shape) noexcept
 
const_reverse_broadcast_iterator< S, Lrend (const S &shape) const noexcept
 
const_reverse_broadcast_iterator< S, Lcrbegin (const S &shape) const noexcept
 
const_reverse_broadcast_iterator< S, Lcrend (const S &shape) const noexcept
 
stepper stepper_begin (const S &shape) noexcept
 
const_stepper stepper_begin (const S &shape) const noexcept
 
stepper stepper_end (const S &shape, layout_type l) noexcept
 
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
reference at (Args... args)
 
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
const_reference at (Args... args) const
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
reference periodic (Args... args)
 
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
const_reference periodic (Args... args) const
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
 xfunctor_applier_base (undecay_expression) noexcept
 Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.
 
 xfunctor_applier_base (Func &&, E &&) noexcept
 Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.
 
size_type size () const noexcept
 Returns the size of the expression.
 
const inner_shape_type & shape () const noexcept
 Returns the shape of the expression.
 
const inner_strides_type & strides () const noexcept
 Returns the strides of the expression.
 
const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the expression.
 
layout_type layout () const noexcept
 Returns the layout_type of the expression.
 
bool is_contiguous () const noexcept
 
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression.
 
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression.
 
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
auto element (IT first, IT last) -> reference
 Returns a reference to the element at the specified position in the expression.
 
auto element (IT first, IT last) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
xexpression_type & expression () noexcept
 Returns a reference to the underlying expression of the view.
 
const xexpression_type & expression () const noexcept
 Returns a consttant reference to the underlying expression of the view.
 
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the function to the specified parameter.
 
bool has_linear_assign (const S &strides) const
 Checks whether the xfunctor_applier_base can be linearly assigned to an expression with the specified strides.
 
auto begin () noexcept
 Returns an iterator to the first element of the expression.
 
auto begin () const noexcept
 Returns a constant iterator to the first element of the expression.
 
auto end () noexcept
 Returns an iterator to the element following the last element of the expression.
 
auto end () const noexcept
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin () const noexcept
 Returns a constant iterator to the first element of the expression.
 
auto cend () const noexcept
 Returns a constant iterator to the element following the last element of the expression.
 
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto rbegin () noexcept
 Returns an iterator to the first element of the reversed expression.
 
auto rbegin () const noexcept
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend () noexcept
 Returns an iterator to the element following the last element of the reversed expression.
 
auto rend () const noexcept
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin () const noexcept
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend () const noexcept
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
auto rend (const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin (const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
linear_iterator linear_begin () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
auto stepper_begin (const S &shape) noexcept -> stepper
 
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
- Public Member Functions inherited from xt::xcontainer_semantic< xfunctor_adaptor< F, CT > >
derived_typeassign_xexpression (const xexpression< E > &e)
 
derived_typecomputed_assign (const xexpression< E > &e)
 
derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
template<class E >
derived_type & operator+= (const xexpression< E > &)
 
template<class E >
derived_type & operator-= (const xexpression< E > &)
 
template<class E >
derived_type & operator*= (const xexpression< E > &)
 
template<class E >
derived_type & operator/= (const xexpression< E > &)
 
template<class E >
derived_type & operator%= (const xexpression< E > &)
 
template<class E >
derived_type & operator&= (const xexpression< E > &)
 
template<class E >
derived_type & operator|= (const xexpression< E > &)
 
template<class E >
derived_type & operator^= (const xexpression< E > &)
 
template<class E >
derived_type & assign (const xexpression< E > &)
 
template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 

Friends

class xcontainer_semantic< self_type >
 
class xaccessible< self_type >
 

Additional Inherited Members

- Static Public Attributes inherited from xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >
static constexpr layout_type static_layout
 
static constexpr bool contiguous_layout
 
- Protected Member Functions inherited from xt::xcontainer_semantic< xfunctor_adaptor< F, CT > >
 xcontainer_semantic (const xcontainer_semantic &)=default
 
 xcontainer_semantic (xcontainer_semantic &&)=default
 
xcontainer_semanticoperator= (const xcontainer_semantic &)=default
 
xcontainer_semanticoperator= (xcontainer_semantic &&)=default
 
derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
 xsemantic_base (const xsemantic_base &)=default
 
xsemantic_baseoperator= (const xsemantic_base &)=default
 
 xsemantic_base (xsemantic_base &&)=default
 
xsemantic_baseoperator= (xsemantic_base &&)=default
 
template<class E >
derived_type & operator= (const xexpression< E > &)
 
- Protected Attributes inherited from xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >
undecay_expression m_e
 
functor_type m_functor
 

Detailed Description

template<class F, class CT>
class xt::xfunctor_adaptor< F, CT >

Adapt a container with a functor, forwarding methods such as resize / reshape.

xt::xfunctor_adaptor has a container semantics and can only be used with containers. For a similar feature with a view semantics, one can use xt::xfunctor_view.

Template Parameters
Fthe functor type to be applied to the elements of specified expression.
CTthe closure type of the xt::xexpression type underlying this view
See also
xt::xfunctor_view

Definition at line 509 of file xfunctor_view.hpp.

Member Typedef Documentation

◆ base_type

Definition at line 518 of file xfunctor_view.hpp.

◆ self_type

template<class F , class CT >
using xt::xfunctor_adaptor< F, CT >::self_type = xfunctor_adaptor<F, CT>

Definition at line 515 of file xfunctor_view.hpp.

◆ semantic_base

template<class F , class CT >
using xt::xfunctor_adaptor< F, CT >::semantic_base = xcontainer_semantic<self_type>

Definition at line 516 of file xfunctor_view.hpp.

◆ shape_type

template<class F , class CT >
using xt::xfunctor_adaptor< F, CT >::shape_type = typename base_type::shape_type

Definition at line 519 of file xfunctor_view.hpp.

◆ strides_type

template<class F , class CT >
using xt::xfunctor_adaptor< F, CT >::strides_type = typename xexpression_type::strides_type

Definition at line 520 of file xfunctor_view.hpp.

◆ xexpression_type

template<class F , class CT >
using xt::xfunctor_adaptor< F, CT >::xexpression_type = std::decay_t<CT>

Definition at line 517 of file xfunctor_view.hpp.

Member Function Documentation

◆ operator=()

template<class F , class CT >
template<class E >
auto xt::xfunctor_adaptor< F, CT >::operator= ( const xexpression< E > & e) -> self_type&
inline

The extended assignment operator.

Definition at line 1454 of file xfunctor_view.hpp.

◆ reshape()

template<class F , class CT >
template<class S >
auto & xt::xfunctor_adaptor< F, CT >::reshape ( S && shape,
layout_type layout = base_type::static_layout ) &

Definition at line 1497 of file xfunctor_view.hpp.

◆ resize() [1/3]

template<class F , class CT >
template<class S >
auto xt::xfunctor_adaptor< F, CT >::resize ( S && shape,
bool force = false )

Definition at line 1476 of file xfunctor_view.hpp.

◆ resize() [2/3]

template<class F , class CT >
template<class S >
auto xt::xfunctor_adaptor< F, CT >::resize ( S && shape,
const strides_type & strides )

Definition at line 1490 of file xfunctor_view.hpp.

◆ resize() [3/3]

template<class F , class CT >
template<class S >
auto xt::xfunctor_adaptor< F, CT >::resize ( S && shape,
layout_type l )

Definition at line 1483 of file xfunctor_view.hpp.

Friends And Related Symbol Documentation

◆ xaccessible< self_type >

template<class F , class CT >
friend class xaccessible< self_type >
friend

Definition at line 545 of file xfunctor_view.hpp.

◆ xcontainer_semantic< self_type >

Definition at line 545 of file xfunctor_view.hpp.


The documentation for this class was generated from the following file: