40 #include "../detail/setup.hpp"
42 #if !GLM_HAS_RANGE_FOR
43 # error "GLM_GTX_range requires C++11 suppport or 'range for'"
46 #include "../gtc/type_ptr.hpp"
53 template <
typename T, precision P>
54 detail::component_count_t number_of_elements_(tvec2<T, P>
const & v){
55 return detail::component_count(v);
58 template <
typename T, precision P>
59 detail::component_count_t number_of_elements_(tvec3<T, P>
const & v){
60 return detail::component_count(v);
63 template <
typename T, precision P>
64 detail::component_count_t number_of_elements_(tvec4<T, P>
const & v){
65 return detail::component_count(v);
68 template <
typename genType>
69 detail::component_count_t number_of_elements_(genType
const & m){
70 return detail::component_count(m) * detail::component_count(m[0]);
77 template <
typename genType>
78 const typename genType::value_type * begin(genType
const & v){
82 template <
typename genType>
83 const typename genType::value_type * end(genType
const & v){
84 return begin(v) + detail::number_of_elements_(v);
87 template <
typename genType>
88 typename genType::value_type * begin(genType& v){
92 template <
typename genType>
93 typename genType::value_type * end(genType& v){
94 return begin(v) + detail::number_of_elements_(v);
GLM_FUNC_DECL genType::value_type const * value_ptr(genType const &vec)
Return the constant address to the data of the input parameter.