From e62817b8252974b8a98393275874ee303840bf13 Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Fri, 12 May 2017 18:49:50 +0500 Subject: 2017-05-12 --- depedencies/include/glm/gtx/range.hpp | 85 +++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 depedencies/include/glm/gtx/range.hpp (limited to 'depedencies/include/glm/gtx/range.hpp') diff --git a/depedencies/include/glm/gtx/range.hpp b/depedencies/include/glm/gtx/range.hpp new file mode 100644 index 0000000..00d78b4 --- /dev/null +++ b/depedencies/include/glm/gtx/range.hpp @@ -0,0 +1,85 @@ +/// @ref gtx_range +/// @file glm/gtx/range.hpp +/// @author Joshua Moerman +/// +/// @defgroup gtx_range GLM_GTX_range +/// @ingroup gtx +/// +/// @brief Defines begin and end for vectors and matrices. Useful for range-based for loop. +/// The range is defined over the elements, not over columns or rows (e.g. mat4 has 16 elements). +/// +/// need to be included to use these functionalities. + +#pragma once + +// Dependencies +#include "../detail/setup.hpp" + +#if !GLM_HAS_RANGE_FOR +# error "GLM_GTX_range requires C++11 suppport or 'range for'" +#endif + +#include "../gtc/type_ptr.hpp" +#include "../gtc/vec1.hpp" + +namespace glm +{ + /// @addtogroup gtx_range + /// @{ + + template + inline length_t components(tvec1 const & v) + { + return v.length(); + } + + template + inline length_t components(tvec2 const & v) + { + return v.length(); + } + + template + inline length_t components(tvec3 const & v) + { + return v.length(); + } + + template + inline length_t components(tvec4 const & v) + { + return v.length(); + } + + template + inline length_t components(genType const & m) + { + return m.length() * m[0].length(); + } + + template + inline typename genType::value_type const * begin(genType const & v) + { + return value_ptr(v); + } + + template + inline typename genType::value_type const * end(genType const & v) + { + return begin(v) + components(v); + } + + template + inline typename genType::value_type * begin(genType& v) + { + return value_ptr(v); + } + + template + inline typename genType::value_type * end(genType& v) + { + return begin(v) + components(v); + } + + /// @} +}//namespace glm -- cgit v1.2.3