Blender  V3.3
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Friends | List of all members
blender::vec_base< T, Size > Struct Template Reference

#include <BLI_math_vec_types.hh>

Inheritance diagram for blender::vec_base< T, Size >:
blender::vec_struct_base< T, Size >

Public Types

using base_type = T
 
using uint_type = vec_base< as_uint_type< T >, Size >
 

Public Member Functions

 vec_base ()=default
 
 vec_base (uint value)
 
 vec_base (int value)
 
 vec_base (float value)
 
 vec_base (double value)
 
template<BLI_ENABLE_IF_VEC(Size,==2) >
 vec_base (T _x, T _y)
 
template<BLI_ENABLE_IF_VEC(Size,==3) >
 vec_base (T _x, T _y, T _z)
 
template<BLI_ENABLE_IF_VEC(Size,==4) >
 vec_base (T _x, T _y, T _z, T _w)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==3) >
constexpr vec_base (const vec_base< U, 2 > &xy, T z)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==3) >
constexpr vec_base (T x, const vec_base< U, 2 > &yz)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
 vec_base (vec_base< U, 3 > xyz, T w)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
 vec_base (T x, vec_base< U, 3 > yzw)
 
template<typename U , typename V , BLI_ENABLE_IF_VEC(Size,==4) >
 vec_base (vec_base< U, 2 > xy, vec_base< V, 2 > zw)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
 vec_base (vec_base< U, 2 > xy, T z, T w)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
 vec_base (T x, vec_base< U, 2 > yz, T w)
 
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
 vec_base (T x, T y, vec_base< U, 2 > zw)
 
template<typename U , int OtherSize, BLI_ENABLE_IF(OtherSize > Size) >
 vec_base (const vec_base< U, OtherSize > &other)
 
 vec_base (const T *ptr)
 
template<typename U , BLI_ENABLE_IF((std::is_convertible_v< U, T >)) >
 vec_base (const U *ptr)
 
 vec_base (const T(*ptr)[Size])
 
template<typename U >
 vec_base (const vec_base< U, Size > &vec)
 
 operator const T * () const
 
 operator T* ()
 
const Toperator[] (int index) const
 
Toperator[] (int index)
 
vec_baseoperator+= (const vec_base &b)
 
vec_baseoperator+= (const T &b)
 
vec_baseoperator-= (const vec_base &b)
 
vec_baseoperator-= (const T &b)
 
vec_baseoperator*= (T b)
 
vec_baseoperator*= (const vec_base &b)
 
vec_baseoperator/= (T b)
 
