36 #if GLM_HAS_MAKE_SIGNED 
   37 #       include <type_traits> 
   40 #if GLM_HAS_EXTENDED_INTEGER_TYPE 
   47 #       if GLM_HAS_EXTENDED_INTEGER_TYPE 
   58 #               if(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available 
   61 #               elif GLM_COMPILER & GLM_COMPILER_VC 
   62                         typedef signed __int64                  sint64;
 
   63                         typedef unsigned __int64                
uint64;
 
   64 #               elif GLM_COMPILER & GLM_COMPILER_GCC 
   65                         __extension__ 
typedef signed long long          sint64;
 
   66                         __extension__ 
typedef unsigned long long        uint64;
 
   67 #               else//unknown compiler 
   68                         typedef signed long     long            sint64;
 
   69                         typedef unsigned long long              uint64;
 
   72                 typedef signed char                                     int8;
 
   73                 typedef signed short                            int16;
 
   74                 typedef signed int                                      int32;
 
   77                 typedef unsigned char                           uint8;
 
   78                 typedef unsigned short                          uint16;
 
   79                 typedef unsigned int                            uint32;
 
   83         typedef signed int                                              lowp_int_t;
 
   84         typedef signed int                                              mediump_int_t;
 
   85         typedef signed int                                              highp_int_t;
 
   87         typedef unsigned int                                    lowp_uint_t;
 
   88         typedef unsigned int                                    mediump_uint_t;
 
   89         typedef unsigned int                                    highp_uint_t;
 
   91 #       if GLM_HAS_MAKE_SIGNED 
   92                 using std::make_signed;
 
   93                 using std::make_unsigned;
 
   95 #       else//GLM_HAS_MAKE_SIGNED 
   96                 template <
typename genType>
 
  101                 struct make_signed<char>
 
  107                 struct make_signed<short>
 
  113                 struct make_signed<int>
 
  119                 struct make_signed<long>
 
  125                 struct make_signed<long long>
 
  127                         typedef long long type;
 
  131                 struct make_signed<unsigned char>
 
  137                 struct make_signed<unsigned short>
 
  143                 struct make_signed<unsigned int>
 
  149                 struct make_signed<unsigned long>
 
  155                 struct make_signed<unsigned long long>
 
  157                         typedef long long type;
 
  160                 template <
typename genType>
 
  165                 struct make_unsigned<char>
 
  167                         typedef unsigned char type;
 
  171                 struct make_unsigned<short>
 
  173                         typedef unsigned short type;
 
  177                 struct make_unsigned<int>
 
  179                         typedef unsigned int type;
 
  183                 struct make_unsigned<long>
 
  185                         typedef unsigned long type;
 
  189                 struct make_unsigned<long long>
 
  191                         typedef unsigned long long type;
 
  195                 struct make_unsigned<unsigned char>
 
  197                         typedef unsigned char type;
 
  201                 struct make_unsigned<unsigned short>
 
  203                         typedef unsigned short type;
 
  207                 struct make_unsigned<unsigned int>
 
  209                         typedef unsigned int type;
 
  213                 struct make_unsigned<unsigned long>
 
  215                         typedef unsigned long type;
 
  219                 struct make_unsigned<unsigned long long>
 
  221                         typedef unsigned long long type;
 
  223 #       endif//GLM_HAS_MAKE_SIGNED 
  281 #if(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) 
  282         typedef mediump_int                                     int_t;
 
  283 #elif(defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) 
  284         typedef highp_int                                       int_t;
 
  285 #elif(!defined(GLM_PRECISION_HIGHP_INT) && defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) 
  286         typedef mediump_int                                     int_t;
 
  287 #elif(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && defined(GLM_PRECISION_LOWP_INT)) 
  288         typedef lowp_int                                        int_t;
 
  290 #       error "GLM error: multiple default precision requested for signed integer types" 
  293 #if(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) 
  294         typedef mediump_uint                            uint_t;
 
  295 #elif(defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) 
  296         typedef highp_uint                                      uint_t;
 
  297 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) 
  298         typedef mediump_uint                            uint_t;
 
  299 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && defined(GLM_PRECISION_LOWP_UINT)) 
  300         typedef lowp_uint                                       uint_t;
 
  302 #       error "GLM error: multiple default precision requested for unsigned integer types" 
  314 #ifndef GLM_STATIC_ASSERT_NULL 
  315         GLM_STATIC_ASSERT(
sizeof(
glm::int8) == 1, 
"int8 size isn't 1 byte on this platform");
 
  316         GLM_STATIC_ASSERT(
sizeof(
glm::int16) == 2, 
"int16 size isn't 2 bytes on this platform");
 
  317         GLM_STATIC_ASSERT(
sizeof(
glm::int32) == 4, 
"int32 size isn't 4 bytes on this platform");
 
  318         GLM_STATIC_ASSERT(
sizeof(
glm::int64) == 8, 
"int64 size isn't 8 bytes on this platform");
 
  320         GLM_STATIC_ASSERT(
sizeof(
glm::uint8) == 1, 
"uint8 size isn't 1 byte on this platform");
 
  321         GLM_STATIC_ASSERT(
sizeof(
glm::uint16) == 2, 
"uint16 size isn't 2 bytes on this platform");
 
  322         GLM_STATIC_ASSERT(
sizeof(
glm::uint32) == 4, 
"uint32 size isn't 4 bytes on this platform");
 
  323         GLM_STATIC_ASSERT(
sizeof(
glm::uint64) == 8, 
"uint64 size isn't 8 bytes on this platform");
 
  324 #endif//GLM_STATIC_ASSERT_NULL 
detail::int8 int8_t
8 bit signed integer type. 
detail::int32 int32_t
32 bit signed integer type. 
detail::int32 int32
32 bit signed integer type. 
detail::uint8 uint8
8 bit unsigned integer type. 
detail::int8 int8
8 bit signed integer type. 
detail::int16 int16
16 bit signed integer type. 
detail::uint16 uint16
16 bit unsigned integer type. 
unsigned int uint
Unsigned integer type. 
detail::highp_uint_t highp_uint
High precision unsigned integer. 
detail::uint32 uint32_t
32 bit unsigned integer type. 
detail::highp_int_t highp_int
High precision signed integer. 
OpenGL Mathematics (glm.g-truc.net) 
detail::mediump_int_t mediump_int
Medium precision signed integer. 
detail::lowp_uint_t lowp_uint
Low precision unsigned integer. 
detail::lowp_int_t lowp_int
Low precision signed integer. 
detail::mediump_uint_t mediump_uint
Medium precision unsigned integer. 
detail::uint32 uint32
32 bit unsigned integer type. 
detail::uint8 uint8_t
8 bit unsigned integer type. 
detail::int64 int64_t
64 bit signed integer type. 
detail::uint64 uint64
64 bit unsigned integer type. 
detail::int64 int64
64 bit signed integer type. 
detail::uint16 uint16_t
16 bit unsigned integer type. 
detail::uint64 uint64_t
64 bit unsigned integer type. 
detail::int16 int16_t
16 bit signed integer type.