4.4.1
Freundlich's C++ toolkit
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions
fcppt::math::matrix::object< T, R, C, S > Class Template Reference

Detailed Description

template<typename T, fcppt::math::size_type R, fcppt::math::size_type C, typename S>
class fcppt::math::matrix::object< T, R, C, S >

A class representing a static matrix.

Represents a static R by C matrix, which is a matrix consisting of R rows and C columns.

Template Parameters
TThe matrix's value_type
RThe number of rows
CThe number of columns
SThe matrix's storage type

See fcppt.math.matrix for more information.

Public Types

using static_rows = fcppt::math::static_size< R >
 
using static_columns = fcppt::math::static_size< C >
 
using static_size = static_rows
 
using dim_wrapper = fcppt::math::static_size< static_rows::value *static_columns::value >
 
using storage_type = S
 A typedef for the S parameter.
 
using size_type = fcppt::math::size_type
 A type that counts the number of elements in a matrix.
 
using difference_type = fcppt::math::difference_type
 A type that provides the difference between the addresses of two elements in a matrix.
 
using value_type = T
 A type that represents the data type stored in a matrix.
 
using reference = fcppt::math::vector::object< T, C, fcppt::math::matrix::detail::row_view< T, C, S > >
 A reference to a row of the matrix.
 
using inner_reference = typename reference::reference
 A reference to an element of the matrix.
 
using const_reference = fcppt::math::vector::object< T, C, fcppt::math::matrix::detail::row_view< T, C, S const > >
 A const reference to a row of the matrix.
 
using const_inner_reference = typename const_reference::const_reference
 A const reference to an element of the matrix.
 
using row_type = fcppt::math::matrix::row_type< T, C >
 The type of a row, which is a vector of C elements.
 

Public Member Functions

 object (fcppt::no_init const &)
 Construct an uninitialized matrix.
 
 object (storage_type &&)
 Construct a matrix from a storage source.
 
template<typename... Args, typename = std::enable_if_t<std::conjunction_v< std::bool_constant<sizeof...(Args) == R>, std::is_same<row_type, std::remove_cvref_t<Args>>...>>>
 object (Args &&...)
 Constructs a matrix from R rows.
 
template<typename OtherStorage >
 object (fcppt::math::matrix::object< T, R, C, OtherStorage > const &)
 Create a matrix from a matrix with the same dimension and value type but different storage type.
 
template<typename OtherStorage >
objectoperator= (fcppt::math::matrix::object< T, R, C, OtherStorage > const &)
 Copy the values from a different matrix of the same size but different storage type.
 
template<typename S2 >
objectoperator+= (object< T, R, C, S2 > const &)
 
template<typename S2 >
objectoperator-= (object< T, R, C, S2 > const &)
 
objectoperator*= (value_type const &)
 Multiply a matrix by a scalar.
 
reference get_unsafe (size_type)
 Returns a reference to a row in the matrix.
 
const_reference get_unsafe (size_type) const
 Returns a reference to a (constant) row in the matrix.
 
Sstorage ()
 
S conststorage () const
 
inner_reference m00 ()
 
const_inner_reference m00 () const
 
inner_reference m01 ()
 
const_inner_reference m01 () const
 
inner_reference m02 ()
 
const_inner_reference m02 () const
 
inner_reference m03 ()
 
const_inner_reference m03 () const
 
inner_reference m10 ()
 
const_inner_reference m10 () const
 
inner_reference m11 ()
 
const_inner_reference m11 () const
 
inner_reference m12 ()
 
const_inner_reference m12 () const
 
inner_reference m13 ()
 
const_inner_reference m13 () const
 
inner_reference m20 ()
 
const_inner_reference m20 () const
 
inner_reference m21 ()
 
const_inner_reference m21 () const
 
inner_reference m22 ()
 
const_inner_reference m22 () const
 
inner_reference m23 ()
 
const_inner_reference m23 () const
 
inner_reference m30 ()
 
const_inner_reference m30 () const
 
inner_reference m31 ()
 
const_inner_reference m31 () const
 
