OpenKalman
Public Member Functions | Protected Attributes | Friends | List of all members
OpenKalman::VectorSpaceAdapter< NestedObject, Descriptors > Struct Template Reference

An adapter that adds vector space descriptors for each index. More...

#include <forward-class-declarations.hpp>

Inheritance diagram for OpenKalman::VectorSpaceAdapter< NestedObject, Descriptors >:
Inheritance graph
[legend]
Collaboration diagram for OpenKalman::VectorSpaceAdapter< NestedObject, Descriptors >:
Collaboration graph
[legend]

Public Member Functions

template<typename B = Base, std::enable_if_t< std::is_default_constructible< B >::value and fixed_pattern_tuple< Descriptors >, int > = 0>
constexpr VectorSpaceAdapter ()
 Default constructor.
 
template<typename Arg , typename... Ds, std::enable_if_t< internal::maybe_same_shape_as_vector_space_descriptors< Arg, Descriptors > and(not internal::vector_space_adapter< Arg >) and std::is_constructible_v< Base, Arg &&>, int > = 0>
constexpr VectorSpaceAdapter (Arg &&arg, const std::decay_t< Descriptors > &descriptors)
 Construct from a compatible indexible object. More...
 
template<typename Arg , std::enable_if_t< internal::maybe_same_shape_as_vector_space_descriptors< Arg, Descriptors > and internal::maybe_same_shape_as_vector_space_descriptors< Arg, Descriptors > and internal::vector_space_adapter< Arg > and std::is_constructible_v< Base, typename nested_object_of< Arg &&>::type >, int > = 0>
constexpr VectorSpaceAdapter (Arg &&arg, const std::decay_t< Descriptors > &descriptors)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Arg >
constexpr VectorSpaceAdapteroperator= (Arg &&arg)
 Assign from another compatible indexible object.
 
template<typename B = Base, typename = std::void_t< decltype(std::declval<Base&>() += std::declval<const VectorSpaceAdapter&>().nested_object())>>
auto & operator+= (const VectorSpaceAdapter &other)
 Increment from another VectorSpaceAdapter.
 
template<typename B = Base, typename = std::void_t< decltype(std::declval<Base&>() -= std::declval<const VectorSpaceAdapter&>().nested_object())>>
auto & operator-= (const VectorSpaceAdapter &other)
 Decrement from another VectorSpaceAdapter.
 
- Public Member Functions inherited from OpenKalman::internal::AdapterBase< VectorSpaceAdapter< NestedObject, Descriptors >, NestedObject >
constexpr AdapterBase ()
 Default constructor.
 
constexpr AdapterBase (Arg &&arg, typename std::enable_if< std::is_constructible< NestedObject, Arg && >::value >::type *=0)
 Construct from a compatible indexible type.
 
constexpr NestedObject & nested_object () &
 Get the nested object.
 
constexpr const NestedObject & nested_object () const &
 
constexpr NestedObject && nested_object () &&
 
constexpr const NestedObject && nested_object () const &&
 
constexpr auto operator[] (const Indices &indices) &
 Access a component at a set of indices. More...
 
constexpr auto operator[] (const Indices &indices) &&
 
constexpr auto operator[] (const Indices &indices) const &
 
constexpr auto operator[] (const Indices &indices) const &&
 

Protected Attributes

std::decay_t< Descriptors > my_descriptors
 

Friends

struct interface::indexible_object_traits< VectorSpaceAdapter >
 
struct interface::library_interface< VectorSpaceAdapter >
 

Additional Inherited Members

- Protected Member Functions inherited from OpenKalman::internal::AdapterBase< VectorSpaceAdapter< NestedObject, Descriptors >, NestedObject >
constexpr AdapterBaseoperator= (Arg &&arg)
 Assign from another compatible indexible object.
 

Detailed Description

template<typename NestedObject, typename Descriptors>
struct OpenKalman::VectorSpaceAdapter< NestedObject, Descriptors >

An adapter that adds vector space descriptors for each index.

Any vector space descriptors associated with NestedObject are overwritten.

Template Parameters
ArgAn indexible object. Vs A set of coordinates::pattern objects

Constructor & Destructor Documentation

◆ VectorSpaceAdapter() [1/2]

template<typename NestedObject , typename Descriptors >
template<typename Arg , typename... Ds, std::enable_if_t< internal::maybe_same_shape_as_vector_space_descriptors< Arg, Descriptors > and(not internal::vector_space_adapter< Arg >) and std::is_constructible_v< Base, Arg &&>, int > = 0>
constexpr OpenKalman::VectorSpaceAdapter< NestedObject, Descriptors >::VectorSpaceAdapter ( Arg &&  arg,
const std::decay_t< Descriptors > &  descriptors 
)
inline

Construct from a compatible indexible object.

Template Parameters
ArgAn indexible object. Any of its vector space descriptors will be overwritten.
Parameters
descriptorsA set of coordinates::pattern objects

◆ VectorSpaceAdapter() [2/2]

template<typename NestedObject , typename Descriptors >
template<typename Arg , std::enable_if_t< internal::maybe_same_shape_as_vector_space_descriptors< Arg, Descriptors > and internal::maybe_same_shape_as_vector_space_descriptors< Arg, Descriptors > and internal::vector_space_adapter< Arg > and std::is_constructible_v< Base, typename nested_object_of< Arg &&>::type >, int > = 0>
constexpr OpenKalman::VectorSpaceAdapter< NestedObject, Descriptors >::VectorSpaceAdapter ( Arg &&  arg,
const std::decay_t< Descriptors > &  descriptors 
)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Construct from another VectorSpaceAdapter, overwriting its vector space descriptors.


The documentation for this struct was generated from the following files: