From 1fbda8371fba2236594297be0bfa5f5bdb471e20 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Fri, 30 Apr 2010 10:37:08 +0100 Subject: [PATCH] Added GLM_GTC_type_ptr extension --- glm/gtc/type_ptr.hpp | 299 +++++++++++++++++++++++++++++++++++++++++++ glm/gtc/type_ptr.inl | 0 2 files changed, 299 insertions(+) create mode 100644 glm/gtc/type_ptr.hpp create mode 100644 glm/gtc/type_ptr.inl 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