29 #ifndef glm_core_type_gentype3 
   30 #define glm_core_type_gentype3 
   41         template <
typename T> 
struct tref2;
 
   42         template <
typename T> 
struct tref3;
 
   43         template <
typename T> 
struct tref4;
 
   44         template <
typename T> 
struct tvec2;
 
   45         template <
typename T> 
struct tvec4;
 
   53                 typedef std::size_t size_type;
 
   54                 typedef tvec3<T> type;
 
   55                 typedef tvec3<bool> bool_type;
 
   57                 GLM_FUNC_DECL GLM_CONSTEXPR size_type 
length() 
const;
 
   62 #       if(GLM_COMPONENT == GLM_COMPONENT_CXX11) 
   65 #               if(defined(GLM_SWIZZLE)) 
   66                         _GLM_SWIZZLE3_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, x, y, z)
 
   67                         _GLM_SWIZZLE3_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, r, g, b)
 
   68                         _GLM_SWIZZLE3_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, s, t, p)
 
   69                         _GLM_SWIZZLE3_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, x, y, z)
 
   70                         _GLM_SWIZZLE3_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, r, g, b)
 
   71                         _GLM_SWIZZLE3_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, s, t, p)
 
   72                         _GLM_SWIZZLE3_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, x, y, z)
 
   73                         _GLM_SWIZZLE3_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, r, g, b)
 
   74                         _GLM_SWIZZLE3_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, s, t, p)
 
   75 #               endif//(defined(GLM_SWIZZLE)) 
   77                         struct{value_type r, g, b;};
 
   78                         struct{value_type s, t, p;};
 
   79                         struct{value_type x, y, z;};
 
   81 #       elif(GLM_COMPONENT == GLM_COMPONENT_CXX98) 
   82                 union {value_type x, r, s;};
 
   83                 union {value_type y, g, t;};
 
   84                 union {value_type z, b, p;};
 
   86 #               if(defined(GLM_SWIZZLE)) 
   88                         GLM_SWIZZLE_GEN_REF_FROM_VEC3(T, detail::tvec3, detail::tref2, detail::tref3)
 
   89                         GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, detail::tvec3, detail::tvec2, detail::tvec3, detail::tvec4)
 
   90 #               endif//(defined(GLM_SWIZZLE)) 
   91 #       else //(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) 
   94 #               if(defined(GLM_SWIZZLE)) 
   96                         GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, detail::tvec3, detail::tref2, detail::tref3, x, y, z)
 
   97                         GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, detail::tvec3, detail::tvec2, detail::tvec3, detail::tvec4, x, y, z)
 
   98 #               endif//(defined(GLM_SWIZZLE)) 
   99 #       endif//GLM_COMPONENT 
  104                 GLM_FUNC_DECL value_type & operator[](size_type i);
 
  105                 GLM_FUNC_DECL value_type 
const & operator[](size_type i) 
const;
 
  110                 GLM_FUNC_DECL tvec3();
 
  111                 GLM_FUNC_DECL tvec3(tvec3<T> 
const & v);
 
  116                 GLM_FUNC_DECL 
