Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #define VECTORIZE2_VEC(func) \
00030 template <typename T> \
00031 GLM_FUNC_QUALIFIER detail::tvec2<T> func( \
00032 detail::tvec2<T> const & v) \
00033 { \
00034 return detail::tvec2<T>( \
00035 func(v.x), \
00036 func(v.y)); \
00037 }
00038
00039 #define VECTORIZE3_VEC(func) \
00040 template <typename T> \
00041 GLM_FUNC_QUALIFIER detail::tvec3<T> func( \
00042 detail::tvec3<T> const & v) \
00043 { \
00044 return detail::tvec3<T>( \
00045 func(v.x), \
00046 func(v.y), \
00047 func(v.z)); \
00048 }
00049
00050 #define VECTORIZE4_VEC(func) \
00051 template <typename T> \
00052 GLM_FUNC_QUALIFIER detail::tvec4<T> func( \
00053 detail::tvec4<T> const & v) \
00054 { \
00055 return detail::tvec4<T>( \
00056 func(v.x), \
00057 func(v.y), \
00058 func(v.z), \
00059 func(v.w)); \
00060 }
00061
00062 #define VECTORIZE_VEC(func) \
00063 VECTORIZE2_VEC(func) \
00064 VECTORIZE3_VEC(func) \
00065 VECTORIZE4_VEC(func)
00066
00067 #define VECTORIZE2_VEC_SCA(func) \
00068 template <typename T> \
00069 GLM_FUNC_QUALIFIER detail::tvec2<T> func \
00070 ( \
00071 detail::tvec2<T> const & x, \
00072 typename detail::tvec2<T>::value_type const & y \
00073 ) \
00074 { \
00075 return detail::tvec2<T>( \
00076 func(x.x, y), \
00077 func(x.y, y)); \
00078 }
00079
00080 #define VECTORIZE3_VEC_SCA(func) \
00081 template <typename T> \
00082 GLM_FUNC_QUALIFIER detail::tvec3<T> func \
00083 ( \
00084 detail::tvec3<T> const & x, \
00085 typename detail::tvec3<T>::value_type const & y \
00086 ) \
00087 { \
00088 return detail::tvec3<T>( \
00089 func(x.x, y), \
00090 func(x.y, y), \
00091 func(x.z, y)); \
00092 }
00093
00094 #define VECTORIZE4_VEC_SCA(func) \
00095 template <typename T> \
00096 GLM_FUNC_QUALIFIER detail::tvec4<T> func \
00097 ( \
00098 detail::tvec4<T> const & x, \
00099 typename detail::tvec4<T>::value_type const & y \
00100 ) \
00101 { \
00102 return detail::tvec4<T>( \
00103 func(x.x, y), \
00104 func(x.y, y), \
00105 func(x.z, y), \
00106 func(x.w, y)); \
00107 }
00108
00109 #define VECTORIZE_VEC_SCA(func) \
00110 VECTORIZE2_VEC_SCA(func) \
00111 VECTORIZE3_VEC_SCA(func) \
00112 VECTORIZE4_VEC_SCA(func)
00113
00114 #define VECTORIZE2_VEC_VEC(func) \
00115 template <typename T> \
00116 GLM_FUNC_QUALIFIER detail::tvec2<T> func \
00117 ( \
00118 detail::tvec2<T> const & x, \
00119 detail::tvec2<T> const & y \
00120 ) \
00121 { \
00122 return detail::tvec2<T>( \
00123 func(x.x, y.x), \
00124 func(x.y, y.y)); \
00125 }
00126
00127 #define VECTORIZE3_VEC_VEC(func) \
00128 template <typename T> \
00129 GLM_FUNC_QUALIFIER detail::tvec3<T> func \
00130 ( \
00131 detail::tvec3<T> const & x, \
00132 detail::tvec3<T> const & y \
00133 ) \
00134 { \
00135 return detail::tvec3<T>( \
00136 func(x.x, y.x), \
00137 func(x.y, y.y), \
00138 func(x.z, y.z)); \
00139 }
00140
00141 #define VECTORIZE4_VEC_VEC(func) \
00142 template <typename T> \
00143 GLM_FUNC_QUALIFIER detail::tvec4<T> func \
00144 ( \
00145 detail::tvec4<T> const & x, \
00146 detail::tvec4<T> const & y \
00147 ) \
00148 { \
00149 return detail::tvec4<T>( \
00150 func(x.x, y.x), \
00151 func(x.y, y.y), \
00152 func(x.z, y.z), \
00153 func(x.w, y.w)); \
00154 }
00155
00156 #define VECTORIZE_VEC_VEC(func) \
00157 VECTORIZE2_VEC_VEC(func) \
00158 VECTORIZE3_VEC_VEC(func) \
00159 VECTORIZE4_VEC_VEC(func)