- Main Page
- Related Pages
- Modules
- Files

- File List

_vectorize.hpp
Go to the documentation of this file.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #define VECTORIZE2_VEC(func) \
30 template <typename T> \
31 GLM_FUNC_QUALIFIER detail::tvec2<T> func( \
32 detail::tvec2<T> const & v) \
33 { \
34 return detail::tvec2<T>( \
35 func(v.x), \
36 func(v.y)); \
37 }
38
39 #define VECTORIZE3_VEC(func) \
40 template <typename T> \
41 GLM_FUNC_QUALIFIER detail::tvec3<T> func( \
42 detail::tvec3<T> const & v) \
43 { \
44 return detail::tvec3<T>( \
45 func(v.x), \
46 func(v.y), \
47 func(v.z)); \
48 }
49
50 #define VECTORIZE4_VEC(func) \
51 template <typename T> \
52 GLM_FUNC_QUALIFIER detail::tvec4<T> func( \
53 detail::tvec4<T> const & v) \
54 { \
55 return detail::tvec4<T>( \
56 func(v.x), \
57 func(v.y), \
58 func(v.z), \
59 func(v.w)); \
60 }
61
62 #define VECTORIZE_VEC(func) \
63 VECTORIZE2_VEC(func) \
64 VECTORIZE3_VEC(func) \
65 VECTORIZE4_VEC(func)
66
67 #define VECTORIZE2_VEC_SCA(func) \
68 template <typename T> \
69 GLM_FUNC_QUALIFIER detail::tvec2<T> func \
70 ( \
71 detail::tvec2<T> const & x, \
72 typename detail::tvec2<T>::value_type const & y \
73 ) \
74 { \
75 return detail::tvec2<T>( \
76 func(x.x, y), \
77 func(x.y, y)); \
78 }
79
80 #define VECTORIZE3_VEC_SCA(func) \
81 template <typename T> \
82 GLM_FUNC_QUALIFIER detail::tvec3<T> func \
83 ( \
84 detail::tvec3<T> const & x, \
85 typename detail::tvec3<T>::value_type const & y \
86 ) \
87 { \
88 return detail::tvec3<T>( \
89 func(x.x, y), \
90 func(x.y, y), \
91 func(x.z, y)); \
92 }
93
94 #define VECTORIZE4_VEC_SCA(func) \
95 template <typename T> \
96 GLM_FUNC_QUALIFIER detail::tvec4<T> func \
97 ( \
98 detail::tvec4<T> const & x, \
99 typename detail::tvec4<T>::value_type const & y \
100 ) \
101 { \
102 return detail::tvec4<T>( \
103 func(x.x, y), \
104 func(x.y, y), \
105 func(x.z, y), \
106 func(x.w, y)); \
107 }
108
109 #define VECTORIZE_VEC_SCA(func) \
110 VECTORIZE2_VEC_SCA(func) \
111 VECTORIZE3_VEC_SCA(func) \
112 VECTORIZE4_VEC_SCA(func)
113
114 #define VECTORIZE2_VEC_VEC(func) \
115 template <typename T> \
116 GLM_FUNC_QUALIFIER detail::tvec2<T> func \
117 ( \
118 detail::tvec2<T> const & x, \
119 detail::tvec2<T> const & y \
120 ) \
121 { \
122 return detail::tvec2<T>( \
123 func(x.x, y.x), \
124 func(x.y, y.y)); \
125 }
126
127 #define VECTORIZE3_VEC_VEC(func) \
128 template <typename T> \
129 GLM_FUNC_QUALIFIER detail::tvec3<T> func \
130 ( \
131 detail::tvec3<T> const & x, \
132 detail::tvec3<T> const & y \
133 ) \
134 { \
135 return detail::tvec3<T>( \
136 func(x.x, y.x), \
137 func(x.y, y.y), \
138 func(x.z, y.z)); \
139 }
140
141 #define VECTORIZE4_VEC_VEC(func) \
142 template <typename T> \
143 GLM_FUNC_QUALIFIER detail::tvec4<T> func \
144 ( \
145 detail::tvec4<T> const & x, \
146 detail::tvec4<T> const & y \
147 ) \
148 { \
149 return detail::tvec4<T>( \
150 func(x.x, y.x), \
151 func(x.y, y.y), \
152 func(x.z, y.z), \
153 func(x.w, y.w)); \
154 }
155
156 #define VECTORIZE_VEC_VEC(func) \
157 VECTORIZE2_VEC_VEC(func) \
158 VECTORIZE3_VEC_VEC(func) \
159 VECTORIZE4_VEC_VEC(func)