37 #ifndef GLM_GTC_half_float 
   38 #define GLM_GTC_half_float GLM_VERSION 
   43 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) 
   44 #       pragma message("GLM: GLM_GTC_half_float extension included") 
   50 #if(GLM_COMPONENT == GLM_COMPONENT_CXX98) 
   55                 typedef half value_type;
 
   56                 typedef std::size_t size_type;
 
   58                 GLM_FUNC_DECL size_type 
length() 
const;
 
   59                 static GLM_FUNC_DECL size_type value_size();
 
   61                 typedef tvec2<half> type;
 
   62                 typedef tvec2<bool> bool_type;
 
   72                 half & operator[](size_type i);
 
   73                 half const & operator[](size_type i) 
const;
 
   79                 tvec2(tvec2<half> 
const & v);
 
   94                 tvec2(tref2<half> 
const & r);
 
  100                 template <
typename U> 
 
  101                 explicit tvec2(U 
const & x);
 
  103                 template <
typename U, 
typename V> 
 
  104                 explicit tvec2(U 
const & x, V 
const & y);                       
 
  110                 template <
typename U> 
 
  111                 explicit tvec2(tvec2<U> 
const & v);
 
  113                 template <
typename U> 
 
  114                 explicit tvec2(tvec3<U> 
const & v);
 
  116                 template <
typename U> 
 
  117                 explicit tvec2(tvec4<U> 
const & v);
 
  122                 tvec2<half>& operator= (tvec2<half> 
const & v);
 
  124                 tvec2<half>& operator+=(
half const & s);
 
  125                 tvec2<half>& operator+=(tvec2<half> 
const & v);
 
  126                 tvec2<half>& operator-=(
half const & s);
 
  127                 tvec2<half>& operator-=(tvec2<half> 
const & v);
 
  128                 tvec2<half>& operator*=(
half const & s);
 
  129                 tvec2<half>& operator*=(tvec2<half> 
const & v);
 
  130                 tvec2<half>& operator/=(
half const & s);
 
  131                 tvec2<half>& operator/=(tvec2<half> 
const & v);
 
  132                 tvec2<half>& operator++();
 
  133                 tvec2<half>& operator--();
 
  138                 half swizzle(comp X) 
const;
 
  139                 tvec2<half> swizzle(comp X, comp Y) 
const;
 
  140                 tvec3<half> swizzle(comp X, comp Y, comp Z) 
const;
 
  141                 tvec4<half> swizzle(comp X, comp Y, comp Z, comp W) 
const;
 
  142                 tref2<half> swizzle(comp X, comp Y);
 
  149                 typedef half value_type;
 
  150                 typedef std::size_t size_type;
 
  151                 GLM_FUNC_DECL size_type 
length() 
const;
 
  152                 static GLM_FUNC_DECL size_type value_size();
 
  154                 typedef tvec3<half> type;
 
  155                 typedef tvec3<bool> bool_type;
 
  165                 half & operator[](size_type i);
 
  166                 half const & operator[](size_type i) 
const;
 
  172                 tvec3(tvec3<half> 
const & v);
 
  177                 explicit tvec3(ctor);
 
  188                 tvec3(tref3<half> 
const & r);
 
  194                 template <
typename U> 
 
  195                 explicit tvec3(U 
const & x);
 
  197                 template <
typename U, 
typename V, 
typename W> 
 
  198                 explicit tvec3(U 
const & x, V 
const & y, W 
const & z);                  
 
  204                 template <
typename A, 
typename B> 
 
  205                 explicit tvec3(tvec2<A> 
const & v, B 
const & s);
 
  207                 template <
typename A, 
typename B> 
 
  208                 explicit tvec3(A 
const & s, tvec2<B> 
const & v);
 
  210                 template <
typename U> 
 
  211                 explicit tvec3(tvec3<U> 
const & v);
 
  213                 template <
typename U> 
 
  214                 explicit tvec3(tvec4<U> 
const & v);
 
  219                 tvec3<half>& operator= (tvec3<half> 
const & v);
 
  221                 tvec3<half>& operator+=(
half const & s);
 
  222                 tvec3<half>& operator+=(tvec3<half> 
const & v);
 
  223                 tvec3<half>& operator-=(
half const & s);
 
  224                 tvec3<half>& operator-=(tvec3<half> 
const & v);
 
  225                 tvec3<half>& operator*=(
half const & s);
 
  226                 tvec3<half>& operator*=(tvec3<half> 
const & v);
 
  227                 tvec3<half>& operator/=(
half const & s);
 
  228                 tvec3<half>& operator/=(tvec3<half> 
const & v);
 
  229                 tvec3<half>& operator++();
 
  230                 tvec3<half>& operator--();
 
  235                 half swizzle(comp X) 
const;
 
  236                 tvec2<half> swizzle(comp X, comp Y) 
