29 #ifndef glm_core_type_mat3x3 
   30 #define glm_core_type_mat3x3 
   37         template <
typename T> 
struct tvec1;
 
   38         template <
typename T> 
struct tvec2;
 
   39         template <
typename T> 
struct tvec3;
 
   40         template <
typename T> 
struct tvec4;
 
   41         template <
typename T> 
struct tmat2x2;
 
   42         template <
typename T> 
struct tmat2x3;
 
   43         template <
typename T> 
struct tmat2x4;
 
   44         template <
typename T> 
struct tmat3x2;
 
   45         template <
typename T> 
struct tmat3x3;
 
   46         template <
typename T> 
struct tmat3x4;
 
   47         template <
typename T> 
struct tmat4x2;
 
   48         template <
typename T> 
struct tmat4x3;
 
   49         template <
typename T> 
struct tmat4x4;
 
   56                 typedef std::size_t size_type;
 
   57                 typedef tvec3<T> col_type;
 
   58                 typedef tvec3<T> row_type;
 
   59                 typedef tmat3x3<T> type;
 
   60                 typedef tmat3x3<T> transpose_type;
 
   62                 static GLM_FUNC_DECL size_type col_size();
 
   63                 static GLM_FUNC_DECL size_type row_size();
 
   65                 GLM_FUNC_DECL GLM_CONSTEXPR size_type 
length() 
const;
 
   70                 GLM_FUNC_DECL tmat3x3<T> _inverse() 
const;
 
   79                 GLM_FUNC_DECL tmat3x3();
 
   80                 GLM_FUNC_DECL tmat3x3(tmat3x3 
const & m);
 
   82                 GLM_FUNC_DECL 
