| 1.0.0 API documentation

type_vec1.hpp
Go to the documentation of this file.
1
4 #pragma once
5
6 #include "qualifier.hpp"
7 #if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
8 # include "_swizzle.hpp"
9 #elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
10 # include "_swizzle_func.hpp"
11 #endif
12 #include <cstddef>
13
14 namespace glm
15 {
16 template<typename T, qualifier Q>
17 struct vec<1, T, Q>
18 {
19 // -- Implementation detail --
20
21 typedef T value_type;
22 typedef vec<1, T, Q> type;
23 typedef vec<1, bool, Q> bool_type;
24
25 // -- Data --
26
27 # if GLM_SILENT_WARNINGS == GLM_ENABLE
28 # if GLM_COMPILER & GLM_COMPILER_GCC
29 # pragma GCC diagnostic push
30 # pragma GCC diagnostic ignored "-Wpedantic"
31 # elif GLM_COMPILER & GLM_COMPILER_CLANG
32 # pragma clang diagnostic push
33 # pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
34 # pragma clang diagnostic ignored "-Wnested-anon-types"
35 # elif GLM_COMPILER & GLM_COMPILER_VC
36 # pragma warning(push)
37 # pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union
38 # endif
39 # endif
40
41 # if GLM_CONFIG_XYZW_ONLY
42 T x;
43 # elif GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE
44 union
45 {
46 T x;
47 T r;
48 T s;
49
50 typename detail::storage<1, T, detail::is_aligned<Q>::value>::type data;
51 /*
52 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
53 _GLM_SWIZZLE1_2_MEMBERS(T, Q, x)
54 _GLM_SWIZZLE1_2_MEMBERS(T, Q, r)
55 _GLM_SWIZZLE1_2_MEMBERS(T, Q, s)
56 _GLM_SWIZZLE1_3_MEMBERS(T, Q, x)
57 _GLM_SWIZZLE1_3_MEMBERS(T, Q, r)
58 _GLM_SWIZZLE1_3_MEMBERS(T, Q, s)
59 _GLM_SWIZZLE1_4_MEMBERS(T, Q, x)
60 _GLM_SWIZZLE1_4_MEMBERS(T, Q, r)
61 _GLM_SWIZZLE1_4_MEMBERS(T, Q, s)
62 # endif
63 */
64 };
65 # else
66 union {T x, r, s;};
67 /*
68 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
69 GLM_SWIZZLE_GEN_VEC_FROM_VEC1(T, Q)
70 # endif
71 */
72 # endif
73
74 # if GLM_SILENT_WARNINGS == GLM_ENABLE
75 # if GLM_COMPILER & GLM_COMPILER_CLANG
76 # pragma clang diagnostic pop
77 # elif GLM_COMPILER & GLM_COMPILER_GCC
78 # pragma GCC diagnostic pop
79 # elif GLM_COMPILER & GLM_COMPILER_VC
80 # pragma warning(pop)
81 # endif
82 # endif
83
84 // -- Component accesses --
85
87 typedef length_t length_type;
88 GLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 1;}
89
90 GLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);
91 GLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;
92
93 // -- Implicit basic constructors --
94
95 GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR vec() GLM_DEFAULT_CTOR;
96 GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR vec(vec const& v) GLM_DEFAULT;
97 template<qualifier P>
98 GLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, T, P> const& v);
99
100 // -- Explicit basic constructors --
101
102 GLM_FUNC_DECL GLM_CONSTEXPR explicit vec(T scalar);
103
104 // -- Conversion vector constructors --
105
107 template<typename U, qualifier P>
108 GLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<2, U, P> const& v);
110 template<typename U, qualifier P>
111 GLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<3, U, P> const& v);
113 template<typename U, qualifier P>
114 GLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<4, U, P> const& v);
115
117 template<typename U, qualifier P>
118 GLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<1, U, P> const& v);
119
120 // -- Swizzle constructors --
121 /*
122 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
123 template<int E0>
124 GLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<1, T, Q, E0, -1,-2,-3> const& that)
125 {
126 *this = that();
127 }
128 # endif//GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
129 */
130 // -- Unary arithmetic operators --
131
132 GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator=(vec const& v) GLM_DEFAULT;
133
134 template<typename U>
135 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator=(vec<1, U, Q> const& v);
136 template<typename U>
137 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator+=(U scalar);
138 template<typename U>
139 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator+=(vec<1, U, Q> const& v);
140 template<typename U>
141 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator-=(U scalar);
142 template<typename U>
143 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator-=(vec<1, U, Q> const& v);
144 template<typename U>
145 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator*=(U scalar);
146 template<typename U>
147 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator*=(vec<1, U, Q> const& v);
148 template<typename U>
149 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator/=(U scalar);
150 template<typename U>
151 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator/=(vec<1, U, Q> const& v);
152
153 // -- Increment and decrement operators --
154
155 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator++();
156 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator--();
157 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator++(int);
158 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator--(int);
159
160 // -- Unary bit operators --
161
162 template<typename U>
163 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator%=(U scalar);
164 template<typename U>
165 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator%=(vec<1, U, Q> const& v);
166 template<typename U>
167 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator&=(U scalar);
168 template<typename U>
169 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator&=(vec<1, U, Q> const& v);
170 template<typename U>
171 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator|=(U scalar);
172 template<typename U>
173 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator|=(vec<1, U, Q> const& v);
174 template<typename U>
175 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator^=(U scalar);
176 template<typename U>
177 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator^=(vec<1, U, Q> const& v);
178 template<typename U>
179 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator<<=(U scalar);
180 template<typename U>
181 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator<<=(vec<1, U, Q> const& v);
182 template<typename U>
183 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator>>=(U scalar);
184 template<typename U>
185 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator>>=(vec<1, U, Q> const& v);
186 };
187
188 // -- Unary operators --
189
190 template<typename T, qualifier Q>
191 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v);
192
193 template<typename T, qualifier Q>
194 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v);
195
196 // -- Binary operators --
197
198 template<typename T, qualifier Q>
199 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v, T scalar);
200
201 template<typename T, qualifier Q>
202 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(T scalar, vec<1, T, Q> const& v);
203
204 template<typename T, qualifier Q>
205 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
206
207 template<typename T, qualifier Q>
208 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v, T scalar);
209
210 template<typename T, qualifier Q>
211 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(T scalar, vec<1, T, Q> const& v);
212
213 template<typename T, qualifier Q>
214 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
215
216 template<typename T, qualifier Q>
217 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v, T scalar);
218
219 template<typename T, qualifier Q>
220 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator*(T scalar, vec<1, T, Q> const& v);
221
222 template<typename T, qualifier Q>
223 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
224
225 template<typename T, qualifier Q>
226 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator/(vec<1, T, Q> const& v, T scalar);
227
228 template<typename T, qualifier Q>
229 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator/(T scalar, vec<1, T, Q> const& v);
230
231 template<typename T, qualifier Q>
232 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator/(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
233
234 template<typename T, qualifier Q>
235 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator%(vec<1, T, Q> const& v, T scalar);
236
237 template<typename T, qualifier Q>
238 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator%(T scalar, vec<1, T, Q> const& v);
239
240 template<typename T, qualifier Q>
241 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator%(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
242
243 template<typename T, qualifier Q>
244 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator&(vec<1, T, Q> const& v, T scalar);
245
246 template<typename T, qualifier Q>
247 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator&(T scalar, vec<1, T, Q> const& v);
248
249 template<typename T, qualifier Q>
250 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator&(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
251
252 template<typename T, qualifier Q>
253 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator|(vec<1, T, Q> const& v, T scalar);
254
255 template<typename T, qualifier Q>
256 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator|(T scalar, vec<1, T, Q> const& v);
257
258 template<typename T, qualifier Q>
259 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator|(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
260
261 template<typename T, qualifier Q>
262 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator^(vec<1, T, Q> const& v, T scalar);
263
264 template<typename T, qualifier Q>
265 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator^(T scalar, vec<1, T, Q> const& v);
266
267 template<typename T, qualifier Q>
268 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator^(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
269
270 template<typename T, qualifier Q>
271 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator<<(vec<1, T, Q> const& v, T scalar);
272
273 template<typename T, qualifier Q>
274 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator<<(T scalar, vec<1, T, Q> const& v);
275
276 template<typename T, qualifier Q>
277 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator<<(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
278
279 template<typename T, qualifier Q>
280 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator>>(vec<1, T, Q> const& v, T scalar);
281
282 template<typename T, qualifier Q>
283 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator>>(T scalar, vec<1, T, Q> const& v);
284
285 template<typename T, qualifier Q>
286 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator>>(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
287
288 template<typename T, qualifier Q>
289 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator~(vec<1, T, Q> const& v);
290
291 // -- Boolean operators --
292
293 template<typename T, qualifier Q>
294 GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
295
296 template<typename T, qualifier Q>
297 GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
298
299 template<qualifier Q>
300 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, bool, Q> operator&&(vec<1, bool, Q> const& v1, vec<1, bool, Q> const& v2);
301
302 template<qualifier Q>
303 GLM_FUNC_DECL GLM_CONSTEXPR vec<1, bool, Q> operator||(vec<1, bool, Q> const& v1, vec<1, bool, Q> const& v2);
304 }//namespace glm
305
306 #ifndef GLM_EXTERNAL_TEMPLATE
307 #include "type_vec1.inl"
308 #endif//GLM_EXTERNAL_TEMPLATE
glm::length
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.