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.