- Main Page
- Related Pages
- Modules
- Classes
- Files

- File List

# _vectorize.hpp

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)