///////////////////////////////////////////////////////////////////////////////////////////////////
// OpenGL Mathematics Copyright (c) 2005 - 2008 G-Truc Creation (www.g-truc.net)
///////////////////////////////////////////////////////////////////////////////////////////////////
// Created : 2005-12-27
// Updated : 2005-12-27
// Licence : This source is under MIT License
// File    : glm/gtx/matrix_access.inl
///////////////////////////////////////////////////////////////////////////////////////////////////

namespace glm
{
    template <typename genType>
    inline genType rowGTX(const genType& m, int index, const GLMrowType& x)
    {
        genType Result = m;
        for(typename genType::size_type i = 0; i < genType::row_size; ++i)
			Result[i][index] = x[i];
        return Result;
    }

    template <typename genType>
    inline genType columnGTX(const genType& m, int index, const GLMcolType& x)
    {
        genType Result = m;
        Result[index] = x;
        return Result;
    }
/*
    template <typename T>
    inline tmat2x2<T> rowGTX(tmat2x2<T> const & m, int index, const tvec2<T>& x)
    {
        tmat2x2<T> Result = m;
        Result[0][index] = x[0];
        Result[1][index] = x[1];
        return Result;
    }

    template <typename T>
    inline tmat3x3<T> rowGTX(const tmat3x3<T>& m, int index, const tvec3<T>& x)
    {
        tmat3x3<T> Result = m;
        Result[0][index] = x[0];
        Result[1][index] = x[1];
        Result[2][index] = x[2];
        return Result;
    }

    template <typename T>
    inline tmat4x4<T> rowGTX(const tmat4x4<T>& m, int index, const tvec4<T>& x)
    {
        tmat4x4<T> Result = m;
        Result[0][index] = x[0];
        Result[1][index] = x[1];
        Result[2][index] = x[2];
        Result[3][index] = x[3];
        return Result;
    }

    template <typename T>
    inline tmat2x2<T> columnGTX(const tmat2x2<T> & m, int index, const tvec2<T>& x)
    {
        tmat2x2<T> Result = m;
        Result[index] = x;
        return Result;
    }

    template <typename T>
    inline tmat3x3<T> columnGTX(const tmat3x3<T> & m, int index, const tvec3<T>& x)
    {
        tmat3x3<T> Result = m;
        Result[index] = x;
        return Result;
    }

    template <typename T>
    inline tmat4x4<T> columnGTX(const tmat4x4<T> & m, int index, const tvec4<T>& x)
    {
        tmat4x4<T> Result = m;
        Result[index] = x;
        return Result;
    }
*/
}