vec_baseoperator/= (const vec_base &b)
 
 BLI_INT_OP (T) friend vec_base operator&(const vec_base &a
 
 BLI_INT_OP (T) friend vec_base operator&(const vec_base &a
 
 BLI_INT_OP (T) friend vec_base operator&(T a
 

Public Attributes

const vec_baseb
 
T b
 
- Public Attributes inherited from blender::vec_struct_base< T, Size >
std::array< T, Size > values
 

Static Public Attributes

static constexpr int type_length = Size
 

Friends

vec_base operator+ (const vec_base &a, const vec_base &b)
 
vec_base operator+ (const vec_base &a, const T &b)
 
vec_base operator+ (const T &a, const vec_base &b)
 
vec_base operator- (const vec_base &a)
 
vec_base operator- (const vec_base &a, const vec_base &b)
 
vec_base operator- (const vec_base &a, const T &b)
 
vec_base operator- (const T &a, const vec_base &b)
 
vec_base operator* (const vec_base &a, const vec_base &b)
 
template<typename FactorT >
vec_base operator* (const vec_base &a, FactorT b)
 
vec_base operator* (T a, const vec_base &b)
 
vec_base operator/ (const vec_base &a, const vec_base &b)
 
vec_base operator/ (const vec_base &a, T b)
 
vec_base operator/ (T a, const vec_base &b)
 

Detailed Description

template<typename T, int Size>
struct blender::vec_base< T, Size >

Definition at line 65 of file BLI_math_vec_types.hh.

Member Typedef Documentation

◆ base_type

template<typename T , int Size>
using blender::vec_base< T, Size >::base_type = T

Definition at line 69 of file BLI_math_vec_types.hh.

◆ uint_type

template<typename T , int Size>
using blender::vec_base< T, Size >::uint_type = vec_base<as_uint_type<T>, Size>

Definition at line 70 of file BLI_math_vec_types.hh.

Constructor & Destructor Documentation

◆ vec_base() [1/21]

template<typename T , int Size>
blender::vec_base< T, Size >::vec_base ( )
default

◆ vec_base() [2/21]

template<typename T , int Size>
blender::vec_base< T, Size >::vec_base ( uint  value)
inlineexplicit

Definition at line 74 of file BLI_math_vec_types.hh.

References T.

◆ vec_base() [3/21]

template<typename T , int Size>
blender::vec_base< T, Size >::vec_base ( int  value)
inlineexplicit

Definition at line 81 of file BLI_math_vec_types.hh.

References T.

◆ vec_base() [4/21]

template<typename T , int Size>
blender::vec_base< T, Size >::vec_base ( float  value)
inlineexplicit

Definition at line 88 of file BLI_math_vec_types.hh.

References T.

◆ vec_base() [5/21]

template<typename T , int Size>
blender::vec_base< T, Size >::vec_base ( double  value)
inlineexplicit

Definition at line 95 of file BLI_math_vec_types.hh.

References T.

◆ vec_base() [6/21]

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size,==2) >
blender::vec_base< T, Size >::vec_base ( T  _x,
T  _y 
)
inline

Definition at line 105 of file BLI_math_vec_types.hh.

◆ vec_base() [7/21]

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size,==3) >
blender::vec_base< T, Size >::vec_base ( T  _x,
T  _y,
T  _z 
)
inline

Definition at line 111 of file BLI_math_vec_types.hh.

◆ vec_base() [8/21]

template<typename T , int Size>
template<BLI_ENABLE_IF_VEC(Size,==4) >
blender::vec_base< T, Size >::vec_base ( T  _x,
T  _y,
T  _z,
T  _w 
)
inline

Definition at line 118 of file BLI_math_vec_types.hh.

◆ vec_base() [9/21]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==3) >
constexpr blender::vec_base< T, Size >::vec_base ( const vec_base< U, 2 > &  xy,
T  z 
)
inlineconstexpr

Mixed scalar-vector constructors.

Definition at line 129 of file BLI_math_vec_types.hh.

◆ vec_base() [10/21]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==3) >
constexpr blender::vec_base< T, Size >::vec_base ( T  x,
const vec_base< U, 2 > &  yz 
)
inlineconstexpr

Definition at line 135 of file BLI_math_vec_types.hh.

◆ vec_base() [11/21]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
blender::vec_base< T, Size >::vec_base ( vec_base< U, 3 >  xyz,
T  w 
)
inline

Definition at line 141 of file BLI_math_vec_types.hh.

◆ vec_base() [12/21]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
blender::vec_base< T, Size >::vec_base ( T  x,
vec_base< U, 3 >  yzw 
)
inline

Definition at line 148 of file BLI_math_vec_types.hh.

◆ vec_base() [13/21]

template<typename T , int Size>
template<typename U , typename V , BLI_ENABLE_IF_VEC(Size,==4) >
blender::vec_base< T, Size >::vec_base ( vec_base< U, 2 >  xy,
vec_base< V, 2 >  zw 
)
inline

Definition at line 155 of file BLI_math_vec_types.hh.

◆ vec_base() [14/21]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
blender::vec_base< T, Size >::vec_base ( vec_base< U, 2 >  xy,
T  z,
T  w 
)
inline

Definition at line 162 of file BLI_math_vec_types.hh.

◆ vec_base() [15/21]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
blender::vec_base< T, Size >::vec_base ( T  x,
vec_base< U, 2 >  yz,
T  w 
)
inline

Definition at line 168 of file BLI_math_vec_types.hh.

◆ vec_base() [16/21]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF_VEC(Size,==4) >
blender::vec_base< T, Size >::vec_base ( T  x,
T  y,
vec_base< U, 2 >  zw 
)
inline

Definition at line 174 of file BLI_math_vec_types.hh.

◆ vec_base() [17/21]

template<typename T , int Size>
template<typename U , int OtherSize, BLI_ENABLE_IF(OtherSize > Size) >
blender::vec_base< T, Size >::vec_base ( const vec_base< U, OtherSize > &  other)
inlineexplicit

