///////////////////////////////////////////////////////////////////////////////////////////////////
// OpenGL Mathematics Copyright (c) 2006 G-Truc Creation (www.g-truc.net)
///////////////////////////////////////////////////////////////////////////////////////////////////
// Created : 2006-03-30
// Updated : 2006-11-13
// Licence : This source is under MIT licence
// File    : glm/gtx/outer_product.h
///////////////////////////////////////////////////////////////////////////////////////////////////
// Dependency:
// - GLM core
///////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef __glm_gtx_outer_product__
#define __glm_gtx_outer_product__

// Dependency:
#include "../../glm.h"

namespace glm
{
    template <typename T> detail::tmat2x2<T> outerProductGTX(const detail::tvec2<T>& x, const detail::tvec2<T>& y); //!< \brief Deprecated: included in GLM core function
    template <typename T> detail::tmat3x3<T> outerProductGTX(const detail::tvec3<T>& x, const detail::tvec3<T>& y); //!< \brief Deprecated: included in GLM core function
    template <typename T> detail::tmat4x4<T> outerProductGTX(const detail::tvec4<T>& x, const detail::tvec4<T>& y); //!< \brief Deprecated: included in GLM core function

    namespace gtx
    {
		//! GLM_GTX_outer_product extension: Deprecated: Use GLM core function instead
        namespace outer_product
        {
            template <typename T> inline detail::tmat2x2<T> outerProduct(const detail::tvec2<T>& x, const detail::tvec2<T>& y){return outerProductGTX(x, y);} //!< \brief Deprecated: included in GLM core function
            template <typename T> inline detail::tmat3x3<T> outerProduct(const detail::tvec3<T>& x, const detail::tvec3<T>& y){return outerProductGTX(x, y);} //!< \brief Deprecated: included in GLM core function
            template <typename T> inline detail::tmat4x4<T> outerProduct(const detail::tvec4<T>& x, const detail::tvec4<T>& y){return outerProductGTX(x, y);} //!< \brief Deprecated: included in GLM core function
        }
    }
}

#define GLM_GTX_outer_product namespace gtx::outer_product

#include "outer_product.inl"
/* Deprecated
#ifdef GLM_GTX_INCLUDED
namespace glm{using GLM_GTX_outer_product;}
#endif//GLM_GTX_INCLUDED
*/
#endif//__glm_gtx_outer_product__