explicit tvec3(
 
  118                 GLM_FUNC_DECL 
explicit tvec3(
 
  119                         value_type 
const & s);
 
  120                 GLM_FUNC_DECL 
explicit tvec3(
 
  121                         value_type 
const & s1, 
 
  122                         value_type 
const & s2, 
 
  123                         value_type 
const & s3);
 
  129                 template <
typename U> 
 
  130                 GLM_FUNC_DECL 
explicit tvec3(
 
  133                 template <
typename U, 
typename V, 
typename W> 
 
  134                 GLM_FUNC_DECL 
explicit tvec3(
 
  143                 template <
typename A, 
typename B> 
 
  144                 GLM_FUNC_DECL 
explicit tvec3(tvec2<A> 
const & v, B 
const & s);
 
  146                 template <
typename A, 
typename B> 
 
  147                 GLM_FUNC_DECL 
explicit tvec3(A 
const & s, tvec2<B> 
const & v);
 
  149                 template <
typename U> 
 
  150                 GLM_FUNC_DECL 
explicit tvec3(tvec3<U> 
const & v);
 
  152                 template <
typename U> 
 
  153                 GLM_FUNC_DECL 
explicit tvec3(tvec4<U> 
const & v);
 
  158                 GLM_FUNC_DECL tvec3(tref3<T> 
const & r);
 
  160                 template <
typename A, 
typename B> 
 
  161                 GLM_FUNC_DECL 
explicit tvec3(tref2<A> 
const & v, B 
const & s);
 
  163                 template <
typename A, 
typename B> 
 
  164                 GLM_FUNC_DECL 
explicit tvec3(A 
const & s, tref2<B> 
const & v);
 
  166                 template <
int E0, 
int E1, 
int E2>
 
  167                 GLM_FUNC_DECL tvec3(glm::detail::swizzle<3, T, tvec3<T>, E0, E1, E2, -1> 
const & that)
 
  172                 template <
int E0, 
int E1>
 
  173                 GLM_FUNC_DECL tvec3(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> 
const & v, T 
const & s)
 
  175                         *
this = tvec3<T>(v(), s);
 
  178                 template <
int E0, 
int E1>
 
  179                 GLM_FUNC_DECL tvec3(T 
const & s, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> 
const & v)
 
  181                         *
this = tvec3<T>(s, v());
 
  187                 GLM_FUNC_DECL tvec3<T> & operator= (tvec3<T> 
const & v);
 
  188                 template <
typename U> 
 
  189                 GLM_FUNC_DECL tvec3<T> & operator= (tvec3<U> 
const & v);
 
  191                 template <
typename U> 
 
  192                 GLM_FUNC_DECL tvec3<T> & operator+=(U 
const & s);
 
  193                 template <
typename U> 
 
  194                 GLM_FUNC_DECL tvec3<T> & operator+=(tvec3<U> 
const & v);
 
  195                 template <
typename U> 
 
  196                 GLM_FUNC_DECL tvec3<T> & operator-=(U 
const & s);
 
  197                 template <
typename U> 
 
  198                 GLM_FUNC_DECL tvec3<T> & operator-=(tvec3<U> 
const & v);
 
  199                 template <
typename U> 
 
  200                 GLM_FUNC_DECL tvec3<T> & operator*=(U 
const & s);
 
  201                 template <
typename U> 
 
  202                 GLM_FUNC_DECL tvec3<T> & operator*=(tvec3<U> 
const & v);
 
  203                 template <
typename U> 
 
  204                 GLM_FUNC_DECL tvec3<T> & operator/=(U 
const & s);
 
  205                 template <
typename U> 
 
  206                 GLM_FUNC_DECL tvec3<T> & operator/=(tvec3<U> 
const & v);
 
  207                 GLM_FUNC_DECL tvec3<T> & operator++();
 
  208                 GLM_FUNC_DECL tvec3<T> & operator--();
 
  213                 template <
typename U>
 
  214                 GLM_FUNC_DECL tvec3<T> & operator%= (U 
const & s);
 
  215                 template <
typename U>
 
  216                 GLM_FUNC_DECL tvec3<T> & operator%= (tvec3<U> 
const & v);
 
  217                 template <
typename U>
 
  218                 GLM_FUNC_DECL tvec3<T> & operator&= (U 
const & s);
 
  219                 template <
typename U>
 
  220                 GLM_FUNC_DECL tvec3<T> & operator&= (tvec3<U> 
const & v);
 
  221                 template <
typename U>
 
  222                 GLM_FUNC_DECL tvec3<T> & operator|= (U 
const & s);
 
  223                 template <
typename U>
 
  224                 GLM_FUNC_DECL tvec3<T> & operator|= (tvec3<U> 
const & v);
 
  225                 template <
typename U>
 
  226                 GLM_FUNC_DECL tvec3<T> & operator^= (U 
const & s);
 
  227                 template <
typename U>
 
  228                 GLM_FUNC_DECL tvec3<T> & operator^= (tvec3<U> 
const & v);
 
  229                 template <
typename U>
 
  230                 GLM_FUNC_DECL tvec3<T> & operator<<=(U 
const & s);
 
  231                 template <
typename U>
 
  232                 GLM_FUNC_DECL tvec3<T> & operator<<=(tvec3<U> 
const & v);
 
  233                 template <
typename U>
 
  234                 GLM_FUNC_DECL tvec3<T> & operator>>=(U 
const & s);
 
  235                 template <
typename U>
 
  236                 GLM_FUNC_DECL tvec3<T> & operator>>=(tvec3<U> 
const & v);
 
  241                 GLM_FUNC_DECL value_type swizzle(comp X) 
const;
 
  242                 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) 
const;
 
  243                 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) 
const;
 
  244                 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) 
const;
 
  245                 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y);
 
  246                 GLM_FUNC_DECL tref3<T> swizzle(comp X, comp Y, comp Z);
 
  249         template <
typename T>
 
  252                 GLM_FUNC_DECL tref3(T & x, T & y, T & z);
 
  253                 GLM_FUNC_DECL tref3(tref3<T> 
const & r);
 
  254                 GLM_FUNC_DECL 
explicit tref3(tvec3<T> 
const & v);
 
  256                 GLM_FUNC_DECL tref3<T> & operator= (tref3<T> 
const & r);
 
  257                 GLM_FUNC_DECL tref3<T> & operator= (tvec3<T> 
const & v);
 
  259                 GLM_FUNC_DECL tvec3<T> operator() ();
 
  266         GLM_DETAIL_IS_VECTOR(tvec3);
 
  338 #ifndef GLM_EXTERNAL_TEMPLATE 
  339 #include "type_vec3.inl" 
  340 #endif//GLM_EXTERNAL_TEMPLATE 
  342 #endif//glm_core_type_gentype3