diff --git a/glm/core/_swizzle.hpp b/glm/core/_swizzle.hpp index d97de67b..bf1d20dc 100644 --- a/glm/core/_swizzle.hpp +++ b/glm/core/_swizzle.hpp @@ -191,7 +191,7 @@ namespace detail typedef ValueType value_type; struct Stub {}; - _swizzle_base2& operator= (Stub const &) {} + _swizzle_base2& operator= (Stub const &) { return *this; } value_type operator[] (size_t i) const { @@ -640,6 +640,22 @@ namespace glm struct { _swizzle<4, T, P, V, 0,2,3,1> E0 ## E2 ## E3 ## E1; }; \ struct { _swizzle<4, T, P, V, 0,2,3,2> E0 ## E2 ## E3 ## E2; }; \ struct { _swizzle<4, T, P, V, 0,2,3,3> E0 ## E2 ## E3 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,3,0,0> E0 ## E3 ## E0 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,3,0,1> E0 ## E3 ## E0 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,3,0,2> E0 ## E3 ## E0 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,3,0,3> E0 ## E3 ## E0 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,3,1,0> E0 ## E3 ## E1 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,3,1,1> E0 ## E3 ## E1 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,3,1,2> E0 ## E3 ## E1 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,3,1,3> E0 ## E3 ## E1 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,3,2,0> E0 ## E3 ## E2 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,3,2,1> E0 ## E3 ## E2 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,3,2,2> E0 ## E3 ## E2 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,3,2,3> E0 ## E3 ## E2 ## E3; }; \ + struct { _swizzle<4, T, P, V, 0,3,3,0> E0 ## E3 ## E3 ## E0; }; \ + struct { _swizzle<4, T, P, V, 0,3,3,1> E0 ## E3 ## E3 ## E1; }; \ + struct { _swizzle<4, T, P, V, 0,3,3,2> E0 ## E3 ## E3 ## E2; }; \ + struct { _swizzle<4, T, P, V, 0,3,3,3> E0 ## E3 ## E3 ## E3; }; \ struct { _swizzle<4, T, P, V, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ struct { _swizzle<4, T, P, V, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ struct { _swizzle<4, T, P, V, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \ @@ -831,6 +847,6 @@ namespace glm struct { _swizzle<4, T, P, V, 3,3,3,0> E3 ## E3 ## E3 ## E0; }; \ struct { _swizzle<4, T, P, V, 3,3,3,1> E3 ## E3 ## E3 ## E1; }; \ struct { _swizzle<4, T, P, V, 3,3,3,2> E3 ## E3 ## E3 ## E2; }; \ - struct { _swizzle<4, T, P, V, 3,3,3,3> E3 ## E3 ## E3 ## E3; }; + struct { _swizzle<4, T, P, V, 3,3,3,3> E3 ## E3 ## E3 ## E3; }; #endif//glm_core_swizzle diff --git a/glm/core/func_common.hpp b/glm/core/func_common.hpp index bcc589f3..60dec236 100644 --- a/glm/core/func_common.hpp +++ b/glm/core/func_common.hpp @@ -51,7 +51,7 @@ namespace glm /// @see GLSL abs man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType abs(genType const & x); + GLM_FUNC_DECL genType abs(genType const & x); /// Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. /// @@ -60,8 +60,8 @@ namespace glm /// @see GLSL sign man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType sign(genType const & x); - + GLM_FUNC_DECL genType sign(genType const & x); + /// Returns a value equal to the nearest integer that is less then or equal to x. /// /// @tparam genType Floating-point scalar or vector types. @@ -69,7 +69,7 @@ namespace glm /// @see GLSL floor man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType floor(genType const & x); + GLM_FUNC_DECL genType floor(genType const & x); /// Returns a value equal to the nearest integer to x /// whose absolute value is not larger than the absolute value of x. @@ -79,7 +79,7 @@ namespace glm /// @see GLSL trunc man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType trunc(genType const & x); + GLM_FUNC_DECL genType trunc(genType const & x); /// Returns a value equal to the nearest integer to x. /// The fraction 0.5 will round in a direction chosen by the @@ -92,8 +92,8 @@ namespace glm /// @see GLSL round man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType round(genType const & x); - + GLM_FUNC_DECL genType round(genType const & x); + /// Returns a value equal to the nearest integer to x. /// A fractional part of 0.5 will round toward the nearest even /// integer. (Both 3.5 and 4.5 for x will return 4.0.) @@ -104,7 +104,7 @@ namespace glm /// @see GLSL 4.20.8 specification, section 8.3 Common Functions /// @see New round to even technique template - genType roundEven(genType const & x); + GLM_FUNC_DECL genType roundEven(genType const & x); /// Returns a value equal to the nearest integer /// that is greater than or equal to x. @@ -114,7 +114,7 @@ namespace glm /// @see GLSL ceil man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType ceil(genType const & x); + GLM_FUNC_DECL genType ceil(genType const & x); /// Return x - floor(x). /// @@ -123,7 +123,7 @@ namespace glm /// @see GLSL fract man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType fract(genType const & x); + GLM_FUNC_DECL genType fract(genType const & x); /// Modulus. Returns x - y * floor(x / y) /// for each component in x using the floating point value y. @@ -133,7 +133,7 @@ namespace glm /// @see GLSL mod man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType mod( + GLM_FUNC_DECL genType mod( genType const & x, genType const & y); @@ -145,7 +145,7 @@ namespace glm /// @see GLSL mod man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType mod( + GLM_FUNC_DECL genType mod( genType const & x, typename genType::value_type const & y); @@ -159,7 +159,7 @@ namespace glm /// @see GLSL modf man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType modf( + GLM_FUNC_DECL genType modf( genType const & x, genType & i); @@ -168,14 +168,14 @@ namespace glm /// @tparam genType Floating-point or integer; scalar or vector types. /// /// @see GLSL min man page - /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions<<<<<<< HEAD template - genType min( + GLM_FUNC_DECL genType min( genType const & x, genType const & y); template - genType min( + GLM_FUNC_DECL genType min( genType const & x, typename genType::value_type const & y); @@ -186,12 +186,12 @@ namespace glm /// @see GLSL max man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType max( + GLM_FUNC_DECL genType max( genType const & x, genType const & y); template - genType max( + GLM_FUNC_DECL genType max( genType const & x, typename genType::value_type const & y); @@ -203,13 +203,13 @@ namespace glm /// @see GLSL clamp man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType clamp( + GLM_FUNC_DECL genType clamp( genType const & x, genType const & minVal, genType const & maxVal); template - genType clamp( + GLM_FUNC_DECL genType clamp( genType const & x, typename genType::value_type const & minVal, typename genType::value_type const & maxVal); @@ -257,19 +257,22 @@ namespace glm /// glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter. /// @endcode template - genTypeT mix(genTypeT const & x, genTypeT const & y, genTypeU const & a); + GLM_FUNC_DECL genTypeT mix( + genTypeT const & x, + genTypeT const & y, + genTypeU const & a); - //! Returns 0.0 if x < edge, otherwise it returns 1.0. - //! + /// Returns 0.0 if x < edge, otherwise it returns 1.0. + /// /// @see GLSL step man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType step( + GLM_FUNC_DECL genType step( genType const & edge, genType const & x); template - genType step( + GLM_FUNC_DECL genType step( typename genType::value_type const & edge, genType const & x); @@ -288,13 +291,13 @@ namespace glm /// @see GLSL smoothstep man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType smoothstep( + GLM_FUNC_DECL genType smoothstep( genType const & edge0, genType const & edge1, genType const & x); template - genType smoothstep( + GLM_FUNC_DECL genType smoothstep( typename genType::value_type const & edge0, typename genType::value_type const & edge1, genType const & x); @@ -312,7 +315,7 @@ namespace glm /// @see GLSL isnan man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - typename genType::bool_type isnan(genType const & x); + GLM_FUNC_DECL typename genType::bool_type isnan(genType const & x); /// Returns true if x holds a positive infinity or negative /// infinity representation in the underlying implementation's @@ -325,7 +328,7 @@ namespace glm /// @see GLSL isinf man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - typename genType::bool_type isinf(genType const & x); + GLM_FUNC_DECL typename genType::bool_type isinf(genType const & x); /// Returns a signed integer value representing /// the encoding of a floating-point value. The floatingpoint @@ -337,7 +340,7 @@ namespace glm /// @see GLSL floatBitsToInt man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genIType floatBitsToInt(genType const & value); + GLM_FUNC_DECL genIType floatBitsToInt(genType const & value); /// Returns a unsigned integer value representing /// the encoding of a floating-point value. The floatingpoint @@ -349,7 +352,7 @@ namespace glm /// @see GLSL floatBitsToUint man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genUType floatBitsToUint(genType const & value); + GLM_FUNC_DECL genUType floatBitsToUint(genType const & value); /// Returns a floating-point value corresponding to a signed /// integer encoding of a floating-point value. @@ -365,7 +368,7 @@ namespace glm /// /// @todo Clarify this declaration, we don't need to actually specify the return type template - genType intBitsToFloat(genIType const & value); + GLM_FUNC_DECL genType intBitsToFloat(genIType const & value); /// Returns a floating-point value corresponding to a /// unsigned integer encoding of a floating-point value. @@ -381,7 +384,7 @@ namespace glm /// /// @todo Clarify this declaration, we don't need to actually specify the return type template - genType uintBitsToFloat(genUType const & value); + GLM_FUNC_DECL genType uintBitsToFloat(genUType const & value); /// Computes and returns a * b + c. /// @@ -390,7 +393,7 @@ namespace glm /// @see GLSL fma man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType fma(genType const & a, genType const & b, genType const & c); + GLM_FUNC_DECL genType fma(genType const & a, genType const & b, genType const & c); /// Splits x into a floating-point significand in the range /// [0.5, 1.0) and an integral exponent of two, such that: @@ -407,7 +410,7 @@ namespace glm /// @see GLSL frexp man page /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType frexp(genType const & x, genIType & exp); + GLM_FUNC_DECL genType frexp(genType const & x, genIType & exp); /// Builds a floating-point number from x and the /// corresponding integral exponent of two in exp, returning: @@ -421,7 +424,7 @@ namespace glm /// @see GLSL ldexp man page; /// @see GLSL 4.20.8 specification, section 8.3 Common Functions template - genType ldexp(genType const & x, genIType const & exp); + GLM_FUNC_DECL genType ldexp(genType const & x, genIType const & exp); /// @} }//namespace glm diff --git a/glm/core/func_common.inl b/glm/core/func_common.inl index 01d12a7b..b666a91c 100644 --- a/glm/core/func_common.inl +++ b/glm/core/func_common.inl @@ -36,7 +36,7 @@ namespace detail template struct Abs_ { - static genFIType get(genFIType const & x) + GLM_FUNC_QUALIFIER static genFIType get(genFIType const & x) { GLM_STATIC_ASSERT( detail::type::is_float || @@ -49,7 +49,7 @@ namespace detail template struct Abs_ { - static genFIType get(genFIType const & x) + GLM_FUNC_QUALIFIER static genFIType get(genFIType const & x) { GLM_STATIC_ASSERT( detail::type::is_uint, "'abs' only accept floating-point and integer inputs"); diff --git a/glm/core/func_exponential.hpp b/glm/core/func_exponential.hpp index 03da794a..dc76fcbb 100644 --- a/glm/core/func_exponential.hpp +++ b/glm/core/func_exponential.hpp @@ -50,7 +50,7 @@ namespace glm /// @see GLSL pow man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType pow(genType const & base, genType const & exponent); + GLM_FUNC_DECL genType pow(genType const & base, genType const & exponent); /// Returns the natural exponentiation of x, i.e., e^x. /// @@ -60,7 +60,7 @@ namespace glm /// @see GLSL exp man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType exp(genType const & x); + GLM_FUNC_DECL genType exp(genType const & x); /// Returns the natural logarithm of x, i.e., /// returns the value y which satisfies the equation x = e^y. @@ -72,7 +72,7 @@ namespace glm /// @see GLSL log man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType log(genType const & x); + GLM_FUNC_DECL genType log(genType const & x); /// Returns 2 raised to the x power. /// @@ -82,7 +82,7 @@ namespace glm /// @see GLSL exp2 man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType exp2(genType const & x); + GLM_FUNC_DECL genType exp2(genType const & x); /// Returns the base 2 log of x, i.e., returns the value y, /// which satisfies the equation x = 2 ^ y. @@ -93,7 +93,7 @@ namespace glm /// @see GLSL log2 man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType log2(genType const & x); + GLM_FUNC_DECL genType log2(genType const & x); /// Returns the positive square root of x. /// @@ -103,7 +103,7 @@ namespace glm /// @see GLSL sqrt man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType sqrt(genType const & x); + GLM_FUNC_DECL genType sqrt(genType const & x); /// Returns the reciprocal of the positive square root of x. /// @@ -113,7 +113,7 @@ namespace glm /// @see GLSL inversesqrt man page /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions template - genType inversesqrt(genType const & x); + GLM_FUNC_DECL genType inversesqrt(genType const & x); /// @} }//namespace glm diff --git a/glm/core/func_exponential.inl b/glm/core/func_exponential.inl index e76a927e..1b08786d 100644 --- a/glm/core/func_exponential.inl +++ b/glm/core/func_exponential.inl @@ -146,6 +146,7 @@ namespace _detail ) { GLM_STATIC_ASSERT(detail::type::is_float, "'inversesqrt' only accept floating-point input"); + assert(x > genType(0)); return genType(1) / ::std::sqrt(x); } diff --git a/glm/core/func_geometric.hpp b/glm/core/func_geometric.hpp index 9c724167..2c44a9ee 100644 --- a/glm/core/func_geometric.hpp +++ b/glm/core/func_geometric.hpp @@ -48,7 +48,7 @@ namespace glm /// @see GLSL length man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - typename genType::value_type length( + GLM_FUNC_DECL typename genType::value_type length( genType const & x); /// Returns the distance betwwen p0 and p1, i.e., length(p0 - p1). @@ -58,7 +58,7 @@ namespace glm /// @see GLSL distance man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - typename genType::value_type distance( + GLM_FUNC_DECL typename genType::value_type distance( genType const & p0, genType const & p1); @@ -69,7 +69,7 @@ namespace glm /// @see GLSL dot man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - typename genType::value_type dot( + GLM_FUNC_DECL typename genType::value_type dot( genType const & x, genType const & y); @@ -80,7 +80,7 @@ namespace glm /// @see GLSL cross man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - detail::tvec3 cross( + GLM_FUNC_DECL detail::tvec3 cross( detail::tvec3 const & x, detail::tvec3 const & y); @@ -89,7 +89,7 @@ namespace glm /// @see GLSL normalize man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - genType normalize( + GLM_FUNC_DECL genType normalize( genType const & x); /// If dot(Nref, I) < 0.0, return N, otherwise, return -N. @@ -99,7 +99,7 @@ namespace glm /// @see GLSL faceforward man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - genType faceforward( + GLM_FUNC_DECL genType faceforward( genType const & N, genType const & I, genType const & Nref); @@ -112,7 +112,7 @@ namespace glm /// @see GLSL reflect man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - genType reflect( + GLM_FUNC_DECL genType reflect( genType const & I, genType const & N); @@ -125,7 +125,7 @@ namespace glm /// @see GLSL refract man page /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions template - genType refract( + GLM_FUNC_DECL genType refract( genType const & I, genType const & N, typename genType::value_type const & eta); diff --git a/glm/core/func_integer.hpp b/glm/core/func_integer.hpp index 2b6f993e..bc0c0c01 100644 --- a/glm/core/func_integer.hpp +++ b/glm/core/func_integer.hpp @@ -52,9 +52,9 @@ namespace glm /// @see GLSL uaddCarry man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - genUType uaddCarry( - genUType const & x, - genUType const & y, + GLM_FUNC_DECL genUType uaddCarry( + genUType const & x, + genUType const & y, genUType & carry); /// Subtracts the 32-bit unsigned integer y from x, returning @@ -66,9 +66,9 @@ namespace glm /// @see GLSL usubBorrow man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - genUType usubBorrow( - genUType const & x, - genUType const & y, + GLM_FUNC_DECL genUType usubBorrow( + genUType const & x, + genUType const & y, genUType & borrow); /// Multiplies 32-bit integers x and y, producing a 64-bit @@ -80,10 +80,10 @@ namespace glm /// @see GLSL umulExtended man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - void umulExtended( - genUType const & x, - genUType const & y, - genUType & msb, + GLM_FUNC_DECL void umulExtended( + genUType const & x, + genUType const & y, + genUType & msb, genUType & lsb); /// Multiplies 32-bit integers x and y, producing a 64-bit @@ -95,10 +95,10 @@ namespace glm /// @see GLSL imulExtended man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - void imulExtended( - genIType const & x, - genIType const & y, - genIType & msb, + GLM_FUNC_DECL void imulExtended( + genIType const & x, + genIType const & y, + genIType & msb, genIType & lsb); /// Extracts bits [offset, offset + bits - 1] from value, @@ -117,9 +117,9 @@ namespace glm /// @see GLSL bitfieldExtract man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - genIUType bitfieldExtract( - genIUType const & Value, - int const & Offset, + GLM_FUNC_DECL genIUType bitfieldExtract( + genIUType const & Value, + int const & Offset, int const & Bits); /// Returns the insertion the bits least-significant bits of insert into base. @@ -137,10 +137,10 @@ namespace glm /// @see GLSL bitfieldInsert man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - genIUType bitfieldInsert( - genIUType const & Base, - genIUType const & Insert, - int const & Offset, + GLM_FUNC_DECL genIUType bitfieldInsert( + genIUType const & Base, + genIUType const & Insert, + int const & Offset, int const & Bits); /// Returns the reversal of the bits of value. @@ -152,7 +152,7 @@ namespace glm /// @see GLSL bitfieldReverse man page /// @see GLSL 4.20.8 specification, section 8.8 Integer Functions template - genIUType bitfieldReverse(genIUType const & Value); + GLM_FUNC_DECL genIUType bitfieldReverse(genIUType const & Value); /// Returns the number of bits set to 1 in the binary representation of value. /// @@ -163,7 +163,7 @@ namespace glm /// /// @todo Clarify the declaration to specify that scalars are suported. template class genIUType> - typename genIUType::signed_type bitCount(genIUType const & Value); + GLM_FUNC_DECL typename genIUType::signed_type bitCount(genIUType const & Value); /// Returns the bit number of the least significant bit set to /// 1 in the binary representation of value. @@ -176,7 +176,7 @@ namespace glm /// /// @todo Clarify the declaration to specify that scalars are suported. template class genIUType> - typename genIUType::signed_type findLSB(genIUType const & Value); + GLM_FUNC_DECL typename genIUType::signed_type findLSB(genIUType const & Value); /// Returns the bit number of the most significant bit in the binary representation of value. /// For positive integers, the result will be the bit number of the most significant bit set to 1. @@ -190,7 +190,7 @@ namespace glm /// /// @todo Clarify the declaration to specify that scalars are suported. template class genIUType> - typename genIUType::signed_type findMSB(genIUType const & Value); + GLM_FUNC_DECL typename genIUType::signed_type findMSB(genIUType const & Value); /// @} }//namespace glm diff --git a/glm/core/func_matrix.hpp b/glm/core/func_matrix.hpp index 28d115a4..6983d0ad 100644 --- a/glm/core/func_matrix.hpp +++ b/glm/core/func_matrix.hpp @@ -52,8 +52,8 @@ namespace glm /// /// @see GLSL matrixCompMult man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions - template - matType matrixCompMult( + template + GLM_FUNC_DECL matType matrixCompMult( matType const & x, matType const & y); @@ -68,8 +68,8 @@ namespace glm /// /// @todo Clarify the declaration to specify that matType doesn't have to be provided when used. template - matType outerProduct( - vecType const & c, + GLM_FUNC_DECL matType outerProduct( + vecType const & c, vecType const & r); /// Returns the transposed matrix of x @@ -79,7 +79,7 @@ namespace glm /// @see GLSL transpose man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - typename matType::transpose_type transpose( + GLM_FUNC_DECL typename matType::transpose_type transpose( matType const & x); /// Return the determinant of a mat2 matrix. @@ -89,7 +89,7 @@ namespace glm /// @see GLSL determinant man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - typename detail::tmat2x2::value_type determinant( + GLM_FUNC_DECL typename detail::tmat2x2::value_type determinant( detail::tmat2x2 const & m); /// Return the determinant of a mat3 matrix. @@ -99,7 +99,7 @@ namespace glm /// @see GLSL determinant man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - typename detail::tmat3x3::value_type determinant( + GLM_FUNC_DECL typename detail::tmat3x3::value_type determinant( detail::tmat3x3 const & m); /// Return the determinant of a mat4 matrix. @@ -109,7 +109,7 @@ namespace glm /// @see GLSL determinant man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - typename detail::tmat4x4::value_type determinant( + GLM_FUNC_DECL typename detail::tmat4x4::value_type determinant( detail::tmat4x4 const & m); /// Return the inverse of a mat2 matrix. @@ -119,7 +119,7 @@ namespace glm /// @see GLSL inverse man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - detail::tmat2x2 inverse( + GLM_FUNC_DECL detail::tmat2x2 inverse( detail::tmat2x2 const & m); /// Return the inverse of a mat3 matrix. @@ -129,7 +129,7 @@ namespace glm /// @see GLSL inverse man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - detail::tmat3x3 inverse( + GLM_FUNC_DECL detail::tmat3x3 inverse( detail::tmat3x3 const & m); /// Return the inverse of a mat4 matrix. @@ -139,7 +139,7 @@ namespace glm /// @see GLSL inverse man page /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions template - detail::tmat4x4 inverse( + GLM_FUNC_DECL detail::tmat4x4 inverse( detail::tmat4x4 const & m); /// @} diff --git a/glm/core/func_noise.hpp b/glm/core/func_noise.hpp index 0f1b4ac0..0ef0b974 100644 --- a/glm/core/func_noise.hpp +++ b/glm/core/func_noise.hpp @@ -50,7 +50,7 @@ namespace glm /// @see GLSL noise1 man page /// @see GLSL 4.20.8 specification, section 8.13 Noise Functions template - typename genType::value_type noise1(genType const & x); + GLM_FUNC_DECL typename genType::value_type noise1(genType const & x); /// Returns a 2D noise value based on the input value x. /// @@ -59,7 +59,7 @@ namespace glm /// @see GLSL noise2 man page /// @see GLSL 4.20.8 specification, section 8.13 Noise Functions template - detail::tvec2 noise2(genType const & x); + GLM_FUNC_DECL detail::tvec2 noise2(genType const & x); /// Returns a 3D noise value based on the input value x. /// @@ -68,7 +68,7 @@ namespace glm /// @see GLSL noise3 man page /// @see GLSL 4.20.8 specification, section 8.13 Noise Functions template - detail::tvec3 noise3(genType const & x); + GLM_FUNC_DECL detail::tvec3 noise3(genType const & x); /// Returns a 4D noise value based on the input value x. /// @@ -77,7 +77,7 @@ namespace glm /// @see GLSL noise4 man page /// @see GLSL 4.20.8 specification, section 8.13 Noise Functions template - detail::tvec4 noise4(genType const & x); + GLM_FUNC_DECL detail::tvec4 noise4(genType const & x); /// @} }//namespace glm diff --git a/glm/core/func_packing.hpp b/glm/core/func_packing.hpp index 6c699437..4ce811a1 100644 --- a/glm/core/func_packing.hpp +++ b/glm/core/func_packing.hpp @@ -52,7 +52,7 @@ namespace glm //! /// @see GLSL packUnorm2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - uint32 packUnorm2x16(vec2 const & v); + GLM_FUNC_DECL uint32 packUnorm2x16(vec2 const & v); //! First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. //! Then, the results are packed into the returned 32-bit unsigned integer. @@ -65,7 +65,7 @@ namespace glm //! /// @see GLSL packSnorm2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - uint32 packSnorm2x16(vec2 const & v); + GLM_FUNC_DECL uint32 packSnorm2x16(vec2 const & v); //! First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. //! Then, the results are packed into the returned 32-bit unsigned integer. @@ -78,7 +78,7 @@ namespace glm //! /// @see GLSL packUnorm4x8 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - uint32 packUnorm4x8(vec4 const & v); + GLM_FUNC_DECL uint32 packUnorm4x8(vec4 const & v); //! First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. //! Then, the results are packed into the returned 32-bit unsigned integer. @@ -91,7 +91,7 @@ namespace glm //! /// @see GLSL packSnorm4x8 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - uint32 packSnorm4x8(vec4 const & v); + GLM_FUNC_DECL uint32 packSnorm4x8(vec4 const & v); //! First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. //! Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector. @@ -104,7 +104,7 @@ namespace glm //! /// @see GLSL unpackUnorm2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - vec2 unpackUnorm2x16(uint32 const & p); + GLM_FUNC_DECL vec2 unpackUnorm2x16(uint32 const & p); //! First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. //! Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector. @@ -117,7 +117,7 @@ namespace glm //! /// @see GLSL unpackSnorm2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - vec2 unpackSnorm2x16(uint32 const & p); + GLM_FUNC_DECL vec2 unpackSnorm2x16(uint32 const & p); /// First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. /// Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector. @@ -130,7 +130,7 @@ namespace glm /// /// @see GLSL unpackUnorm4x8 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - vec4 unpackUnorm4x8(uint32 const & p); + GLM_FUNC_DECL vec4 unpackUnorm4x8(uint32 const & p); /// First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. /// Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector. @@ -143,7 +143,7 @@ namespace glm /// /// @see GLSL unpackSnorm4x8 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - vec4 unpackSnorm4x8(uint32 const & p); + GLM_FUNC_DECL vec4 unpackSnorm4x8(uint32 const & p); /// Returns a double-precision value obtained by packing the components of v into a 64-bit value. /// If an IEEE 754 Inf or NaN is created, it will not signal, and the resulting floating point value is unspecified. @@ -153,7 +153,7 @@ namespace glm /// /// @see GLSL packDouble2x32 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - double packDouble2x32(uvec2 const & v); + GLM_FUNC_DECL double packDouble2x32(uvec2 const & v); /// Returns a two-component unsigned integer vector representation of v. /// The bit-level representation of v is preserved. @@ -162,7 +162,7 @@ namespace glm /// /// @see GLSL unpackDouble2x32 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - uvec2 unpackDouble2x32(double const & v); + GLM_FUNC_DECL uvec2 unpackDouble2x32(double const & v); /// Returns an unsigned integer obtained by converting the components of a two-component floating-point vector /// to the 16-bit floating-point representation found in the OpenGL Specification, @@ -172,7 +172,7 @@ namespace glm /// /// @see GLSL packHalf2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - uint packHalf2x16(vec2 const & v); + GLM_FUNC_DECL uint32 packHalf2x16(vec2 const & v); /// Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned integer into a pair of 16-bit values, /// interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, @@ -182,7 +182,7 @@ namespace glm /// /// @see GLSL unpackHalf2x16 man page /// @see GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions - vec2 unpackHalf2x16(uint32 const & v); + GLM_FUNC_DECL vec2 unpackHalf2x16(uint32 const & v); /// @} }//namespace glm diff --git a/glm/core/func_trigonometric.hpp b/glm/core/func_trigonometric.hpp index 1e983fa2..9954d9ce 100644 --- a/glm/core/func_trigonometric.hpp +++ b/glm/core/func_trigonometric.hpp @@ -52,7 +52,7 @@ namespace glm /// @see GLSL radians man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType radians(genType const & degrees); + GLM_FUNC_DECL genType radians(genType const & degrees); /// Converts radians to degrees and returns the result. /// @@ -61,7 +61,7 @@ namespace glm /// @see GLSL degrees man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType degrees(genType const & radians); + GLM_FUNC_DECL genType degrees(genType const & radians); /// The standard trigonometric sine function. /// The values returned by this function will range from [-1, 1]. @@ -71,7 +71,7 @@ namespace glm /// @see GLSL sin man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType sin(genType const & angle); + GLM_FUNC_DECL genType sin(genType const & angle); /// The standard trigonometric cosine function. /// The values returned by this function will range from [-1, 1]. @@ -81,7 +81,7 @@ namespace glm /// @see GLSL cos man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType cos(genType const & angle); + GLM_FUNC_DECL genType cos(genType const & angle); /// The standard trigonometric tangent function. /// @@ -90,7 +90,7 @@ namespace glm /// @see GLSL tan man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType tan(genType const & angle); + GLM_FUNC_DECL genType tan(genType const & angle); /// Arc sine. Returns an angle whose sine is x. /// The range of values returned by this function is [-PI/2, PI/2]. @@ -101,7 +101,7 @@ namespace glm /// @see GLSL asin man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType asin(genType const & x); + GLM_FUNC_DECL genType asin(genType const & x); /// Arc cosine. Returns an angle whose sine is x. /// The range of values returned by this function is [0, PI]. @@ -112,7 +112,7 @@ namespace glm /// @see GLSL acos man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType acos(genType const & x); + GLM_FUNC_DECL genType acos(genType const & x); /// Arc tangent. Returns an angle whose tangent is y/x. /// The signs of x and y are used to determine what @@ -125,7 +125,7 @@ namespace glm /// @see GLSL atan man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType atan(genType const & y, genType const & x); + GLM_FUNC_DECL genType atan(genType const & y, genType const & x); /// Arc tangent. Returns an angle whose tangent is y_over_x. /// The range of values returned by this function is [-PI/2, PI/2]. @@ -135,7 +135,7 @@ namespace glm /// @see GLSL atan man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType atan(genType const & y_over_x); + GLM_FUNC_DECL genType atan(genType const & y_over_x); /// Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2 /// @@ -144,7 +144,7 @@ namespace glm /// @see GLSL sinh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType sinh(genType const & angle); + GLM_FUNC_DECL genType sinh(genType const & angle); /// Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2 /// @@ -153,7 +153,7 @@ namespace glm /// @see GLSL cosh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType cosh(genType const & angle); + GLM_FUNC_DECL genType cosh(genType const & angle); /// Returns the hyperbolic tangent function, sinh(angle) / cosh(angle) /// @@ -162,7 +162,7 @@ namespace glm /// @see GLSL tanh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType tanh(genType const & angle); + GLM_FUNC_DECL genType tanh(genType const & angle); /// Arc hyperbolic sine; returns the inverse of sinh. /// @@ -171,7 +171,7 @@ namespace glm /// @see GLSL asinh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType asinh(genType const & x); + GLM_FUNC_DECL genType asinh(genType const & x); /// Arc hyperbolic cosine; returns the non-negative inverse /// of cosh. Results are undefined if x < 1. @@ -181,7 +181,7 @@ namespace glm /// @see GLSL acosh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType acosh(genType const & x); + GLM_FUNC_DECL genType acosh(genType const & x); /// Arc hyperbolic tangent; returns the inverse of tanh. /// Results are undefined if abs(x) >= 1. @@ -191,7 +191,7 @@ namespace glm /// @see GLSL atanh man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template - genType atanh(genType const & x); + GLM_FUNC_DECL genType atanh(genType const & x); /// @} }//namespace glm diff --git a/glm/core/func_vector_relational.hpp b/glm/core/func_vector_relational.hpp index 6e935124..b2fe4407 100644 --- a/glm/core/func_vector_relational.hpp +++ b/glm/core/func_vector_relational.hpp @@ -53,7 +53,7 @@ namespace glm /// @see GLSL lessThan man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template class vecType> - typename vecType::bool_type lessThan(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type lessThan(vecType const & x, vecType const & y); /// Returns the component-wise comparison of result x <= y. /// @@ -62,7 +62,7 @@ namespace glm /// @see GLSL lessThanEqual man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template class vecType> - typename vecType::bool_type lessThanEqual(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type lessThanEqual(vecType const & x, vecType const & y); /// Returns the component-wise comparison of result x > y. /// @@ -71,7 +71,7 @@ namespace glm /// @see GLSL greaterThan man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template class vecType> - typename vecType::bool_type greaterThan(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type greaterThan(vecType const & x, vecType const & y); /// Returns the component-wise comparison of result x >= y. /// @@ -80,7 +80,7 @@ namespace glm /// @see GLSL greaterThanEqual man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template class vecType> - typename vecType::bool_type greaterThanEqual(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type greaterThanEqual(vecType const & x, vecType const & y); /// Returns the component-wise comparison of result x == y. /// @@ -89,7 +89,7 @@ namespace glm /// @see GLSL equal man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template class vecType> - typename vecType::bool_type equal(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type equal(vecType const & x, vecType const & y); /// Returns the component-wise comparison of result x != y. /// @@ -98,7 +98,7 @@ namespace glm /// @see GLSL notEqual man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template class vecType> - typename vecType::bool_type notEqual(vecType const & x, vecType const & y); + GLM_FUNC_DECL typename vecType::bool_type notEqual(vecType const & x, vecType const & y); /// Returns true if any component of x is true. /// @@ -107,7 +107,7 @@ namespace glm /// @see GLSL any man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template class vecType> - bool any(vecType const & v); + GLM_FUNC_DECL bool any(vecType const & v); /// Returns true if all components of x are true. /// @@ -116,7 +116,7 @@ namespace glm /// @see GLSL all man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template class vecType> - bool all(vecType const & v); + GLM_FUNC_DECL bool all(vecType const & v); /// Returns the component-wise logical complement of x. /// /!\ Because of language incompatibilities between C++ and GLSL, GLM defines the function not but not_ instead. @@ -126,7 +126,7 @@ namespace glm /// @see GLSL not man page /// @see GLSL 4.20.8 specification, section 8.7 Vector Relational Functions template class vecType> - vecType not_(vecType const & v); + GLM_FUNC_DECL vecType not_(vecType const & v); /// @} }//namespace glm diff --git a/glm/core/type_mat2x2.hpp b/glm/core/type_mat2x2.hpp index b3f5c34b..638e848b 100644 --- a/glm/core/type_mat2x2.hpp +++ b/glm/core/type_mat2x2.hpp @@ -146,101 +146,101 @@ namespace detail }; // Binary operators + template - tmat2x2 operator+ ( + GLM_FUNC_DECL tmat2x2 operator+ ( tmat2x2 const & m, typename tmat2x2::value_type const & s); - template - tmat2x2 operator+ ( + template + GLM_FUNC_DECL tmat2x2 operator+ ( typename tmat2x2::value_type const & s, tmat2x2 const & m); template - tmat2x2 operator+ ( + GLM_FUNC_DECL tmat2x2 operator+ ( tmat2x2 const & m1, tmat2x2 const & m2); template - tmat2x2 operator- ( + GLM_FUNC_DECL tmat2x2 operator- ( tmat2x2 const & m, typename tmat2x2::value_type const & s); template - tmat2x2 operator- ( + GLM_FUNC_DECL tmat2x2 operator- ( typename tmat2x2::value_type const & s, tmat2x2 const & m); - template - tmat2x2 operator- ( - tmat2x2 const & m1, + template + GLM_FUNC_DECL tmat2x2 operator- ( + tmat2x2 const & m1, tmat2x2 const & m2); - template - tmat2x2 operator* ( - tmat2x2 const & m, + template + GLM_FUNC_DECL tmat2x2 operator* ( + tmat2x2 const & m, typename tmat2x2::value_type const & s); - template - tmat2x2 operator* ( + template + GLM_FUNC_DECL tmat2x2 operator* ( typename tmat2x2::value_type const & s, tmat2x2 const & m); template - typename tmat2x2::col_type operator* ( + GLM_FUNC_DECL typename tmat2x2::col_type operator* ( tmat2x2 const & m, typename tmat2x2::row_type const & v); template - typename tmat2x2::row_type operator* ( + GLM_FUNC_DECL typename tmat2x2::row_type operator* ( typename tmat2x2::col_type const & v, tmat2x2 const & m); template - tmat2x2 operator* ( + GLM_FUNC_DECL tmat2x2 operator* ( tmat2x2 const & m1, tmat2x2 const & m2); template - tmat3x2 operator* ( + GLM_FUNC_DECL tmat3x2 operator* ( tmat2x2 const & m1, tmat3x2 const & m2); template - tmat4x2 operator* ( + GLM_FUNC_DECL tmat4x2 operator* ( tmat2x2 const & m1, tmat4x2 const & m2); template - tmat2x2 operator/ ( + GLM_FUNC_DECL tmat2x2 operator/ ( tmat2x2 const & m, typename tmat2x2::value_type const & s); template - tmat2x2 operator/ ( + GLM_FUNC_DECL tmat2x2 operator/ ( typename tmat2x2::value_type const & s, tmat2x2 const & m); template - typename tmat2x2::col_type operator/ ( + GLM_FUNC_DECL typename tmat2x2::col_type operator/ ( tmat2x2 const & m, typename tmat2x2::row_type const & v); template - typename tmat2x2::row_type operator/ ( + GLM_FUNC_DECL typename tmat2x2::row_type operator/ ( typename tmat2x2::col_type const & v, tmat2x2 const & m); template - tmat2x2 operator/ ( + GLM_FUNC_DECL tmat2x2 operator/ ( tmat2x2 const & m1, tmat2x2 const & m2); // Unary constant operators template - tmat2x2 const operator-( + GLM_FUNC_DECL tmat2x2 const operator-( tmat2x2 const & m); - } //namespace detail } //namespace glm diff --git a/glm/core/type_mat2x3.hpp b/glm/core/type_mat2x3.hpp index 377910e4..57576039 100644 --- a/glm/core/type_mat2x3.hpp +++ b/glm/core/type_mat2x3.hpp @@ -102,8 +102,8 @@ namespace detail GLM_FUNC_DECL explicit tmat2x3(tmat4x3 const & x); // Accesses - col_type & operator[](size_type i); - col_type const & operator[](size_type i) const; + GLM_FUNC_DECL col_type & operator[](size_type i); + GLM_FUNC_DECL col_type const & operator[](size_type i) const; // Unary updatable operators GLM_FUNC_DECL tmat2x3 & operator= (tmat2x3 const & m); @@ -134,8 +134,9 @@ namespace detail }; // Binary operators + template - tmat2x3 operator+ ( + GLM_FUNC_DECL tmat2x3 operator+ ( tmat2x3 const & m, typename tmat2x3::value_type const & s); @@ -145,63 +146,63 @@ namespace detail tmat2x3 const & m2); template - tmat2x3 operator- ( + GLM_FUNC_DECL tmat2x3 operator- ( tmat2x3 const & m, typename tmat2x3::value_type const & s); template - tmat2x3 operator- ( + GLM_FUNC_DECL tmat2x3 operator- ( tmat2x3 const & m1, tmat2x3 const & m2); template - tmat2x3 operator* ( + GLM_FUNC_DECL tmat2x3 operator* ( tmat2x3 const & m, typename tmat2x3::value_type const & s); template - tmat2x3 operator* ( + GLM_FUNC_DECL tmat2x3 operator* ( typename tmat2x3::value_type const & s, tmat2x3 const & m); template - typename tmat2x3::col_type operator* ( + GLM_FUNC_DECL typename tmat2x3::col_type operator* ( tmat2x3 const & m, typename tmat2x3::row_type const & v); template - typename tmat2x3::row_type operator* ( + GLM_FUNC_DECL typename tmat2x3::row_type operator* ( typename tmat2x3::col_type const & v, tmat2x3 const & m); template - tmat2x3 operator* ( + GLM_FUNC_DECL tmat2x3 operator* ( tmat2x3 const & m1, tmat2x2 const & m2); template - tmat3x3 operator* ( + GLM_FUNC_DECL tmat3x3 operator* ( tmat2x3 const & m1, tmat3x2 const & m2); template - tmat4x3 operator* ( + GLM_FUNC_DECL tmat4x3 operator* ( tmat2x3 const & m1, tmat4x2 const & m2); template - tmat2x3 operator/ ( + GLM_FUNC_DECL tmat2x3 operator/ ( tmat2x3 const & m, typename tmat2x3::value_type const & s); template - tmat2x3 operator/ ( + GLM_FUNC_DECL tmat2x3 operator/ ( typename tmat2x3::value_type const & s, tmat2x3 const & m); // Unary constant operators template - tmat2x3 const operator- ( + GLM_FUNC_DECL tmat2x3 const operator- ( tmat2x3 const & m); }//namespace detail diff --git a/glm/core/type_mat2x4.hpp b/glm/core/type_mat2x4.hpp index d560ca93..a3218da5 100644 --- a/glm/core/type_mat2x4.hpp +++ b/glm/core/type_mat2x4.hpp @@ -136,74 +136,75 @@ namespace detail }; // Binary operators - template - tmat2x4 operator+ ( - tmat2x4 const & m, - typename tmat2x4::value_type const & s); - template - tmat2x4 operator+ ( - tmat2x4 const & m1, - tmat2x4 const & m2); - - template - tmat2x4 operator- ( - tmat2x4 const & m, - typename tmat2x4::value_type const & s); - - template - tmat2x4 operator- ( - tmat2x4 const & m1, - tmat2x4 const & m2); - - template - tmat2x4 operator* ( - tmat2x4 const & m, + template + GLM_FUNC_DECL tmat2x4 operator+ ( + tmat2x4 const & m, typename tmat2x4::value_type const & s); template - tmat2x4 operator* ( + GLM_FUNC_DECL tmat2x4 operator+ ( + tmat2x4 const & m1, + tmat2x4 const & m2); + + template + GLM_FUNC_DECL tmat2x4 operator- ( + tmat2x4 const & m, + typename tmat2x4::value_type const & s); + + template + GLM_FUNC_DECL tmat2x4 operator- ( + tmat2x4 const & m1, + tmat2x4 const & m2); + + template + GLM_FUNC_DECL tmat2x4 operator* ( + tmat2x4 const & m, + typename tmat2x4::value_type const & s); + + template + GLM_FUNC_DECL tmat2x4 operator* ( typename tmat2x4::value_type const & s, tmat2x4 const & m); template - typename tmat2x4::col_type operator* ( + GLM_FUNC_DECL typename tmat2x4::col_type operator* ( tmat2x4 const & m, typename tmat2x4::row_type const & v); template - typename tmat2x4::row_type operator* ( + GLM_FUNC_DECL typename tmat2x4::row_type operator* ( typename tmat2x4::col_type const & v, tmat2x4 const & m); template - tmat4x4 operator* ( + GLM_FUNC_DECL tmat4x4 operator* ( tmat2x4 const & m1, tmat4x2 const & m2); template - tmat2x4 operator* ( + GLM_FUNC_DECL tmat2x4 operator* ( tmat2x4 const & m1, tmat2x2 const & m2); template - tmat3x4 operator* ( + GLM_FUNC_DECL tmat3x4 operator* ( tmat2x4 const & m1, tmat3x2 const & m2); template - tmat2x4 operator/ ( + GLM_FUNC_DECL tmat2x4 operator/ ( tmat2x4 const & m, typename tmat2x4::value_type const & s); template - tmat2x4 operator/ ( + GLM_FUNC_DECL tmat2x4 operator/ ( typename tmat2x4::value_type const & s, tmat2x4 const & m); // Unary constant operators template - tmat2x4 const operator- ( + GLM_FUNC_DECL tmat2x4 const operator- ( tmat2x4 const & m); }//namespace detail diff --git a/glm/core/type_mat3x2.hpp b/glm/core/type_mat3x2.hpp index b28ef7aa..22d5a7e1 100644 --- a/glm/core/type_mat3x2.hpp +++ b/glm/core/type_mat3x2.hpp @@ -79,12 +79,10 @@ namespace detail GLM_FUNC_DECL explicit tmat3x2( U const & x); - template - < + template< typename X1, typename Y1, typename X2, typename Y2, - typename X3, typename Y3 - > + typename X3, typename Y3> GLM_FUNC_DECL explicit tmat3x2( X1 const & x1, Y1 const & y1, X2 const & x2, Y2 const & y2, @@ -143,73 +141,73 @@ namespace detail // Binary operators template - tmat3x2 operator+ ( + GLM_FUNC_DECL tmat3x2 operator+ ( tmat3x2 const & m, typename tmat3x2::value_type const & s); template - tmat3x2 operator+ ( + GLM_FUNC_DECL tmat3x2 operator+ ( tmat3x2 const & m1, tmat3x2 const & m2); template - tmat3x2 operator- ( + GLM_FUNC_DECL tmat3x2 operator- ( tmat3x2 const & m, typename tmat3x2::value_type const & s); template - tmat3x2 operator- ( + GLM_FUNC_DECL tmat3x2 operator- ( tmat3x2 const & m1, tmat3x2 const & m2); template - tmat3x2 operator* ( + GLM_FUNC_DECL tmat3x2 operator* ( tmat3x2 const & m, typename tmat3x2::value_type const & s); template - tmat3x2 operator* ( + GLM_FUNC_DECL tmat3x2 operator* ( typename tmat3x2::value_type const & s, tmat3x2 const & m); template - typename tmat3x2::col_type operator* ( + GLM_FUNC_DECL typename tmat3x2::col_type operator* ( tmat3x2 const & m, typename tmat3x2::row_type const & v); template - typename tmat3x2::row_type operator* ( + GLM_FUNC_DECL typename tmat3x2::row_type operator* ( typename tmat3x2::col_type const & v, tmat3x2 const & m); template - tmat2x2 operator* ( + GLM_FUNC_DECL tmat2x2 operator* ( tmat3x2 const & m1, tmat2x3 const & m2); template - tmat3x2 operator* ( + GLM_FUNC_DECL tmat3x2 operator* ( tmat3x2 const & m1, tmat3x3 const & m2); template - tmat4x2 operator* ( + GLM_FUNC_DECL tmat4x2 operator* ( tmat3x2 const & m1, tmat4x3 const & m2); template - tmat3x2 operator/ ( + GLM_FUNC_DECL tmat3x2 operator/ ( tmat3x2 const & m, typename tmat3x2::value_type const & s); template - tmat3x2 operator/ ( + GLM_FUNC_DECL tmat3x2 operator/ ( typename tmat3x2::value_type const & s, tmat3x2 const & m); // Unary constant operators template - tmat3x2 const operator-( + GLM_FUNC_DECL tmat3x2 const operator-( tmat3x2 const & m); }//namespace detail diff --git a/glm/core/type_mat3x3.hpp b/glm/core/type_mat3x3.hpp index af0e06f3..2384e35e 100644 --- a/glm/core/type_mat3x3.hpp +++ b/glm/core/type_mat3x3.hpp @@ -85,12 +85,10 @@ namespace detail GLM_FUNC_DECL explicit tmat3x3( U const & x); - template - < + template< typename X1, typename Y1, typename Z1, typename X2, typename Y2, typename Z2, - typename X3, typename Y3, typename Z3 - > + typename X3, typename Y3, typename Z3> GLM_FUNC_DECL explicit tmat3x3( X1 const & x1, Y1 const & y1, Z1 const & z1, X2 const & x2, Y2 const & y2, Z2 const & z2, @@ -151,98 +149,98 @@ namespace detail // Binary operators template - tmat3x3 operator+ ( + GLM_FUNC_DECL tmat3x3 operator+ ( tmat3x3 const & m, typename tmat3x3::value_type const & s); template - tmat3x3 operator+ ( + GLM_FUNC_DECL tmat3x3 operator+ ( typename tmat3x3::value_type const & s, tmat3x3 const & m); template - tmat3x3 operator+ ( + GLM_FUNC_DECL tmat3x3 operator+ ( tmat3x3 const & m1, tmat3x3 const & m2); template - tmat3x3 operator- ( + GLM_FUNC_DECL tmat3x3 operator- ( tmat3x3 const & m, typename tmat3x3::value_type const & s); template - tmat3x3 operator- ( + GLM_FUNC_DECL tmat3x3 operator- ( typename tmat3x3::value_type const & s, tmat3x3 const & m); template - tmat3x3 operator- ( + GLM_FUNC_DECL tmat3x3 operator- ( tmat3x3 const & m1, tmat3x3 const & m2); template - tmat3x3 operator* ( + GLM_FUNC_DECL tmat3x3 operator* ( tmat3x3 const & m, typename tmat3x3::value_type const & s); template - tmat3x3 operator* ( + GLM_FUNC_DECL tmat3x3 operator* ( typename tmat3x3::value_type const & s, tmat3x3 const & m); template - typename tmat3x3::col_type operator* ( + GLM_FUNC_DECL typename tmat3x3::col_type operator* ( tmat3x3 const & m, typename tmat3x3::row_type const & v); template - typename tmat3x3::row_type operator* ( + GLM_FUNC_DECL typename tmat3x3::row_type operator* ( typename tmat3x3::col_type const & v, tmat3x3 const & m); template - tmat3x3 operator* ( + GLM_FUNC_DECL tmat3x3 operator* ( tmat3x3 const & m1, tmat3x3 const & m2); template - tmat2x3 operator* ( + GLM_FUNC_DECL tmat2x3 operator* ( tmat3x3 const & m1, tmat2x3 const & m2); template - tmat4x3 operator* ( + GLM_FUNC_DECL tmat4x3 operator* ( tmat3x3 const & m1, tmat4x3 const & m2); template - tmat3x3 operator/ ( + GLM_FUNC_DECL tmat3x3 operator/ ( tmat3x3 const & m, typename tmat3x3::value_type const & s); - template - tmat3x3 operator/ ( + template + GLM_FUNC_DECL tmat3x3 operator/ ( typename tmat3x3::value_type const & s, tmat3x3 const & m); - template - typename tmat3x3::col_type operator/ ( - tmat3x3 const & m, + template + GLM_FUNC_DECL typename tmat3x3::col_type operator/ ( + tmat3x3 const & m, typename tmat3x3::row_type const & v); template - typename tmat3x3::row_type operator/ ( + GLM_FUNC_DECL typename tmat3x3::row_type operator/ ( typename tmat3x3::col_type const & v, tmat3x3 const & m); template - tmat3x3 operator/ ( + GLM_FUNC_DECL tmat3x3 operator/ ( tmat3x3 const & m1, tmat3x3 const & m2); // Unary constant operators template - tmat3x3 const operator-( + GLM_FUNC_DECL tmat3x3 const operator-( tmat3x3 const & m); }//namespace detail diff --git a/glm/core/type_mat3x4.hpp b/glm/core/type_mat3x4.hpp index 9d18f488..fb0242a2 100644 --- a/glm/core/type_mat3x4.hpp +++ b/glm/core/type_mat3x4.hpp @@ -79,12 +79,10 @@ namespace detail GLM_FUNC_DECL explicit tmat3x4( U const & x); - template - < + template< typename X1, typename Y1, typename Z1, typename W1, typename X2, typename Y2, typename Z2, typename W2, - typename X3, typename Y3, typename Z3, typename W3 - > + typename X3, typename Y3, typename Z3, typename W3> GLM_FUNC_DECL explicit tmat3x4( X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2, @@ -110,8 +108,8 @@ namespace detail GLM_FUNC_DECL explicit tmat3x4(tmat4x3 const & x); // Accesses - col_type & operator[](size_type i); - col_type const & operator[](size_type i) const; + GLM_FUNC_DECL col_type & operator[](size_type i); + GLM_FUNC_DECL col_type const & operator[](size_type i) const; // Unary updatable operators GLM_FUNC_DECL tmat3x4 & operator= (tmat3x4 const & m); @@ -143,73 +141,73 @@ namespace detail // Binary operators template - tmat3x4 operator+ ( + GLM_FUNC_DECL tmat3x4 operator+ ( tmat3x4 const & m, typename tmat3x4::value_type const & s); template - tmat3x4 operator+ ( + GLM_FUNC_DECL tmat3x4 operator+ ( tmat3x4 const & m1, tmat3x4 const & m2); template - tmat3x4 operator- ( + GLM_FUNC_DECL tmat3x4 operator- ( tmat3x4 const & m, typename tmat3x4::value_type const & s); template - tmat3x4 operator- ( + GLM_FUNC_DECL tmat3x4 operator- ( tmat3x4 const & m1, tmat3x4 const & m2); template - tmat3x4 operator* ( + GLM_FUNC_DECL tmat3x4 operator* ( tmat3x4 const & m, typename tmat3x4::value_type const & s); template - tmat3x4 operator* ( + GLM_FUNC_DECL tmat3x4 operator* ( typename tmat3x4::value_type const & s, tmat3x4 const & m); template - typename tmat3x4::col_type operator* ( + GLM_FUNC_DECL typename tmat3x4::col_type operator* ( tmat3x4 const & m, typename tmat3x4::row_type const & v); template - typename tmat3x4::row_type operator* ( + GLM_FUNC_DECL typename tmat3x4::row_type operator* ( typename tmat3x4::col_type const & v, tmat3x4 const & m); template - tmat4x4 operator* ( + GLM_FUNC_DECL tmat4x4 operator* ( tmat3x4 const & m1, tmat4x3 const & m2); template - tmat2x4 operator* ( + GLM_FUNC_DECL tmat2x4 operator* ( tmat3x4 const & m1, tmat2x3 const & m2); template - tmat3x4 operator* ( + GLM_FUNC_DECL tmat3x4 operator* ( tmat3x4 const & m1, tmat3x3 const & m2); template - tmat3x4 operator/ ( + GLM_FUNC_DECL tmat3x4 operator/ ( tmat3x4 const & m, typename tmat3x4::value_type const & s); template - tmat3x4 operator/ ( + GLM_FUNC_DECL tmat3x4 operator/ ( typename tmat3x4::value_type const & s, tmat3x4 const & m); // Unary constant operators template - tmat3x4 const operator-( + GLM_FUNC_DECL tmat3x4 const operator-( tmat3x4 const & m); }//namespace detail diff --git a/glm/core/type_mat4x2.hpp b/glm/core/type_mat4x2.hpp index a50c4d4c..ce6557a4 100644 --- a/glm/core/type_mat4x2.hpp +++ b/glm/core/type_mat4x2.hpp @@ -81,13 +81,11 @@ namespace detail GLM_FUNC_DECL explicit tmat4x2( U const & x); - template - < - typename X1, typename Y1, - typename X2, typename Y2, + template< + typename X1, typename Y1, + typename X2, typename Y2, typename X3, typename Y3, - typename X4, typename Y4 - > + typename X4, typename Y4> GLM_FUNC_DECL explicit tmat4x2( X1 const & x1, Y1 const & y1, X2 const & x2, Y2 const & y2, @@ -148,75 +146,75 @@ namespace detail // Binary operators template - tmat4x2 operator+ ( + GLM_FUNC_DECL tmat4x2 operator+ ( tmat4x2 const & m, typename tmat4x2::value_type const & s); template - tmat4x2 operator+ ( + GLM_FUNC_DECL tmat4x2 operator+ ( tmat4x2 const & m1, tmat4x2 const & m2); template - tmat4x2 operator- ( + GLM_FUNC_DECL tmat4x2 operator- ( tmat4x2 const & m, typename tmat4x2::value_type const & s); template - tmat4x2 operator- ( + GLM_FUNC_DECL tmat4x2 operator- ( tmat4x2 const & m1, tmat4x2 const & m2); template - tmat4x2 operator* ( + GLM_FUNC_DECL tmat4x2 operator* ( tmat4x2 const & m, typename tmat4x2::value_type const & s); template - tmat4x2 operator* ( + GLM_FUNC_DECL tmat4x2 operator* ( typename tmat4x2::value_type const & s, tmat4x2 const & m); template - typename tmat4x2::col_type operator* ( + GLM_FUNC_DECL typename tmat4x2::col_type operator* ( tmat4x2 const & m, typename tmat4x2::row_type const & v); template - typename tmat4x2::row_type operator* ( + GLM_FUNC_DECL typename tmat4x2::row_type operator* ( typename tmat4x2::col_type const & v, tmat4x2 const & m); template - tmat3x2 operator* ( + GLM_FUNC_DECL tmat3x2 operator* ( tmat4x2 const & m1, tmat3x4 const & m2); template - tmat4x2 operator* ( + GLM_FUNC_DECL tmat4x2 operator* ( tmat4x2 const & m1, tmat4x4 const & m2); template - tmat2x3 operator* ( + GLM_FUNC_DECL tmat2x3 operator* ( tmat4x3 const & m1, tmat2x4 const & m2); template - tmat4x2 operator/ ( + GLM_FUNC_DECL tmat4x2 operator/ ( tmat4x2 const & m, typename tmat4x2::value_type const & s); template - tmat4x2 operator/ ( + GLM_FUNC_DECL tmat4x2 operator/ ( typename tmat4x2::value_type const & s, tmat4x2 const & m); // Unary constant operators template - tmat4x2 const operator-( + GLM_FUNC_DECL tmat4x2 const operator-( tmat4x2 const & m); - + }//namespace detail }//namespace glm diff --git a/glm/core/type_mat4x3.hpp b/glm/core/type_mat4x3.hpp index e0e376c0..536f9286 100644 --- a/glm/core/type_mat4x3.hpp +++ b/glm/core/type_mat4x3.hpp @@ -113,8 +113,8 @@ namespace detail GLM_FUNC_DECL explicit tmat4x3(tmat3x4 const & x); // Accesses - col_type & operator[](size_type i); - col_type const & operator[](size_type i) const; + GLM_FUNC_DECL col_type & operator[](size_type i); + GLM_FUNC_DECL col_type const & operator[](size_type i) const; // Unary updatable operators GLM_FUNC_DECL tmat4x3 & operator= (tmat4x3 const & m); @@ -146,73 +146,73 @@ namespace detail // Binary operators template - tmat4x3 operator+ ( + GLM_FUNC_DECL tmat4x3 operator+ ( tmat4x3 const & m, typename tmat4x3::value_type const & s); template - tmat4x3 operator+ ( + GLM_FUNC_DECL tmat4x3 operator+ ( tmat4x3 const & m1, tmat4x3 const & m2); template - tmat4x3 operator- ( + GLM_FUNC_DECL tmat4x3 operator- ( tmat4x3 const & m, typename tmat4x3::value_type const & s); template - tmat4x3 operator- ( + GLM_FUNC_DECL tmat4x3 operator- ( tmat4x3 const & m1, tmat4x3 const & m2); template - tmat4x3 operator* ( + GLM_FUNC_DECL tmat4x3 operator* ( tmat4x3 const & m, typename tmat4x3::value_type const & s); template - tmat4x3 operator* ( + GLM_FUNC_DECL tmat4x3 operator* ( typename tmat4x3::value_type const & s, tmat4x3 const & m); template - typename tmat4x3::col_type operator* ( + GLM_FUNC_DECL typename tmat4x3::col_type operator* ( tmat4x3 const & m, typename tmat4x3::row_type const & v); template - typename tmat4x3::row_type operator* ( + GLM_FUNC_DECL typename tmat4x3::row_type operator* ( typename tmat4x3::col_type const & v, tmat4x3 const & m); template - tmat2x3 operator* ( + GLM_FUNC_DECL tmat2x3 operator* ( tmat4x3 const & m1, tmat2x4 const & m2); template - tmat3x3 operator* ( + GLM_FUNC_DECL tmat3x3 operator* ( tmat4x3 const & m1, tmat3x4 const & m2); template - tmat4x3 operator* ( + GLM_FUNC_DECL tmat4x3 operator* ( tmat4x3 const & m1, tmat4x4 const & m2); template - tmat4x3 operator/ ( + GLM_FUNC_DECL tmat4x3 operator/ ( tmat4x3 const & m, typename tmat4x3::value_type const & s); template - tmat4x3 operator/ ( + GLM_FUNC_DECL tmat4x3 operator/ ( typename tmat4x3::value_type const & s, tmat4x3 const & m); // Unary constant operators template - tmat4x3 const operator- ( + GLM_FUNC_DECL tmat4x3 const operator- ( tmat4x3 const & m); }//namespace detail diff --git a/glm/core/type_mat4x4.hpp b/glm/core/type_mat4x4.hpp index 407c4341..dc026939 100644 --- a/glm/core/type_mat4x4.hpp +++ b/glm/core/type_mat4x4.hpp @@ -154,98 +154,98 @@ namespace detail // Binary operators template - tmat4x4 operator+ ( + GLM_FUNC_DECL tmat4x4 operator+ ( tmat4x4 const & m, typename tmat4x4::value_type const & s); template - tmat4x4 operator+ ( + GLM_FUNC_DECL tmat4x4 operator+ ( typename tmat4x4::value_type const & s, tmat4x4 const & m); template - tmat4x4 operator+ ( + GLM_FUNC_DECL tmat4x4 operator+ ( tmat4x4 const & m1, tmat4x4 const & m2); template - tmat4x4 operator- ( + GLM_FUNC_DECL tmat4x4 operator- ( tmat4x4 const & m, typename tmat4x4::value_type const & s); template - tmat4x4 operator- ( + GLM_FUNC_DECL tmat4x4 operator- ( typename tmat4x4::value_type const & s, tmat4x4 const & m); template - tmat4x4 operator- ( + GLM_FUNC_DECL tmat4x4 operator- ( tmat4x4 const & m1, tmat4x4 const & m2); template - tmat4x4 operator* ( + GLM_FUNC_DECL tmat4x4 operator* ( tmat4x4 const & m, typename tmat4x4::value_type const & s); template - tmat4x4 operator* ( + GLM_FUNC_DECL tmat4x4 operator* ( typename tmat4x4::value_type const & s, tmat4x4 const & m); template - typename tmat4x4::col_type operator* ( + GLM_FUNC_DECL typename tmat4x4::col_type operator* ( tmat4x4 const & m, typename tmat4x4::row_type const & v); template - typename tmat4x4::row_type operator* ( + GLM_FUNC_DECL typename tmat4x4::row_type operator* ( typename tmat4x4::col_type const & v, tmat4x4 const & m); template - tmat2x4 operator* ( + GLM_FUNC_DECL tmat2x4 operator* ( tmat4x4 const & m1, tmat2x4 const & m2); template - tmat3x4 operator* ( + GLM_FUNC_DECL tmat3x4 operator* ( tmat4x4 const & m1, tmat3x4 const & m2); template - tmat4x4 operator* ( + GLM_FUNC_DECL tmat4x4 operator* ( tmat4x4 const & m1, tmat4x4 const & m2); template - tmat4x4 operator/ ( + GLM_FUNC_DECL tmat4x4 operator/ ( tmat4x4 const & m, typename tmat4x4::value_type const & s); template - tmat4x4 operator/ ( + GLM_FUNC_DECL tmat4x4 operator/ ( typename tmat4x4::value_type const & s, tmat4x4 const & m); template - typename tmat4x4::col_type operator/ ( + GLM_FUNC_DECL typename tmat4x4::col_type operator/ ( tmat4x4 const & m, typename tmat4x4::row_type const & v); template - typename tmat4x4::row_type operator/ ( + GLM_FUNC_DECL typename tmat4x4::row_type operator/ ( typename tmat4x4::col_type & v, tmat4x4 const & m); template - tmat4x4 operator/ ( + GLM_FUNC_DECL tmat4x4 operator/ ( tmat4x4 const & m1, tmat4x4 const & m2); // Unary constant operators template - tmat4x4 const operator- ( + GLM_FUNC_DECL tmat4x4 const operator- ( tmat4x4 const & m); }//namespace detail diff --git a/glm/core/type_vec2.hpp b/glm/core/type_vec2.hpp index 9277f1c8..aeb29f64 100644 --- a/glm/core/type_vec2.hpp +++ b/glm/core/type_vec2.hpp @@ -115,7 +115,7 @@ namespace detail ////////////////////////////////////// // Swizzle constructors - tvec2(tref2 const & r); + GLM_FUNC_DECL tvec2(tref2 const & r); template GLM_FUNC_DECL tvec2(_swizzle<2,T, P, tvec2, E0, E1,-1,-2> const & that) diff --git a/glm/core/type_vec4.inl b/glm/core/type_vec4.inl index f8df571d..231f16dd 100644 --- a/glm/core/type_vec4.inl +++ b/glm/core/type_vec4.inl @@ -1140,7 +1140,7 @@ namespace detail template GLM_FUNC_QUALIFIER tvec4 operator| ( - tvec4 const & v1, + tvec4 const & v1, tvec4 const & v2 ) { diff --git a/glm/gtc/constants.hpp b/glm/gtc/constants.hpp index f7989c1c..48876297 100644 --- a/glm/gtc/constants.hpp +++ b/glm/gtc/constants.hpp @@ -56,127 +56,127 @@ namespace glm /// @todo Implement epsilon for half-precision floating point type. /// @see gtc_constants template - genType epsilon(); + GLM_FUNC_DECL genType epsilon(); /// Return 0. /// @see gtc_constants template - genType zero(); + GLM_FUNC_DECL genType zero(); /// Return 1. /// @see gtc_constants template - genType one(); + GLM_FUNC_DECL genType one(); /// Return the pi constant. /// @see gtc_constants template - genType pi(); + GLM_FUNC_DECL genType pi(); /// Return square root of pi. /// @see gtc_constants template - genType root_pi(); + GLM_FUNC_DECL genType root_pi(); /// Return pi / 2. /// @see gtc_constants template - genType half_pi(); + GLM_FUNC_DECL genType half_pi(); /// Return pi / 4. /// @see gtc_constants template - genType quarter_pi(); + GLM_FUNC_DECL genType quarter_pi(); /// Return 1 / pi. /// @see gtc_constants template - genType one_over_pi(); + GLM_FUNC_DECL genType one_over_pi(); /// Return 2 / pi. /// @see gtc_constants template - genType two_over_pi(); + GLM_FUNC_DECL genType two_over_pi(); /// Return 2 / sqrt(pi). /// @see gtc_constants template - genType two_over_root_pi(); + GLM_FUNC_DECL genType two_over_root_pi(); /// Return 1 / sqrt(2). /// @see gtc_constants template - genType one_over_root_two(); + GLM_FUNC_DECL genType one_over_root_two(); /// Return sqrt(pi / 2). /// @see gtc_constants template - genType root_half_pi(); + GLM_FUNC_DECL genType root_half_pi(); /// Return sqrt(2 * pi). /// @see gtc_constants template - genType root_two_pi(); + GLM_FUNC_DECL genType root_two_pi(); /// Return sqrt(ln(4)). /// @see gtc_constants template - genType root_ln_four(); + GLM_FUNC_DECL genType root_ln_four(); /// Return e constant. /// @see gtc_constants template - genType e(); + GLM_FUNC_DECL genType e(); /// Return Euler's constant. /// @see gtc_constants template - genType euler(); + GLM_FUNC_DECL genType euler(); /// Return sqrt(2). /// @see gtc_constants template - genType root_two(); + GLM_FUNC_DECL genType root_two(); /// Return sqrt(3). /// @see gtc_constants template - genType root_three(); + GLM_FUNC_DECL genType root_three(); /// Return sqrt(5). /// @see gtc_constants template - genType root_five(); + GLM_FUNC_DECL genType root_five(); /// Return ln(2). /// @see gtc_constants template - genType ln_two(); + GLM_FUNC_DECL genType ln_two(); /// Return ln(10). /// @see gtc_constants template - genType ln_ten(); + GLM_FUNC_DECL genType ln_ten(); /// Return ln(ln(2)). /// @see gtc_constants template - genType ln_ln_two(); + GLM_FUNC_DECL genType ln_ln_two(); /// Return 1 / 3. /// @see gtc_constants template - genType third(); + GLM_FUNC_DECL genType third(); /// Return 2 / 3. /// @see gtc_constants template - genType two_thirds(); + GLM_FUNC_DECL genType two_thirds(); /// Return the golden ratio constant. /// @see gtc_constants template - genType golden_ratio(); + GLM_FUNC_DECL genType golden_ratio(); /// @} } //namespace glm diff --git a/glm/gtc/half_float.hpp b/glm/gtc/half_float.hpp index 74d9de66..83649296 100644 --- a/glm/gtc/half_float.hpp +++ b/glm/gtc/half_float.hpp @@ -68,77 +68,77 @@ namespace detail ////////////////////////////////////// // Accesses - half & operator[](size_type i); - half const & operator[](size_type i) const; + GLM_FUNC_DECL half & operator[](size_type i); + GLM_FUNC_DECL half const & operator[](size_type i) const; ////////////////////////////////////// // Implicit basic constructors - tvec2(); - tvec2(tvec2 const & v); + GLM_FUNC_DECL tvec2(); + GLM_FUNC_DECL tvec2(tvec2 const & v); ////////////////////////////////////// // Explicit basic constructors - explicit tvec2(ctor){} - explicit tvec2( + GLM_FUNC_DECL explicit tvec2(ctor){} + GLM_FUNC_DECL explicit tvec2( half const & s); - explicit tvec2( + GLM_FUNC_DECL explicit tvec2( half const & s1, half const & s2); ////////////////////////////////////// // Swizzle constructors - tvec2(tref2 const & r); + GLM_FUNC_DECL tvec2(tref2 const & r); ////////////////////////////////////// // Convertion scalar constructors //! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec2(U const & x); + GLM_FUNC_DECL explicit tvec2(U const & x); //! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) - template - explicit tvec2(U const & x, V const & y); + template + GLM_FUNC_DECL explicit tvec2(U const & x, V const & y); ////////////////////////////////////// // Convertion vector constructors //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec2(tvec2 const & v); + GLM_FUNC_DECL explicit tvec2(tvec2 const & v); //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec2(tvec3 const & v); + GLM_FUNC_DECL explicit tvec2(tvec3 const & v); //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec2(tvec4 const & v); + GLM_FUNC_DECL explicit tvec2(tvec4 const & v); ////////////////////////////////////// // Unary arithmetic operators - tvec2& operator= (tvec2 const & v); + GLM_FUNC_DECL tvec2& operator= (tvec2 const & v); - tvec2& operator+=(half const & s); - tvec2& operator+=(tvec2 const & v); - tvec2& operator-=(half const & s); - tvec2& operator-=(tvec2 const & v); - tvec2& operator*=(half const & s); - tvec2& operator*=(tvec2 const & v); - tvec2& operator/=(half const & s); - tvec2& operator/=(tvec2 const & v); - tvec2& operator++(); - tvec2& operator--(); + GLM_FUNC_DECL tvec2& operator+=(half const & s); + GLM_FUNC_DECL tvec2& operator+=(tvec2 const & v); + GLM_FUNC_DECL tvec2& operator-=(half const & s); + GLM_FUNC_DECL tvec2& operator-=(tvec2 const & v); + GLM_FUNC_DECL tvec2& operator*=(half const & s); + GLM_FUNC_DECL tvec2& operator*=(tvec2 const & v); + GLM_FUNC_DECL tvec2& operator/=(half const & s); + GLM_FUNC_DECL tvec2& operator/=(tvec2 const & v); + GLM_FUNC_DECL tvec2& operator++(); + GLM_FUNC_DECL tvec2& operator--(); ////////////////////////////////////// // Swizzle operators - half swizzle(comp X) const; - tvec2 swizzle(comp X, comp Y) const; - tvec3 swizzle(comp X, comp Y, comp Z) const; - tvec4 swizzle(comp X, comp Y, comp Z, comp W) const; - tref2 swizzle(comp X, comp Y); + GLM_FUNC_DECL half swizzle(comp X) const; + GLM_FUNC_DECL tvec2 swizzle(comp X, comp Y) const; + GLM_FUNC_DECL tvec3 swizzle(comp X, comp Y, comp Z) const; + GLM_FUNC_DECL tvec4 swizzle(comp X, comp Y, comp Z, comp W) const; + GLM_FUNC_DECL tref2 swizzle(comp X, comp Y); }; template @@ -160,22 +160,22 @@ namespace detail ////////////////////////////////////// // Accesses - half & operator[](size_type i); - half const & operator[](size_type i) const; + GLM_FUNC_DECL half & operator[](size_type i); + GLM_FUNC_DECL half const & operator[](size_type i) const; ////////////////////////////////////// // Implicit basic constructors - tvec3(); - tvec3(tvec3 const & v); + GLM_FUNC_DECL tvec3(); + GLM_FUNC_DECL tvec3(tvec3 const & v); ////////////////////////////////////// // Explicit basic constructors - explicit tvec3(ctor){} - explicit tvec3( + GLM_FUNC_DECL explicit tvec3(ctor){} + GLM_FUNC_DECL explicit tvec3( half const & s); - explicit tvec3( + GLM_FUNC_DECL explicit tvec3( half const & s1, half const & s2, half const & s3); @@ -183,58 +183,59 @@ namespace detail ////////////////////////////////////// // Swizzle constructors - tvec3(tref3 const & r); + GLM_FUNC_DECL tvec3(tref3 const & r); ////////////////////////////////////// // Convertion scalar constructors //! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec3(U const & x); + GLM_FUNC_DECL explicit tvec3(U const & x); + //! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec3(U const & x, V const & y, W const & z); + GLM_FUNC_DECL explicit tvec3(U const & x, V const & y, W const & z); ////////////////////////////////////// // Convertion vector constructors //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec3(tvec2 const & v, B const & s); + GLM_FUNC_DECL explicit tvec3(tvec2 const & v, B const & s); //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec3(A const & s, tvec2 const & v); + GLM_FUNC_DECL explicit tvec3(A const & s, tvec2 const & v); //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec3(tvec3 const & v); + GLM_FUNC_DECL explicit tvec3(tvec3 const & v); //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec3(tvec4 const & v); + GLM_FUNC_DECL explicit tvec3(tvec4 const & v); ////////////////////////////////////// // Unary arithmetic operators - tvec3& operator= (tvec3 const & v); + GLM_FUNC_DECL tvec3& operator= (tvec3 const & v); - tvec3& operator+=(half const & s); - tvec3& operator+=(tvec3 const & v); - tvec3& operator-=(half const & s); - tvec3& operator-=(tvec3 const & v); - tvec3& operator*=(half const & s); - tvec3& operator*=(tvec3 const & v); - tvec3& operator/=(half const & s); - tvec3& operator/=(tvec3 const & v); - tvec3& operator++(); - tvec3& operator--(); + GLM_FUNC_DECL tvec3& operator+=(half const & s); + GLM_FUNC_DECL tvec3& operator+=(tvec3 const & v); + GLM_FUNC_DECL tvec3& operator-=(half const & s); + GLM_FUNC_DECL tvec3& operator-=(tvec3 const & v); + GLM_FUNC_DECL tvec3& operator*=(half const & s); + GLM_FUNC_DECL tvec3& operator*=(tvec3 const & v); + GLM_FUNC_DECL tvec3& operator/=(half const & s); + GLM_FUNC_DECL tvec3& operator/=(tvec3 const & v); + GLM_FUNC_DECL tvec3& operator++(); + GLM_FUNC_DECL tvec3& operator--(); ////////////////////////////////////// // Swizzle operators - half swizzle(comp X) const; - tvec2 swizzle(comp X, comp Y) const; - tvec3 swizzle(comp X, comp Y, comp Z) const; - tvec4 swizzle(comp X, comp Y, comp Z, comp W) const; - tref3 swizzle(comp X, comp Y, comp Z); + GLM_FUNC_DECL half swizzle(comp X) const; + GLM_FUNC_DECL tvec2 swizzle(comp X, comp Y) const; + GLM_FUNC_DECL tvec3 swizzle(comp X, comp Y, comp Z) const; + GLM_FUNC_DECL tvec4 swizzle(comp X, comp Y, comp Z, comp W) const; + GLM_FUNC_DECL tref3 swizzle(comp X, comp Y, comp Z); }; template @@ -256,22 +257,23 @@ namespace detail ////////////////////////////////////// // Accesses - half & operator[](size_type i); - half const & operator[](size_type i) const; + GLM_FUNC_DECL half & operator[](size_type i); + GLM_FUNC_DECL half const & operator[](size_type i) const; ////////////////////////////////////// // Implicit basic constructors - tvec4(); - tvec4(tvec4 const & v); + GLM_FUNC_DECL tvec4(); + GLM_FUNC_DECL tvec4(tvec4 const & v); ////////////////////////////////////// // Explicit basic constructors - explicit tvec4(ctor){} - explicit tvec4( + + GLM_FUNC_DECL explicit tvec4(ctor){} + GLM_FUNC_DECL explicit tvec4( half const & s); - explicit tvec4( + GLM_FUNC_DECL explicit tvec4( half const & s0, half const & s1, half const & s2, @@ -280,67 +282,67 @@ namespace detail ////////////////////////////////////// // Swizzle constructors - tvec4(tref4 const & r); + GLM_FUNC_DECL tvec4(tref4 const & r); ////////////////////////////////////// // Convertion scalar constructors //! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec4(U const & x); + GLM_FUNC_DECL explicit tvec4(U const & x); //! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec4(A const & x, B const & y, C const & z, D const & w); + GLM_FUNC_DECL explicit tvec4(A const & x, B const & y, C const & z, D const & w); ////////////////////////////////////// // Convertion vector constructors //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec4(tvec2 const & v, B const & s1, C const & s2); + GLM_FUNC_DECL explicit tvec4(tvec2 const & v, B const & s1, C const & s2); //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec4(A const & s1, tvec2 const & v, C const & s2); + GLM_FUNC_DECL explicit tvec4(A const & s1, tvec2 const & v, C const & s2); //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec4(A const & s1, B const & s2, tvec2 const & v); + GLM_FUNC_DECL explicit tvec4(A const & s1, B const & s2, tvec2 const & v); //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec4(tvec3 const & v, B const & s); + GLM_FUNC_DECL explicit tvec4(tvec3 const & v, B const & s); //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec4(A const & s, tvec3 const & v); + GLM_FUNC_DECL explicit tvec4(A const & s, tvec3 const & v); //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec4(tvec2 const & v1, tvec2 const & v2); + GLM_FUNC_DECL explicit tvec4(tvec2 const & v1, tvec2 const & v2); //! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template - explicit tvec4(tvec4 const & v); + GLM_FUNC_DECL explicit tvec4(tvec4 const & v); ////////////////////////////////////// // Unary arithmetic operators - tvec4& operator= (tvec4 const & v); + GLM_FUNC_DECL tvec4& operator= (tvec4 const & v); - tvec4& operator+=(half const & s); - tvec4& operator+=(tvec4 const & v); - tvec4& operator-=(half const & s); - tvec4& operator-=(tvec4 const & v); - tvec4& operator*=(half const & s); - tvec4& operator*=(tvec4 const & v); - tvec4& operator/=(half const & s); - tvec4& operator/=(tvec4 const & v); - tvec4& operator++(); - tvec4& operator--(); + GLM_FUNC_DECL tvec4& operator+=(half const & s); + GLM_FUNC_DECL tvec4& operator+=(tvec4 const & v); + GLM_FUNC_DECL tvec4& operator-=(half const & s); + GLM_FUNC_DECL tvec4& operator-=(tvec4 const & v); + GLM_FUNC_DECL tvec4& operator*=(half const & s); + GLM_FUNC_DECL tvec4& operator*=(tvec4 const & v); + GLM_FUNC_DECL tvec4& operator/=(half const & s); + GLM_FUNC_DECL tvec4& operator/=(tvec4 const & v); + GLM_FUNC_DECL tvec4& operator++(); + GLM_FUNC_DECL tvec4& operator--(); ////////////////////////////////////// // Swizzle operators - half swizzle(comp X) const; - tvec2 swizzle(comp X, comp Y) const; - tvec3 swizzle(comp X, comp Y, comp Z) const; - tvec4 swizzle(comp X, comp Y, comp Z, comp W) const; - tref4 swizzle(comp X, comp Y, comp Z, comp W); + GLM_FUNC_DECL half swizzle(comp X) const; + GLM_FUNC_DECL tvec2 swizzle(comp X, comp Y) const; + GLM_FUNC_DECL tvec3 swizzle(comp X, comp Y, comp Z) const; + GLM_FUNC_DECL tvec4 swizzle(comp X, comp Y, comp Z, comp W) const; + GLM_FUNC_DECL tref4 swizzle(comp X, comp Y, comp Z, comp W); }; #endif//(GLM_COMPONENT == GLM_COMPONENT_CXX98) } @@ -647,19 +649,19 @@ namespace detail /// Returns the absolute value of a half-precision floating-point value /// @see gtc_half_float - half abs(half const & x); + GLM_FUNC_DECL half abs(half const & x); /// Returns the absolute value of a half-precision floating-point two dimensional vector /// @see gtc_half_float - hvec2 abs(hvec2 const & x); + GLM_FUNC_DECL hvec2 abs(hvec2 const & x); /// Returns the absolute value of a half-precision floating-point three dimensional vector /// @see gtc_half_float - hvec3 abs(hvec3 const & x); + GLM_FUNC_DECL hvec3 abs(hvec3 const & x); /// Returns the absolute value of a half-precision floating-point four dimensional vector /// @see gtc_half_float - hvec4 abs(hvec4 const & x); + GLM_FUNC_DECL hvec4 abs(hvec4 const & x); /// Selects which vector each returned component comes /// from. For a component of that is false, the @@ -673,7 +675,7 @@ namespace detail /// where a is a Boolean vector. /// /// @see gtc_half_float - half mix(half const & x, half const & y, bool const & a); + GLM_FUNC_DECL half mix(half const & x, half const & y, bool const & a); /// @} }// namespace glm diff --git a/readme.txt b/readme.txt index 8c9f749d..dc28bc44 100644 --- a/readme.txt +++ b/readme.txt @@ -53,6 +53,8 @@ GLM 0.9.5.0: 2013-XX-XX - Fixed perspective with zNear == 0 (#71) - Fixed slerp when costheta is close to 1 - Fixed mat4x2 value_type constructor +- Fixed glm.natvis for Visual C++ 12 #82 +- Added assert in inversesqrt to detect division by zero. #61 ================================================================================ GLM 0.9.4.3: 2013-03-20 diff --git a/util/glm.natvis b/util/glm.natvis index e98ec488..8ae5d91e 100644 --- a/util/glm.natvis +++ b/util/glm.natvis @@ -1,6 +1,8 @@ + + - + ({x}, {y})