#include <ShGeneric.hpp>
Inheritance diagram for SH::ShGeneric< N, T >:
Public Types | |
typedef T | storage_type |
typedef ShHostType< T >::type | host_type |
typedef ShMemType< T >::type | mem_type |
typedef ShDataVariant< T, SH_HOST > | VariantType |
typedef ShPointer< VariantType > | VariantTypePtr |
typedef ShPointer< const VariantType > | VariantTypeCPtr |
Public Member Functions | |
ShGeneric (const ShVariableNodePtr &node, ShSwizzle swizzle, bool neg) | |
ShGeneric & | operator= (const ShGeneric &other) |
template<typename T2> | |
ShGeneric & | operator= (const ShGeneric< N, T2 > &other) |
ShGeneric & | operator= (const ShProgram &other) |
template<typename T2> | |
ShGeneric & | operator+= (const ShGeneric< N, T2 > &right) |
template<typename T2> | |
ShGeneric & | operator-= (const ShGeneric< N, T2 > &right) |
template<typename T2> | |
ShGeneric & | operator *= (const ShGeneric< N, T2 > &right) |
template<typename T2> | |
ShGeneric & | operator/= (const ShGeneric< N, T2 > &right) |
template<typename T2> | |
ShGeneric & | operator%= (const ShGeneric< N, T2 > &right) |
template<typename T2> | |
ShGeneric & | operator+= (const ShGeneric< 1, T2 > &right) |
template<typename T2> | |
ShGeneric & | operator-= (const ShGeneric< 1, T2 > &right) |
template<typename T2> | |
ShGeneric & | operator *= (const ShGeneric< 1, T2 > &right) |
template<typename T2> | |
ShGeneric & | operator/= (const ShGeneric< 1, T2 > &right) |
template<typename T2> | |
ShGeneric & | operator%= (const ShGeneric< 1, T2 > &right) |
ShGeneric & | operator+= (host_type) |
ShGeneric & | operator-= (host_type) |
ShGeneric & | operator *= (host_type) |
ShGeneric & | operator/= (host_type) |
ShGeneric & | operator%= (host_type) |
ShGeneric | operator- () const |
ShGeneric | operator() () const |
Identity swizzle. | |
ShGeneric< 1, T > | operator() (int) const |
ShGeneric< 1, T > | operator[] (int) const |
ShGeneric< 2, T > | operator() (int, int) const |
ShGeneric< 3, T > | operator() (int, int, int) const |
ShGeneric< 4, T > | operator() (int, int, int, int) const |
void | range (host_type low, host_type high) |
Range Metadata. | |
VariantType | lowBound () const |
host_type | lowBound (int index) const |
VariantType | highBound () const |
host_type | highBound (int index) const |
template<int N2> | |
ShGeneric< N2, T > | swiz (int indices[]) const |
void | getValues (host_type dest[]) const |
Get the values of this variable, with swizzling taken into account. | |
host_type | getValue (int index) const |
void | setValue (int index, const host_type &value) |
Set the values of this variable, using the swizzle as a writemask. | |
void | setValues (const host_type values[]) |
template<typename T2> | |
ShGeneric (const ShGeneric< N, T2 > &other) | |
Static Public Attributes | |
static const ShValueType | value_type |
static const int | typesize |
Protected Member Functions | |
ShGeneric (const ShVariableNodePtr &node) |
This class is provided to make definition of functions that work over n-tuples of particular types easier.
ShAttrib derives from ShGeneric. Unlike ShGeneric, which only has two template parameters, ShAttrib has four template parameters. This would make writing functions quite ugly. E.g.:
Without Generic:
template<int N, typename T, ShBindingType B1, ShBindingType B2, bool S1, bool S2> ShAttrib<N, SH_TEMP, T> add(const ShAttrib<N, B1, T, S1>& a, const ShAttrib<N, B2, T, S2>& b);
With Generic:
template<int N, typename T> ShAttrib<N, SH_TEMP, T> add(const ShGeneric<N, T>& a, const ShGeneric<N, T>& b);
This class is explicitly instantiated for T = float with 1 <= N <= 4.
Definition at line 64 of file ShGeneric.hpp.