const;
 
  237                 tvec3<half> swizzle(comp X, comp Y, comp Z) 
const;
 
  238                 tvec4<half> swizzle(comp X, comp Y, comp Z, comp W) 
const;
 
  239                 tref3<half> swizzle(comp X, comp Y, comp Z);
 
  246                 typedef half value_type;
 
  247                 typedef std::size_t size_type;
 
  248                 GLM_FUNC_DECL size_type 
length() 
const;
 
  249                 static GLM_FUNC_DECL size_type value_size();
 
  251                 typedef tvec4<half> type;
 
  252                 typedef tvec4<bool> bool_type;
 
  262                 half & operator[](size_type i);
 
  263                 half const & operator[](size_type i) 
const;
 
  269                 tvec4(tvec4<half> 
const & v);
 
  274                 explicit tvec4(ctor);
 
  286                 tvec4(tref4<half> 
const & r);
 
  292                 template <
typename U> 
 
  293                 explicit tvec4(U 
const & x);
 
  295                 template <
typename A, 
typename B, 
typename C, 
typename D> 
 
  296                 explicit tvec4(A 
const & x, B 
const & y, C 
const & z, D 
const & w);                     
 
  302                 template <
typename A, 
typename B, 
typename C> 
 
  303                 explicit tvec4(tvec2<A> 
const & v, B 
const & s1, C 
const & s2);
 
  305                 template <
typename A, 
typename B, 
typename C> 
 
  306                 explicit tvec4(A 
const & s1, tvec2<B> 
const & v, C 
const & s2);
 
  308                 template <
typename A, 
typename B, 
typename C> 
 
  309                 explicit tvec4(A 
const & s1, B 
const & s2, tvec2<C> 
const & v);
 
  311                 template <
typename A, 
typename B> 
 
  312                 explicit tvec4(tvec3<A> 
const & v, B 
const & s);
 
  314                 template <
typename A, 
typename B> 
 
  315                 explicit tvec4(A 
const & s, tvec3<B> 
const & v);
 
  317                 template <
typename A, 
typename B> 
 
  318                 explicit tvec4(tvec2<A> 
const & v1, tvec2<B> 
const & v2);
 
  320                 template <
typename U> 
 
  321                 explicit tvec4(tvec4<U> 
const & v);
 
  326                 tvec4<half>& operator= (tvec4<half> 
const & v);
 
  328                 tvec4<half>& operator+=(
half const & s);
 
  329                 tvec4<half>& operator+=(tvec4<half> 
const & v);
 
  330                 tvec4<half>& operator-=(
half const & s);
 
  331                 tvec4<half>& operator-=(tvec4<half> 
const & v);
 
  332                 tvec4<half>& operator*=(
half const & s);
 
  333                 tvec4<half>& operator*=(tvec4<half> 
const & v);
 
  334                 tvec4<half>& operator/=(
half const & s);
 
  335                 tvec4<half>& operator/=(tvec4<half> 
const & v);
 
  336                 tvec4<half>& operator++();
 
  337                 tvec4<half>& operator--();
 
  342                 half swizzle(comp X) 
const;
 
  343                 tvec2<half> swizzle(comp X, comp Y) 
const;
 
  344                 tvec3<half> swizzle(comp X, comp Y, comp Z) 
const;
 
  345                 tvec4<half> swizzle(comp X, comp Y, comp Z, comp W) 
const;
 
  346                 tref4<half> swizzle(comp X, comp Y, comp Z, comp W);
 
  348 #endif//(GLM_COMPONENT == GLM_COMPONENT_CXX98) 
  361         typedef detail::tvec2<detail::half>     
hvec2;
 
  365         typedef detail::tvec3<detail::half>     
hvec3;
 
  369         typedef detail::tvec4<detail::half>     
hvec4;
 
  373         typedef detail::tmat2x2<detail::half>   
hmat2;
 
  377         typedef detail::tmat3x3<detail::half>   
hmat3;
 
  381         typedef detail::tmat4x4<detail::half>   
hmat4;
 
  385         typedef detail::tmat2x2<detail::half>   
hmat2x2;
 
  389         typedef detail::tmat2x3<detail::half>   
hmat2x3;
 
  393         typedef detail::tmat2x4<detail::half>   
hmat2x4;
 
  397         typedef detail::tmat3x2<detail::half>   
hmat3x2;
 
  401         typedef detail::tmat3x3<detail::half>   
hmat3x3;
 
  405         typedef detail::tmat3x4<detail::half>   
hmat3x4;
 
  409         typedef detail::tmat4x2<detail::half>   
hmat4x2;    
 
  413         typedef detail::tmat4x3<detail::half>   
hmat4x3;
 
  417         typedef detail::tmat4x4<detail::half>   
hmat4x4;
 
  438 #include "half_float.inl" 
  440 #endif//GLM_GTC_half_float