Masking.

Definition at line 182 of file BLI_math_vec_types.hh.

References T.

◆ vec_base() [18/21]

template<typename T , int Size>
blender::vec_base< T, Size >::vec_base ( const T ptr)
inline

Conversion from pointers (from C-style vectors).

Definition at line 193 of file BLI_math_vec_types.hh.

References ptr.

◆ vec_base() [19/21]

template<typename T , int Size>
template<typename U , BLI_ENABLE_IF((std::is_convertible_v< U, T >)) >
blender::vec_base< T, Size >::vec_base ( const U ptr)
inlineexplicit

Definition at line 201 of file BLI_math_vec_types.hh.

References ptr.

◆ vec_base() [20/21]

template<typename T , int Size>
blender::vec_base< T, Size >::vec_base ( const T(*)  ptr[Size])
inline

Definition at line 208 of file BLI_math_vec_types.hh.

◆ vec_base() [21/21]

template<typename T , int Size>
template<typename U >
blender::vec_base< T, Size >::vec_base ( const vec_base< U, Size > &  vec)
inlineexplicit

Conversion from other vector types.

Definition at line 214 of file BLI_math_vec_types.hh.

References T.

Member Function Documentation

◆ BLI_INT_OP() [1/3]

template<typename T , int Size>
blender::vec_base< T, Size >::BLI_INT_OP ( T  ) const &

Binary operators.

◆ BLI_INT_OP() [2/3]

template<typename T , int Size>
blender::vec_base< T, Size >::BLI_INT_OP ( T  ) const &

◆ BLI_INT_OP() [3/3]

template<typename T , int Size>
blender::vec_base< T, Size >::BLI_INT_OP ( T  ) &

◆ operator const T *()

template<typename T , int Size>
blender::vec_base< T, Size >::operator const T * ( ) const
inline

C-style pointer dereference.

Definition at line 223 of file BLI_math_vec_types.hh.

◆ operator T*()

template<typename T , int Size>
blender::vec_base< T, Size >::operator T* ( )
inline

Definition at line 228 of file BLI_math_vec_types.hh.

◆ operator*=() [1/2]

template<typename T , int Size>
vec_base& blender::vec_base< T, Size >::operator*= ( const vec_base< T, Size > &  b)
inline

Definition at line 343 of file BLI_math_vec_types.hh.

References blender::vec_base< T, Size >::b, and BLI_VEC_OP_IMPL_SELF.

◆ operator*=() [2/2]

template<typename T , int Size>
vec_base& blender::vec_base< T, Size >::operator*= ( T  b)
inline

Definition at line 338 of file BLI_math_vec_types.hh.

References blender::vec_base< T, Size >::b, and BLI_VEC_OP_IMPL_SELF.

◆ operator+=() [1/2]

template<typename T , int Size>
vec_base& blender::vec_base< T, Size >::operator+= ( const T b)
inline

Definition at line 288 of file BLI_math_vec_types.hh.

References blender::vec_base< T, Size >::b, and BLI_VEC_OP_IMPL_SELF.

◆ operator+=() [2/2]

template<typename T , int Size>
vec_base& blender::vec_base< T, Size >::operator+= ( const vec_base< T, Size > &  b)
inline

Definition at line 283 of file BLI_math_vec_types.hh.

References blender::vec_base< T, Size >::b, and BLI_VEC_OP_IMPL_SELF.

◆ operator-=() [1/2]

template<typename T , int Size>
vec_base& blender::vec_base< T, Size >::operator-= ( const T b)
inline

Definition at line 318 of file BLI_math_vec_types.hh.

References blender::vec_base< T, Size >::b, and BLI_VEC_OP_IMPL_SELF.

◆ operator-=() [2/2]

template<typename T , int Size>
vec_base& blender::vec_base< T, Size >::operator-= ( const vec_base< T, Size > &  b)
inline

Definition at line 313 of file BLI_math_vec_types.hh.

References blender::vec_base< T, Size >::b, and BLI_VEC_OP_IMPL_SELF.

◆ operator/=() [1/2]

