44 #include "../detail/setup.hpp" 
   46 #if !GLM_HAS_RANGE_FOR 
   47 #       error "GLM_GTX_range requires C++11 suppport or 'range for'" 
   50 #include "../gtc/type_ptr.hpp" 
   57         template <
typename T, precision P>
 
   58         detail::component_count_t number_of_elements_(tvec2<T, P> 
const & v){
 
   59                 return detail::component_count(v);
 
   62         template <
typename T, precision P>
 
   63         detail::component_count_t number_of_elements_(tvec3<T, P> 
const & v){
 
   64                 return detail::component_count(v);
 
   67         template <
typename T, precision P>
 
   68         detail::component_count_t number_of_elements_(tvec4<T, P> 
const & v){
 
   69                 return detail::component_count(v);
 
   72         template <
typename genType>
 
   73         detail::component_count_t number_of_elements_(genType 
const & m){
 
   74                 return detail::component_count(m) * detail::component_count(m[0]);
 
   81         template <
typename genType>
 
   82         const typename genType::value_type * begin(genType 
const & v){
 
   86         template <
typename genType>
 
   87         const typename genType::value_type * end(genType 
const & v){
 
   88                 return begin(v) + detail::number_of_elements_(v);
 
   91         template <
typename genType>
 
   92         typename genType::value_type * begin(genType& v){
 
   96         template <
typename genType>
 
   97         typename genType::value_type * end(genType& v){
 
   98                 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.