1/////////////////////////////////////////////////////////////////////////////////// 2/// OpenGL Mathematics (glm.g-truc.net) 3/// 4/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 5/// Permission is hereby granted, free of charge, to any person obtaining a copy 6/// of this software and associated documentation files (the "Software"), to deal 7/// in the Software without restriction, including without limitation the rights 8/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9/// copies of the Software, and to permit persons to whom the Software is 10/// furnished to do so, subject to the following conditions: 11/// 12/// The above copyright notice and this permission notice shall be included in 13/// all copies or substantial portions of the Software. 14/// 15/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21/// THE SOFTWARE. 22/// 23/// @ref gtc_matrix_access 24/// @file glm/gtc/matrix_access.inl 25/// @date 2005-12-27 / 2011-06-05 26/// @author Christophe Riccio 27/////////////////////////////////////////////////////////////////////////////////// 28 29namespace glm 30{ 31 template <typename genType> 32 GLM_FUNC_QUALIFIER genType row 33 ( 34 genType const & m, 35 length_t const & index, 36 typename genType::row_type const & x 37 ) 38 { 39 assert(index >= 0 && index < m[0].length()); 40 41 genType Result = m; 42 for(length_t i = 0; i < m.length(); ++i) 43 Result[i][index] = x[i]; 44 return Result; 45 } 46 47 template <typename genType> 48 GLM_FUNC_QUALIFIER typename genType::row_type row 49 ( 50 genType const & m, 51 length_t const & index 52 ) 53 { 54 assert(index >= 0 && index < m[0].length()); 55 56 typename genType::row_type Result; 57 for(length_t i = 0; i < m.length(); ++i) 58 Result[i] = m[i][index]; 59 return Result; 60 } 61 62 template <typename genType> 63 GLM_FUNC_QUALIFIER genType column 64 ( 65 genType const & m, 66 length_t const & index, 67 typename genType::col_type const & x 68 ) 69 { 70 assert(index >= 0 && index < m.length()); 71 72 genType Result = m; 73 Result[index] = x; 74 return Result; 75 } 76 77 template <typename genType> 78 GLM_FUNC_QUALIFIER typename genType::col_type column 79 ( 80 genType const & m, 81 length_t const & index 82 ) 83 { 84 assert(index >= 0 && index < m.length()); 85 86 return m[index]; 87 } 88}//namespace glm 89