template<typename T , int Size>
vec_base& blender::vec_base< T, Size >::operator/= ( const vec_base< T, Size > &  b)
inline

◆ operator/=() [2/2]

template<typename T , int Size>
vec_base& blender::vec_base< T, Size >::operator/= ( T  b)
inline

◆ operator[]() [1/2]

template<typename T , int Size>
T& blender::vec_base< T, Size >::operator[] ( int  index)
inline

Definition at line 242 of file BLI_math_vec_types.hh.

References BLI_assert, and T.

◆ operator[]() [2/2]

template<typename T , int Size>
const T& blender::vec_base< T, Size >::operator[] ( int  index) const
inline

Array access.

Definition at line 235 of file BLI_math_vec_types.hh.

References BLI_assert, and T.

Friends And Related Function Documentation

◆ operator* [1/3]

template<typename T , int Size>
vec_base operator* ( const vec_base< T, Size > &  a,
const vec_base< T, Size > &  b 
)
friend

Definition at line 323 of file BLI_math_vec_types.hh.

◆ operator* [2/3]

template<typename T , int Size>
template<typename FactorT >
vec_base operator* ( const vec_base< T, Size > &  a,
FactorT  b 
)
friend

Definition at line 328 of file BLI_math_vec_types.hh.

◆ operator* [3/3]

template<typename T , int Size>
vec_base operator* ( T  a,
const vec_base< T, Size > &  b 
)
friend

Definition at line 333 of file BLI_math_vec_types.hh.

◆ operator+ [1/3]

template<typename T , int Size>
vec_base operator+ ( const T a,
const vec_base< T, Size > &  b 
)
friend

Definition at line 278 of file BLI_math_vec_types.hh.

◆ operator+ [2/3]

template<typename T , int Size>
vec_base operator+ ( const vec_base< T, Size > &  a,
const T b 
)
friend

Definition at line 273 of file BLI_math_vec_types.hh.

◆ operator+ [3/3]

template<typename T , int Size>
vec_base operator+ ( const vec_base< T, Size > &  a,
const vec_base< T, Size > &  b 
)
friend

Arithmetic operators.

Definition at line 268 of file BLI_math_vec_types.hh.

◆ operator- [1/4]

template<typename T , int Size>
vec_base operator- ( const T a,
const vec_base< T, Size > &  b 
)
friend

Definition at line 308 of file BLI_math_vec_types.hh.

◆ operator- [2/4]

template<typename T , int Size>
vec_base operator- ( const vec_base< T, Size > &  a)
friend

Definition at line 293 of file BLI_math_vec_types.hh.

◆ operator- [3/4]

template<typename T , int Size>
vec_base operator- ( const vec_base< T, Size > &  a,
const T b 
)
friend

Definition at line 303 of file BLI_math_vec_types.hh.

◆ operator- [4/4]

template<typename T , int Size>
vec_base operator- ( const vec_base< T, Size > &  a,
const vec_base< T, Size > &  b 
)
friend

Definition at line 298 of file BLI_math_vec_types.hh.

◆ operator/ [1/3]

template<typename T , int Size>
vec_base operator/ ( const vec_base< T, Size > &  a,
const vec_base< T, Size > &  b 
)
friend

Definition at line 348 of file BLI_math_vec_types.hh.

◆ operator/ [2/3]

template<typename T , int Size>
vec_base operator/ ( const vec_base< T, Size > &  a,
T  b 
)
friend

Definition at line 356 of file BLI_math_vec_types.hh.

◆ operator/ [3/3]

template<typename T , int Size>
vec_base operator/ ( T  a,
const vec_base< T, Size > &  b 
)
friend

Definition at line 362 of file BLI_math_vec_types.hh.

Member Data Documentation

◆ b [1/2]

template<typename T , int Size>
const vec_base & blender::vec_base< T, Size >::b

◆ b [2/2]

template<typename T , int Size>
T blender::vec_base< T, Size >::b
Initial value:
{
BLI_VEC_OP_IMPL(ret, i, ret[i] = a[i] & b)

Definition at line 389 of file BLI_math_vec_types.hh.

◆ type_length

template<typename T , int Size>
constexpr int blender::vec_base< T, Size >::type_length = Size
staticconstexpr

Definition at line 67 of file BLI_math_vec_types.hh.


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