master
ブランチ master
VulkanExample / dep / include / glm / gtx / iteration.hpp
3.8 KB、87行 生 Blame 履歴
1/// @ref gtx_iteration
2/// @file glm/gtx/iteration.hpp
3///
4/// @defgroup gtx_iteration GLM_GTX_iteration
5/// @ingroup gtx
6///
7/// Include <glm/gtx/iteration.hpp> to use the features of this extension.
8///
9/// Defines begin and end for vectors, matrices and quaternions useful for range based for loop construct
10
11#pragma once
12
13// Dependencies
14#include "../detail/setup.hpp"
15#include "../detail/qualifier.hpp"
16
17#ifndef GLM_ENABLE_EXPERIMENTAL
18# error "GLM: GLM_GTX_iteration is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
19#elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
20# pragma message("GLM: GLM_GTX_iteration extension included")
21#endif
22
23#include <iterator>
24
25namespace glm
26{
27 /// @addtogroup gtx_iteration
28 /// @{
29 template<length_t L,typename T,qualifier Q>
30 GLM_FUNC_DECL GLM_CONSTEXPR T* begin(vec<L, T, Q>& v);
31 template<length_t C,length_t R,typename T,qualifier Q>
32 GLM_FUNC_DECL GLM_CONSTEXPR T* begin(mat<C, R, T, Q>& m);
33 template<typename T,qualifier Q>
34 GLM_FUNC_DECL GLM_CONSTEXPR T* begin(qua<T, Q>& q);
35 template<length_t L,typename T,qualifier Q>
36 GLM_FUNC_DECL GLM_CONSTEXPR const T* begin(const vec<L, T, Q>& v);
37 template<length_t C,length_t R,typename T,qualifier Q>
38 GLM_FUNC_DECL GLM_CONSTEXPR const T* begin(const mat<C, R, T, Q>& m);
39 template<typename T,qualifier Q>
40 GLM_FUNC_DECL GLM_CONSTEXPR const T* begin(const qua<T, Q>& q);
41
42 template<length_t L,typename T,qualifier Q>
43 GLM_FUNC_DECL GLM_CONSTEXPR T* end(vec<L, T, Q>& v);
44 template<length_t C,length_t R,typename T,qualifier Q>
45 GLM_FUNC_DECL GLM_CONSTEXPR T* end(mat<C, R, T, Q>& m);
46 template<typename T,qualifier Q>
47 GLM_FUNC_DECL GLM_CONSTEXPR T* end(qua<T, Q>& q);
48 template<length_t L,typename T,qualifier Q>
49 GLM_FUNC_DECL GLM_CONSTEXPR const T* end(const vec<L, T, Q>& v);
50 template<length_t C,length_t R,typename T,qualifier Q>
51 GLM_FUNC_DECL GLM_CONSTEXPR const T* end(const mat<C, R, T, Q>& m);
52 template<typename T,qualifier Q>
53 GLM_FUNC_DECL GLM_CONSTEXPR const T* end(const qua<T, Q>& q);
54
55 // Reverse iteration
56 // rbegin,rend
57 template<length_t L,typename T,qualifier Q>
58 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rbegin(vec<L, T, Q>& v);
59 template<length_t C,length_t R,typename T,qualifier Q>
60 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rbegin(mat<C, R, T, Q>& m);
61 template<typename T,qualifier Q>
62 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rbegin(qua<T, Q>& q);
63 template<length_t L,typename T,qualifier Q>
64 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rbegin(const vec<L, T, Q>& v);
65 template<length_t C,length_t R,typename T,qualifier Q>
66 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rbegin(const mat<C, R, T, Q>& m);
67 template<typename T,qualifier Q>
68 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rbegin(const qua<T, Q>& q);
69
70 template<length_t L,typename T,qualifier Q>
71 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rend(vec<L, T, Q>& v);
72 template<length_t C,length_t R,typename T,qualifier Q>
73 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rend(mat<C, R, T, Q>& m);
74 template<typename T,qualifier Q>
75 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rend(qua<T, Q>& q);
76 template<length_t L,typename T,qualifier Q>
77 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rend(const vec<L, T, Q>& v);
78 template<length_t C,length_t R,typename T,qualifier Q>
79 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rend(const mat<C, R, T, Q>& m);
80 template<typename T,qualifier Q>
81 GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rend(const qua<T, Q>& q);
82
83
84 /// @}
85}//namespace glm
86
87#include "iteration.inl"