0.9.9 API documenation
_swizzle_func.hpp
Go to the documentation of this file.
1 
4 #pragma once
5 
6 #define GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, CONST, A, B) \
7  vec<2, T, Q> A ## B() CONST \
8  { \
9  return vec<2, T, Q>(this->A, this->B); \
10  }
11 
12 #define GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, CONST, A, B, C) \
13  vec<3, T, Q> A ## B ## C() CONST \
14  { \
15  return vec<3, T, Q>(this->A, this->B, this->C); \
16  }
17 
18 #define GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, CONST, A, B, C, D) \
19  vec<4, T, Q> A ## B ## C ## D() CONST \
20  { \
21  return vec<4, T, Q>(this->A, this->B, this->C, this->D); \
22  }
23 
24 #define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(T, P, L, CONST, A, B) \
25  template<typename T> \
26  vec<L, T, Q> vec<L, T, Q>::A ## B() CONST \
27  { \
28  return vec<2, T, Q>(this->A, this->B); \
29  }
30 
31 #define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(T, P, L, CONST, A, B, C) \
32  template<typename T> \
33  vec<3, T, Q> vec<L, T, Q>::A ## B ## C() CONST \
34  { \
35  return vec<3, T, Q>(this->A, this->B, this->C); \
36  }
37 
38 #define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(T, P, L, CONST, A, B, C, D) \
39  template<typename T> \
40  vec<4, T, Q> vec<L, T, Q>::A ## B ## C ## D() CONST \
41  { \
42  return vec<4, T, Q>(this->A, this->B, this->C, this->D); \
43  }
44 
45 #define GLM_MUTABLE
46 
47 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, A, B) \
48  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, A, B) \
49  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, B, A)
50 
51 #define GLM_SWIZZLE_GEN_REF_FROM_VEC2(T, P) \
52  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, x, y) \
53  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, r, g) \
54  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, s, t)
55 
56 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
57  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \
58  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \
59  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \
60  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \
61  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \
62  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B)
63 
64 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
65  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, B, C) \
66  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, C, B) \
67  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, A, C) \
68  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, C, A) \
69  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, A, B) \
70  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, B, A)
71 
72 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, A, B, C) \
73  GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
74  GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C)
75 
76 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3(T, P) \
77  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, x, y, z) \
78  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, r, g, b) \
79  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, s, t, p)
80 
81 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
82  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \
83  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \
84  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, D) \
85  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \
86  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \
87  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, D) \
88  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \
89  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B) \
90  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, D) \
91  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, A) \
92  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, B) \
93  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, C)
94 
95 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
96  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, C) \
97  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, D) \
98  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, B) \
99  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, D) \
100  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, B) \
101  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, C) \
102  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, C) \
103  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, D) \
104  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, A) \
105  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, D) \
106  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, A) \
107  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, C) \
108  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, B) \
109  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, D) \
110  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, A) \
111  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, D) \
112  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, A) \
113  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, B) \
114  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, B) \
115  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, C) \
116  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, A) \
117  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, C) \
118  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, A) \
119  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, B)
120 
121 #define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
122  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, B, D) \
123  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, D, B) \
124  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, B, C) \
125  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, C, B) \
126  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, D, C) \
127  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, C, D) \
128  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, A, D) \
129  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, D, A) \
130  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, A, C) \
131  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, C, A) \
132  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, D, C) \
133  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, C, D) \
134  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, A, D) \
135  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, D, A) \
136  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, A, B) \
137  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, B, A) \
138  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, D, B) \
139  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, B, D) \
140  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, B, A) \
141  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, A, B) \
142  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, B, C) \
143  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, C, B) \
144  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, A, C) \
145  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, C, A)
146 
147 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, A, B, C, D) \
148  GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
149  GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
150  GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D)
151 
152 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4(T, P) \
153  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, x, y, z, w) \
154  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, r, g, b, a) \
155  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, s, t, p, q)
156 
157 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \
158  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \
159  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \
160  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \
161  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B)
162 
163 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \
164  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \
165  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \
166  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \
167  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \
168  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \
169  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \
170  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \
171  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B)
172 
173 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B) \
174  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \
175  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \
176  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \
177  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \
178  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \
179  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \
180  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \
181  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \
182  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \
183  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \
184  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \
185  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \
186  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \
187  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \
188  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \
189  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B)
190 
191 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, A, B) \
192  GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \
193  GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \
194  GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B)
195 
196 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, P) \
197  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, x, y) \
198  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, r, g) \
199  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, s, t)
200 
201 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
202  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \
203  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \
204  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \
205  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \
206  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \
207  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \
208  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \
209  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \
210  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C)
211 
212 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
213  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \
214  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \
215  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \
216  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \
217  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \
218  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \
219  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \
220  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \
221  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \
222  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \
223  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \
224  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \
225  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \
226  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \
227  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \
228  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \
229  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \
230  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \
231  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \
232  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \
233  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \
234  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \
235  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \
236  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \
237  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \
238  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \
239  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C)
240 
241 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
242  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \
243  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \
244  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \
245  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \
246  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \
247  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \
248  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \
249  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \
250  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \
251  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \
252  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \
253  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \
254  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \
255  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \
256  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \
257  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \
258  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \
259  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \
260  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \
261  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \
262  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \
263  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \
264  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \
265  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \
266  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \
267  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \
268  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \
269  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \
270  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \
271  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \
272  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \
273  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \
274  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \
275  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \
276  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \
277  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \
278  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \
279  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \
280  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \
281  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \
282  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \
283  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \
284  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \
285  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \
286  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \
287  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \
288  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \
289  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \
290  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \
291  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \
292  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \
293  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \
294  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \
295  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \
296  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \
297  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \
298  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \
299  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \
300  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \
301  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \
302  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \
303  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \
304  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \
305  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \
306  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \
307  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \
308  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \
309  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \
310  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \
311  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \
312  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \
313  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \
314  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \
315  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \
316  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \
317  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \
318  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \
319  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \
320  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \
321  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \
322  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C)
323 
324 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, A, B, C) \
325  GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
326  GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
327  GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C)
328 
329 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, P) \
330  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, x, y, z) \
331  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, r, g, b) \
332  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, s, t, p)
333 
334 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
335  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \
336  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \
337  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \
338  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, D) \
339  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \
340  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \
341  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \
342  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, D) \
343  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \
344  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \
345  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C) \
346  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, D) \
347  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, A) \
348  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, B) \
349  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, C) \
350  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, D)
351 
352 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
353  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \
354  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \
355  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \
356  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, D) \
357  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \
358  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \
359  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \
360  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, D) \
361  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \
362  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \
363  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \
364  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, D) \
365  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, A) \
366  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, B) \
367  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, C) \
368  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, D) \
369  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \
370  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \
371  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \
372  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, D) \
373  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \
374  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \
375  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \
376  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, D) \
377  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \
378  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \
379  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \
380  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, D) \
381  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, A) \
382  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, B) \
383  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, C) \
384  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, D) \
385  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \
386  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \
387  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \
388  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, D) \
389  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \
390  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \
391  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \
392  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, D) \
393  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \
394  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \
395  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C) \
396  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, D) \
397  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, A) \
398  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, B) \
399  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, C) \
400  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, D) \
401  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, A) \
402  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, B) \
403  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, C) \
404  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, D) \
405  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, A) \
406  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, B) \
407  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, C) \
408  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, D) \
409  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, A) \
410  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, B) \
411  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, C) \
412  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, D) \
413  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, A) \
414  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, B) \
415  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, C) \
416  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, D)
417 
418 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
419  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \
420  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \
421  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \
422  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, D) \
423  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \
424  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \
425  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \
426  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, D) \
427  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \
428  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \
429  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \
430  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, D) \
431  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, A) \
432  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, B) \
433  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, C) \
434  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, D) \
435  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \
436  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \
437  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \
438  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, D) \
439  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \
440  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \
441  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \
442  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, D) \
443  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \
444  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \
445  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \
446  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, D) \
447  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, A) \
448  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, B) \
449  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, C) \
450  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, D) \
451  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \
452  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \
453  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \
454  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, D) \
455  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \
456  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \
457  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \
458  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, D) \
459  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \
460  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \
461  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \
462  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, D) \
463  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, A) \
464  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, B) \
465  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, C) \
466  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, D) \
467  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, A) \
468  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, B) \
469  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, C) \
470  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, D) \
471  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, A) \
472  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, B) \
473  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, C) \
474  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, D) \
475  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, A) \
476  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, B) \
477  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, C) \
478  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, D) \
479  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, A) \
480  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, B) \
481  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, C) \
482  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, D) \
483  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \
484  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \
485  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \
486  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, D) \
487  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \
488  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \
489  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \
490  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, D) \
491  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \
492  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \
493  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \
494  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, D) \
495  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, A) \
496  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, B) \
497  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, C) \
498  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, D) \
499  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \
500  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \
501  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \
502  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, D) \
503  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \
504  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \
505  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \
506  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, D) \
507  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \
508  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \
509  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \
510  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, D) \
511  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, A) \
512  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, B) \
513  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, C) \
514  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, D) \
515  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \
516  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \
517  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \
518  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, D) \
519  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \
520  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \
521  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \
522  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, D) \
523  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \
524  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \
525  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \
526  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, D) \
527  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, A) \
528  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, B) \
529  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, C) \
530  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, D) \
531  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, A) \
532  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, B) \
533  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, C) \
534  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, D) \
535  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, A) \
536  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, B) \
537  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, C) \
538  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, D) \
539  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, A) \
540  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, B) \
541  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, C) \
542  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, D) \
543  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, A) \
544  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, B) \
545  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, C) \
546  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, D) \
547  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \
548  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \
549  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \
550  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, D) \
551  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \
552  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \
553  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \
554  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, D) \
555  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \
556  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \
557  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \
558  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, D) \
559  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, A) \
560  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, B) \
561  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, C) \
562  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, D) \
563  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \
564  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \
565  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \
566  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, D) \
567  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \
568  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \
569  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \
570  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, D) \
571  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \
572  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \
573  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \
574  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, D) \
575  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, A) \
576  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, B) \
577  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, C) \
578  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, D) \
579  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \
580  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \
581  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \
582  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, D) \
583  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \
584  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \
585  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \
586  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, D) \
587  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \
588  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \
589  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C) \
590  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, D) \
591  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, A) \
592  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, B) \
593  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, C) \
594  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, D) \
595  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, A) \
596  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, B) \
597  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, C) \
598  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, D) \
599  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, A) \
600  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, B) \
601  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, C) \
602  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, D) \
603  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, A) \
604  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, B) \
605  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, C) \
606  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, D) \
607  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, A) \
608  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, B) \
609  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, C) \
610  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, D) \
611  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, A) \
612  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, B) \
613  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, C) \
614  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, D) \
615  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, A) \
616  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, B) \
617  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, C) \
618  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, D) \
619  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, A) \
620  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, B) \
621  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, C) \
622  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, D) \
623  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, A) \
624  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, B) \
625  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, C) \
626  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, D) \
627  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, A) \
628  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, B) \
629  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, C) \
630  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, D) \
631  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, A) \
632  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, B) \
633  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, C) \
634  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, D) \
635  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, A) \
636  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, B) \
637  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, C) \
638  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, D) \
639  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, A) \
640  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, B) \
641  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, C) \
642  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, D) \
643  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, A) \
644  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, B) \
645  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, C) \
646  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, D) \
647  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, A) \
648  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, B) \
649  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, C) \
650  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, D) \
651  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, A) \
652  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, B) \
653  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, C) \
654  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, D) \
655  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, A) \
656  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, B) \
657  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, C) \
658  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, D) \
659  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, A) \
660  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, B) \
661  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, C) \
662  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, D) \
663  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, A) \
664  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, B) \
665  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, C) \
666  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, D) \
667  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, A) \
668  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, B) \
669  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, C) \
670  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, D) \
671  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, A) \
672  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, B) \
673  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, C) \
674  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, D)
675 
676 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, A, B, C, D) \
677  GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
678  GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
679  GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D)
680 
681 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, P) \
682  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, x, y, z, w) \
683  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, r, g, b, a) \
684  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, s, t, p, q)
685