explicit tmat3x3(
 
   84                 GLM_FUNC_DECL 
explicit tmat3x3(
 
   85                         value_type 
const & s);
 
   86                 GLM_FUNC_DECL 
explicit tmat3x3(
 
   87                         value_type 
const & x0, value_type 
const & y0, value_type 
const & z0,
 
   88                         value_type 
const & x1, value_type 
const & y1, value_type 
const & z1,
 
   89                         value_type 
const & x2, value_type 
const & y2, value_type 
const & z2);
 
   90                 GLM_FUNC_DECL 
explicit tmat3x3(
 
   98                 GLM_FUNC_DECL 
explicit tmat3x3(
 
  103                         typename X1, 
typename Y1, 
typename Z1, 
 
  104                         typename X2, 
typename Y2, 
typename Z2, 
 
  105                         typename X3, 
typename Y3, 
typename Z3
 
  107                 GLM_FUNC_DECL 
explicit tmat3x3(
 
  108                         X1 
const & x1, Y1 
const & y1, Z1 
const & z1, 
 
  109                         X2 
const & x2, Y2 
const & y2, Z2 
const & z2, 
 
  110                         X3 
const & x3, Y3 
const & y3, Z3 
const & z3);
 
  112                 template <
typename V1, 
typename V2, 
typename V3> 
 
  113                 GLM_FUNC_DECL 
explicit tmat3x3(
 
  114                         tvec3<V1> 
const & v1, 
 
  115                         tvec3<V2> 
const & v2,
 
  116                         tvec3<V3> 
const & v3);
 
  119                 template <
typename U> 
 
  120                 GLM_FUNC_DECL 
explicit tmat3x3(tmat3x3<U> 
const & m);
 
  122                 GLM_FUNC_DECL 
explicit tmat3x3(tmat2x2<T> 
const & x);
 
  123                 GLM_FUNC_DECL 
explicit tmat3x3(tmat4x4<T> 
const & x);
 
  124                 GLM_FUNC_DECL 
explicit tmat3x3(tmat2x3<T> 
const & x);
 
  125                 GLM_FUNC_DECL 
explicit tmat3x3(tmat3x2<T> 
const & x);
 
  126                 GLM_FUNC_DECL 
explicit tmat3x3(tmat2x4<T> 
const & x);
 
  127                 GLM_FUNC_DECL 
explicit tmat3x3(tmat4x2<T> 
const & x);
 
  128                 GLM_FUNC_DECL 
explicit tmat3x3(tmat3x4<T> 
const & x);
 
  129                 GLM_FUNC_DECL 
explicit tmat3x3(tmat4x3<T> 
const & x);
 
  132                 GLM_FUNC_DECL col_type & operator[](size_type i);
 
  133                 GLM_FUNC_DECL col_type 
const & operator[](size_type i) 
const;
 
  136                 GLM_FUNC_DECL tmat3x3<T>& operator=  (tmat3x3<T> 
const & m);
 
  137                 template <
typename U> 
 
  138                 GLM_FUNC_DECL tmat3x3<T>& operator=  (tmat3x3<U> 
const & m);
 
  139                 template <
typename U> 
 
  140                 GLM_FUNC_DECL tmat3x3<T>& operator+= (U 
const & s);
 
  141                 template <
typename U> 
 
  142                 GLM_FUNC_DECL tmat3x3<T>& operator+= (tmat3x3<U> 
const & m);
 
  143                 template <
typename U> 
 
  144                 GLM_FUNC_DECL tmat3x3<T>& operator-= (U 
const & s);
 
  145                 template <
typename U> 
 
  146                 GLM_FUNC_DECL tmat3x3<T>& operator-= (tmat3x3<U> 
const & m);
 
  147                 template <
typename U> 
 
  148                 GLM_FUNC_DECL tmat3x3<T>& operator*= (U 
const & s);
 
  149                 template <
typename U> 
 
  150                 GLM_FUNC_DECL tmat3x3<T>& operator*= (tmat3x3<U> 
const & m);
 
  151                 template <
typename U> 
 
  152                 GLM_FUNC_DECL tmat3x3<T>& operator/= (U 
const & s);
 
  153                 template <
typename U> 
 
  154                 GLM_FUNC_DECL tmat3x3<T>& operator/= (tmat3x3<U> 
const & m);
 
  155                 GLM_FUNC_DECL tmat3x3<T>& operator++ ();
 
  156                 GLM_FUNC_DECL tmat3x3<T>& operator-- ();
 
  160         template <
typename T> 
 
  161         tmat3x3<T> operator+ (
 
  162                 tmat3x3<T> 
const & m, 
 
  163                 typename tmat3x3<T>::value_type 
const & s);
 
  165         template <
typename T> 
 
  166         tmat3x3<T> operator+ (
 
  167                 typename tmat3x3<T>::value_type 
const & s, 
 
  168                 tmat3x3<T> 
const & m);
 
  170         template <
typename T> 
 
  171         tmat3x3<T> operator+ (
 
  172                 tmat3x3<T> 
const & m1, 
 
  173                 tmat3x3<T> 
const & m2);
 
  175         template <
typename T> 
 
  176         tmat3x3<T> operator- (
 
  177                 tmat3x3<T> 
const & m, 
 
  178                 typename tmat3x3<T>::value_type 
const & s);
 
  180         template <
typename T> 
 
  181         tmat3x3<T> operator- (
 
  182                 typename tmat3x3<T>::value_type 
const & s, 
 
  183                 tmat3x3<T> 
const & m);
 
  185         template <
typename T> 
 
  186         tmat3x3<T> operator- (
 
  187                 tmat3x3<T> 
const & m1, 
 
  188                 tmat3x3<T> 
const & m2);
 
  190         template <
typename T> 
 
  191         tmat3x3<T> operator* (
 
  192                 tmat3x3<T> 
const & m, 
 
  193                 typename tmat3x3<T>::value_type 
const & s);
 
  195         template <
typename T> 
 
  196         tmat3x3<T> operator* (
 
  197                 typename tmat3x3<T>::value_type 
const & s, 
 
  198                 tmat3x3<T> 
const & m);
 
  200         template <
typename T> 
 
  201         typename tmat3x3<T>::col_type operator* (
 
  202                 tmat3x3<T> 
const & m, 
 
  203                 typename tmat3x3<T>::row_type 
const & v);
 
  205         template <
typename T> 
 
  206         typename tmat3x3<T>::row_type operator* (
 
  207                 typename tmat3x3<T>::col_type 
const & v, 
 
  208                 tmat3x3<T> 
const & m);
 
  210         template <
typename T> 
 
  211         tmat3x3<T> operator* (
 
  212                 tmat3x3<T> 
const & m1, 
 
  213                 tmat3x3<T> 
const & m2);
 
  215         template <
typename T>
 
  216         tmat2x3<T> operator* (
 
  217                 tmat3x3<T> 
const & m1, 
 
  218                 tmat2x3<T> 
const & m2);
 
  220         template <
typename T>
 
  221         tmat4x3<T> operator* (
 
  222                 tmat3x3<T> 
const & m1, 
 
  223                 tmat4x3<T> 
const & m2);
 
  225         template <
typename T> 
 
  226         tmat3x3<T> operator/ (
 
  227                 tmat3x3<T> 
const & m, 
 
  228                 typename tmat3x3<T>::value_type 
const & s);
 
  230         template <
typename T> 
 
  231         tmat3x3<T> operator/ (
 
  232                 typename tmat3x3<T>::value_type 
const & s, 
 
  233                 tmat3x3<T> 
const & m);
 
  235         template <
typename T> 
 
  236         typename tmat3x3<T>::col_type operator/ (
 
  237                 tmat3x3<T> 
const & m, 
 
  238                 typename tmat3x3<T>::row_type 
const & v);
 
  240         template <
typename T> 
 
  241         typename tmat3x3<T>::row_type operator/ (
 
  242                 typename tmat3x3<T>::col_type 
const & v, 
 
  243                 tmat3x3<T> 
const & m);
 
  245         template <
typename T> 
 
  246         tmat3x3<T> operator/ (
 
  247                 tmat3x3<T> 
const & m1, 
 
  248                 tmat3x3<T> 
const & m2);
 
  251         template <
typename T> 
 
  252         tmat3x3<T> 
const operator-  (
 
  253                 tmat3x3<T> 
const & m);
 
  255         template <
typename T> 
 
  256         tmat3x3<T> 
const operator-- (
 
  257                 tmat3x3<T> 
const & m, 
 
  260         template <
typename T> 
 
  261         tmat3x3<T> 
const operator++ (
 
  262                 tmat3x3<T> 
const & m, 
 
  274         typedef detail::tmat3x3<lowp_float>             lowp_mat3;
 
  281         typedef detail::tmat3x3<mediump_float>  mediump_mat3;
 
  288         typedef detail::tmat3x3<highp_float>    highp_mat3;
 
  295         typedef detail::tmat3x3<lowp_float>             lowp_mat3x3;
 
  302         typedef detail::tmat3x3<mediump_float>  mediump_mat3x3;
 
  309         typedef detail::tmat3x3<highp_float>    highp_mat3x3;
 
  314 #ifndef GLM_EXTERNAL_TEMPLATE 
  315 #include "type_mat3x3.inl" 
  318 #endif //glm_core_type_mat3x3