Home | History | Annotate | Download | only in gtc
      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 
     29 namespace 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