inner_reference m32 ()
 
const_inner_reference m32 () const
 
inner_reference m33 ()
 
const_inner_reference m33 () const
 

Static Public Member Functions

static constexpr size_type rows ()
 Returns the number of rows in the matrix.
 
static constexpr size_type columns ()
 Returns the number of columns in the matrix.
 

Member Typedef Documentation

◆ const_inner_reference

A const reference to an element of the matrix.

◆ const_reference

using fcppt::math::matrix::object< T, R, C, S >::const_reference = fcppt::math::vector::object<T, C, fcppt::math::matrix::detail::row_view<T, C, S const> >

A const reference to a row of the matrix.

◆ difference_type

A type that provides the difference between the addresses of two elements in a matrix.

◆ dim_wrapper

using fcppt::math::matrix::object< T, R, C, S >::dim_wrapper = fcppt::math::static_size<static_rows::value * static_columns::value>

◆ inner_reference

A reference to an element of the matrix.

◆ reference

using fcppt::math::matrix::object< T, R, C, S >::reference = fcppt::math::vector::object<T, C, fcppt::math::matrix::detail::row_view<T, C, S> >

A reference to a row of the matrix.

◆ row_type

The type of a row, which is a vector of C elements.

◆ size_type

A type that counts the number of elements in a matrix.

◆ static_columns

◆ static_rows

◆ static_size

◆ storage_type

A typedef for the S parameter.

◆ value_type

A type that represents the data type stored in a matrix.

Constructor & Destructor Documentation

◆ object() [1/4]

Construct an uninitialized matrix.

Warning
The content of the matrix will be undefined (not null) after initialization

◆ object() [2/4]

Construct a matrix from a storage source.

◆ object() [3/4]

template<typename... Args, typename = std::enable_if_t<std::conjunction_v< std::bool_constant<sizeof...(Args) == R>, std::is_same<row_type, std::remove_cvref_t<Args>>...>>>
fcppt::math::matrix::object< T, R, C, S >::object ( Args &&  ...)
explicit

Constructs a matrix from R rows.

Constructs a matrix by using R arguments of type fcppt::math::matrix::object::row_type. You can use fcppt::math::matrix::row to create them.

◆ object() [4/4]

Create a matrix from a matrix with the same dimension and value type but different storage type.

Template Parameters
OtherStorageThe other matrix's storage type

Member Function Documentation

◆ columns()

Returns the number of columns in the matrix.

◆ get_unsafe() [1/2]

Returns a reference to a row in the matrix.

Warning
Behaviour is undefined if the index is out of range.

◆ get_unsafe() [2/2]

Returns a reference to a (constant) row in the matrix.

Warning
Behaviour is undefined if the index is out of range.

◆ m00() [1/2]

◆ m00() [2/2]

◆ m01() [1/2]

◆ m01() [2/2]

◆ m02() [1/2]

◆ m02() [2/2]

◆ m03() [1/2]

◆ m03() [2/2]

◆ m10() [1/2]

◆ m10() [2/2]

◆ m11() [1/2]

◆ m11() [2/2]

◆ m12() [1/2]

◆ m12() [2/2]

◆ m13() [1/2]

◆ m13() [2/2]

◆ m20() [1/2]

◆ m20() [2/2]

◆ m21() [1/2]

◆ m21() [2/2]

◆ m22() [1/2]

◆ m22() [2/2]

◆ m23() [1/2]

◆ m23() [2/2]

◆ m30() [1/2]

◆ m30() [2/2]

◆ m31() [1/2]

◆ m31() [2/2]

◆ m32() [1/2]

◆ m32() [2/2]

◆ m33() [1/2]

◆ m33() [2/2]

◆ operator*=()

Multiply a matrix by a scalar.

◆ operator+=()

◆ operator-=()

◆ operator=()

Copy the values from a different matrix of the same size but different storage type.

Template Parameters
OtherStorageThe other matrix's storage type

◆ rows()

Returns the number of rows in the matrix.

◆ storage() [1/2]

◆ storage() [2/2]