Shortcuts

Template Struct VecImpl

Struct Documentation

template<typename T, typename Size, typename Layout>
struct ripple::VecImpl

This is an implementation class for a statically sized vector class with a flexible storage layout.

The VecImpl class implements the Array interface for a vector with a fixed type and known compile time size.

The data for the elements is allocated according to the layout, and can be contiguous, owned, or strided.

Note

This is an implementation class, there are aliases for vectors,

See

Vector,

See

Vec.

Template Parameters
  • T: The type of the data for the vector.

  • Size: The size of the vector.

  • Layout: The storage layout of the vector.

Note

This class should not be used directly, use the Vec aliases.

Template Parameters
  • T: The type of the elements in the vector.

  • Size: The size of the vector.

  • Layout: The type of the storage layout for the vector.

Public Functions

constexpr VecImpl() noexcept

Default constructor for the vector.

constexpr VecImpl(T val) noexcept

Sets all elements of the vector to the value val.

Parameters
  • val: The value to set all elements to.

template<typename ...Values, variadic_size_enable_t<elements, Values...> = 0>
constexpr VecImpl(Values&&... values) noexcept

Constructor to create the vector from a list of values.

Note

This overload is only enabled when the number of elements in the variadic parameter pack matches the number of elements in the vector.

Note

The types of the values must be convertible to T.

Parameters
  • values: The values to set the elements to.

Template Parameters
  • Values: The types of the values for setting.

constexpr VecImpl(Storage storage) noexcept

Constructor to set the vector from other storage.

Parameters
  • other: The other storage to use to set the vector.

constexpr VecImpl(const VecImpl &other) noexcept

Copy constructor to set the vector from another vector.

Parameters
  • other: The other vector to use to initialize this one.

constexpr VecImpl(VecImpl &&other) noexcept

Move constructor to set the vector from another vector.

Parameters
  • other: The other vector to use to initialize this one.

template<typename OtherLayout>
constexpr VecImpl(const VecImpl<T, Size, OtherLayout> &other) noexcept

Copy constructor to set the vector from another vector with a different storage layout.

Parameters
  • other: The other vector to use to initialize this one.

Template Parameters
  • OtherLayout: The layout of the other storage.

template<typename OtherLayout>
constexpr VecImpl(VecImpl<T, Size, OtherLayout> &&other)

Move constructor to set the vector from another vector with a different storage layout.

Parameters
  • other: The other vector to use to initialize this one.

Template Parameters
  • OtherLayout: The layout of the other storage.

template<typename Impl>
constexpr VecImpl(const Array<Impl> &arr)

Constructor to create the vector from an array of the same type and size.

Parameters
  • arr: The array to use to create this one.

Template Parameters
  • Impl: The implementation of the array interface.

auto operator=(const VecImpl &other) noexcept -> VecImpl&

Overload of copy assignment overload to copy the elements from another vector to this vector.

Return

A references to the modified vector.

Parameters
  • other: The other vector to copy from.

auto operator=(VecImpl &&other) noexcept -> VecImpl&

Overload of move assignment overload to move the elements from another vector to this vector.

Return

A references to the modified vector.

Parameters
  • other: The other vector to move.

template<typename OtherLayout>
auto operator=(const VecImpl<T, Size, OtherLayout> &other) noexcept -> VecImpl&

Overload of copy assignment overload to copy the elements from another vector with a different storage layout to this vector.

Return

A references to the modified vector.

Parameters
  • other: The other vector to copy from.

Template Parameters
  • OtherLayout: The layout of the other vector.

template<typename Impl>
auto operator=(const Array<Impl> &arr) noexcept -> VecImpl&

Overload of copy assignment overload to copy the elements from an array into this vector.

Return

A references to the modified vector.

Parameters
  • arr: The array to copy.

Template Parameters
  • Impl: The type of the array implementation.

template<typename OtherLayout>
auto operator=(VecImpl<T, Size, OtherLayout> &&other) noexcept -> VecImpl&

Overload of move assignment overload to copy the elements from another vector to this vector.

Return

A references to the modified vector.

Parameters
  • other: The other vector to move.

Template Parameters
  • OtherLayout: The layout of the other vector.

constexpr auto operator[](size_t i) const noexcept -> const Value&

Gets a constant reference to the element at position i.

Return

A const reference to the element at position i.

Parameters
  • i: The index of the element to get.

constexpr auto operator[](size_t i) noexcept -> Value&

Gets a reference to the element at position i.

Return

A reference to the element at position i.

Parameters
  • i: The index of the element to get.

template<typename Index>
auto component(Index &&i) noexcept -> Value&

Gets a reference to the ith component of the state.

Return

A reference to the component to get.

Parameters
  • i: The index of the component to get.

template<typename Index>
auto component(Index &&i) const noexcept -> const Value&

Gets a const reference to the ith component of the state.

Return

A const reference to the component to get.

Parameters
  • i: The index of the component to get.

constexpr auto size() const noexcept -> size_t

Gets the number of elements in the vector.

Return

The number of elements in the vector.

constexpr auto length_squared() const noexcept -> Value

Gets the squared length of the vector.

Return

The squared length of the vector.

constexpr auto length() const noexcept -> Value

Gets the length of the vector (L2 norm).

Return

The length of the vector.

constexpr auto normalize() noexcept -> void

Normalizes the vector.

Public Members

Storage storage_

The storage for the vector.

ZerothAccessor x

X component of vector.

FirstAccessor y

Y component of vector.

SecondAccessor z

Z component of vector.

ThirdAccessor w

W component of vector.

union ripple::VecImpl::[anonymous] [anonymous]

Docs

Access comprehensive developer documentation for Ripple

View Docs

Tutorials

Get tutorials to help with understand all features

View Tutorials

Examples

Find examples to help get started

View Examples