diff --git a/glm/gtc/type_ptr.hpp b/glm/gtc/type_ptr.hpp new file mode 100644 index 00000000..1286261d --- /dev/null +++ b/glm/gtc/type_ptr.hpp @@ -0,0 +1,299 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// OpenGL Mathematics Copyright (c) 2005 - 2010 G-Truc Creation (www.g-truc.net) +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Created : 2009-05-06 +// Updated : 2010-04-30 +// Licence : This source is under MIT License +// File : glm/gtc/type_ptr.hpp +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Dependency: +// - GLM core +/////////////////////////////////////////////////////////////////////////////////////////////////// + +#ifndef glm_gtc_type_ptr +#define glm_gtc_type_ptr + +// Dependency: +#include "../glm.hpp" + +namespace glm +{ + namespace test{ + void main_gtc_type_ptr(); + }//namespace test + + namespace gtc{ + //! GLM_GTC_type_ptr extension: Get access to vectors & matrices value type address. + namespace type_ptr{ + + //! Get the const address of the vector content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tvec2 const & vec + ) + { + return &(vec.x); + } + + //! Get the address of the vector content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr + ( + detail::tvec2 & vec + ) + { + return &(vec.x); + } + + //! Get the const address of the vector content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tvec3 const & vec + ) + { + return &(vec.x); + } + + //! Get the address of the vector content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr + ( + detail::tvec3 & vec + ) + { + return &(vec.x); + } + + //! Get the const address of the vector content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tvec4 const & vec + ) + { + return &(vec.x); + } + + //! Get the address of the vector content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr + ( + detail::tvec4 & vec + ) + { + return &(vec.x); + } + + //! Get the const address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tmat2x2 const & mat + ) + { + return &(mat[0].x); + } + + //! Get the address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr + ( + detail::tmat2x2 & mat + ) + { + return &(mat[0].x); + } + + //! Get the const address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tmat3x3 const & mat + ) + { + return &(mat[0].x); + } + + //! Get the address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr + ( + detail::tmat3x3 & mat + ) + { + return &(mat[0].x); + } + + //! Get the const address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tmat4x4 const & mat + ) + { + return &(mat[0].x); + } + + //! Get the address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr + ( + detail::tmat4x4 & mat + ) + { + return &(mat[0].x); + } + + //! Get the const address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tmat2x3 const & mat + ) + { + return &(mat[0].x); + } + + //! Get the address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr + ( + detail::tmat2x3 & mat + ) + { + return &(mat[0].x); + } + + //! Get the const address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tmat3x2 const & mat + ) + { + return &(mat[0].x); + } + + //! Get the address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr + ( + detail::tmat3x2 & mat + ) + { + return &(mat[0].x); + } + + //! Get the const address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tmat2x4 const & mat + ) + { + return &(mat[0].x); + } + + //! Get the address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr + ( + detail::tmat2x4 & mat + ) + { + return &(mat[0].x); + } + + //! Get the const address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tmat4x2 const & mat + ) + { + return &(mat[0].x); + } + + //! Get the address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr + ( + detail::tmat4x2 & mat + ) + { + return &(mat[0].x); + } + + //! Get the const address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tmat3x4 const & mat + ) + { + return &(mat[0].x); + } + + //! Get the address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr + ( + detail::tmat3x4 & mat + ) + { + return &(mat[0].x); + } + + //! Get the const address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T const * value_ptr + ( + detail::tmat4x3 const & mat + ) + { + return &(mat[0].x); + } + + //! Get the address of the matrix content. + //! From GLM_GTC_type_ptr extension. + template + inline T * value_ptr(detail::tmat4x3 & mat) + { + return &(mat[0].x); + } + + }//namespace type_ptr + }//namespace gtc +}//namespace glm + +#include "type_ptr.inl" + +namespace glm{using namespace gtc::type_ptr;} + +#endif//glm_gtx_type_ptr + diff --git a/glm/gtc/type_ptr.inl b/glm/gtc/type_ptr.inl new file mode 100644 index 00000000..e69de29b