#include <ShAttrib.hpp>
Inheritance diagram for SH::ShAttrib< N, Binding, T, Swizzled >:
Public Types | |
typedef T | ValueType |
typedef ShAttrib< N, SH_INPUT, T > | InputType |
typedef ShAttrib< N, SH_OUTPUT, T > | OutputType |
typedef ShAttrib< N, SH_INOUT, T > | InOutType |
typedef ShAttrib< N, SH_TEMP, T > | TempType |
typedef ShAttrib< N, SH_CONST, T > | ConstType |
Public Member Functions | |
ShAttrib (const ShGeneric< N, T > &other) | |
ShAttrib (const ShAttrib< N, Binding, T, Swizzled > &other) | |
ShAttrib (const ShVariableNodePtr &node, const ShSwizzle &swizzle, bool neg) | |
ShAttrib (T data[N]) | |
ShAttrib & | operator= (const ShGeneric< N, T > &other) |
ShAttrib & | operator= (const ShAttrib< N, Binding, T, Swizzled > &other) |
ShAttrib & | operator= (const ShProgram &prg) |
ShAttrib & | operator+= (const ShGeneric< N, T > &right) |
ShAttrib & | operator-= (const ShGeneric< N, T > &right) |
ShAttrib & | operator *= (const ShGeneric< N, T > &right) |
ShAttrib & | operator/= (const ShGeneric< N, T > &right) |
ShAttrib & | operator%= (const ShGeneric< N, T > &right) |
ShAttrib & | operator *= (T) |
ShAttrib & | operator/= (T) |
ShAttrib & | operator%= (T) |
ShAttrib & | operator+= (T) |
ShAttrib & | operator-= (T) |
ShAttrib & | operator+= (const ShGeneric< 1, T > &) |
ShAttrib & | operator-= (const ShGeneric< 1, T > &) |
ShAttrib & | operator *= (const ShGeneric< 1, T > &) |
ShAttrib & | operator/= (const ShGeneric< 1, T > &) |
ShAttrib & | operator%= (const ShGeneric< 1, T > &) |
ShAttrib< 1, Binding, T, true > | operator() (int) const |
ShAttrib< 2, Binding, T, true > | operator() (int, int) const |
ShAttrib< 3, Binding, T, true > | operator() (int, int, int) const |
ShAttrib< 4, Binding, T, true > | operator() (int, int, int, int) const |
ShAttrib< 1, Binding, T, true > | operator[] (int) const |
template<int N2> ShAttrib< N2, Binding, T, true > | swiz (int indices[]) const |
ShAttrib | operator- () const |
Static Public Attributes | |
const int | typesize |
const ShBindingType | binding_type |
const ShSemanticType | semantic_type |
The reason we have the Swizzle template argument is so that swizzled variables, which need to be copied (i.e. have an ASN statement generated) when another variable is initialized through them, may otherwise be simply placed into new variables (through copy constructor eliding, as per paragraph 12.8.15 of the C++ standard), causing variables to share ShVariableNodes when they shouldn't. By making swizzled variables separate types we enforce calling a conversion constructor instead, which cannot be elided. If this paragraph confuses you, and you're not modifying Sh internals, you may safely ignore it.
Definition at line 61 of file ShAttrib.hpp.