32 #include <type_traits> 
   34 #if GLM_HAS_EXTENDED_INTEGER_TYPE 
   41 #       if GLM_HAS_EXTENDED_INTEGER_TYPE 
   52 #               if(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available 
   55 #               elif GLM_COMPILER & GLM_COMPILER_VC 
   56                         typedef signed __int64                  sint64;
 
   57                         typedef unsigned __int64                
uint64;
 
   58 #               elif GLM_COMPILER & GLM_COMPILER_GCC 
   59                         __extension__ 
typedef signed long long          sint64;
 
   60                         __extension__ 
typedef unsigned long long        uint64;
 
   61 #               else//unknown compiler 
   62                         typedef signed long     long            sint64;
 
   63                         typedef unsigned long long              uint64;
 
   66                 typedef signed char                                     int8;
 
   67                 typedef signed short                            int16;
 
   68                 typedef signed int                                      int32;
 
   71                 typedef unsigned char                           uint8;
 
   72                 typedef unsigned short                          uint16;
 
   73                 typedef unsigned int                            uint32;
 
   77         typedef signed int                                              lowp_int_t;
 
   78         typedef signed int                                              mediump_int_t;
 
   79         typedef signed int                                              highp_int_t;
 
   81         typedef unsigned int                                    lowp_uint_t;
 
   82         typedef unsigned int                                    mediump_uint_t;
 
   83         typedef unsigned int                                    highp_uint_t;
 
   85 #       if GLM_HAS_MAKE_SIGNED 
   86                 using std::make_signed;
 
   87                 using std::make_unsigned;
 
   89 #       else//GLM_HAS_MAKE_SIGNED 
   90                 template <
typename genType>
 
   95                 struct make_signed<char>
 
  101                 struct make_signed<short>
 
  107                 struct make_signed<int>
 
  113                 struct make_signed<long>
 
  119                 struct make_signed<long long>
 
  121                         typedef long long type;
 
  125                 struct make_signed<unsigned char>
 
  131                 struct make_signed<unsigned short>
 
  137                 struct make_signed<unsigned int>
 
  143                 struct make_signed<unsigned long>
 
  149                 struct make_signed<unsigned long long>
 
  151                         typedef long long type;
 
  154                 template <
typename genType>
 
  159                 struct make_unsigned<char>
 
  161                         typedef unsigned char type;
 
  165                 struct make_unsigned<short>
 
  167                         typedef unsigned short type;
 
  171                 struct make_unsigned<int>
 
  173                         typedef unsigned int type;
 
  177                 struct make_unsigned<long>
 
  179                         typedef unsigned long type;
 
  183                 struct make_unsigned<long long>
 
  185                         typedef unsigned long long type;
 
  189                 struct make_unsigned<unsigned char>
 
  191                         typedef unsigned char type;
 
  195                 struct make_unsigned<unsigned short>
 
  197                         typedef unsigned short type;
 
  201                 struct make_unsigned<unsigned int>
 
  203                         typedef unsigned int type;
 
  207                 struct make_unsigned<unsigned long>
 
  209                         typedef unsigned long type;
 
  213                 struct make_unsigned<unsigned long long>
 
  215                         typedef unsigned long long type;
 
  217 #       endif//GLM_HAS_MAKE_SIGNED 
  275 #if(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) 
  276         typedef mediump_int                                     int_t;
 
  277 #elif(defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) 
  278         typedef highp_int                                       int_t;
 
  279 #elif(!defined(GLM_PRECISION_HIGHP_INT) && defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) 
  280         typedef mediump_int                                     int_t;
 
  281 #elif(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && defined(GLM_PRECISION_LOWP_INT)) 
  282         typedef lowp_int                                        int_t;
 
  284 #       error "GLM error: multiple default precision requested for signed interger types" 
  287 #if(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) 
  288         typedef mediump_uint                            uint_t;
 
  289 #elif(defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) 
  290         typedef highp_uint                                      uint_t;
 
  291 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) 
  292         typedef mediump_uint                            uint_t;
 
  293 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && defined(GLM_PRECISION_LOWP_UINT)) 
  294         typedef lowp_uint                                       uint_t;
 
  296 #       error "GLM error: multiple default precision requested for unsigned interger types" 
  308 #ifndef GLM_STATIC_ASSERT_NULL 
  309         GLM_STATIC_ASSERT(
sizeof(
glm::int8) == 1, 
"int8 size isn't 1 byte on this platform");
 
  310         GLM_STATIC_ASSERT(
sizeof(
glm::int16) == 2, 
"int16 size isn't 2 bytes on this platform");
 
  311         GLM_STATIC_ASSERT(
sizeof(
glm::int32) == 4, 
"int32 size isn't 4 bytes on this platform");
 
  312         GLM_STATIC_ASSERT(
sizeof(
glm::int64) == 8, 
"int64 size isn't 8 bytes on this platform");
 
  314         GLM_STATIC_ASSERT(
sizeof(
glm::uint8) == 1, 
"uint8 size isn't 1 byte on this platform");
 
  315         GLM_STATIC_ASSERT(
sizeof(
glm::uint16) == 2, 
"uint16 size isn't 2 bytes on this platform");
 
  316         GLM_STATIC_ASSERT(
sizeof(
glm::uint32) == 4, 
"uint32 size isn't 4 bytes on this platform");
 
  317         GLM_STATIC_ASSERT(
sizeof(
glm::uint64) == 8, 
"uint64 size isn't 8 bytes on this platform");
 
  318 #endif//GLM_STATIC_ASSERT_NULL 
detail::int16 int16_t
16 bit signed integer type. 
detail::int64 int64_t
64 bit signed integer type. 
detail::mediump_int_t mediump_int
Medium precision signed integer. 
detail::int8 int8
8 bit signed integer type. 
unsigned int uint
Unsigned integer type. 
detail::lowp_uint_t lowp_uint
Low precision unsigned integer. 
detail::highp_int_t highp_int
High precision signed integer. 
detail::uint8 uint8_t
8 bit unsigned integer type. 
detail::int16 int16
16 bit signed integer type. 
detail::int64 int64
64 bit signed integer type. 
detail::int8 int8_t
8 bit signed integer type. 
detail::uint16 uint16
16 bit unsigned integer type. 
OpenGL Mathematics (glm.g-truc.net) 
detail::lowp_int_t lowp_int
Low precision signed integer. 
detail::uint64 uint64
64 bit unsigned integer type. 
detail::uint8 uint8
8 bit unsigned integer type. 
detail::uint32 uint32
32 bit unsigned integer type. 
detail::uint32 uint32_t
32 bit unsigned integer type. 
detail::int32 int32_t
32 bit signed integer type. 
detail::uint64 uint64_t
64 bit unsigned integer type. 
detail::mediump_uint_t mediump_uint
Medium precision unsigned integer. 
detail::uint16 uint16_t
16 bit unsigned integer type. 
detail::highp_uint_t highp_uint
High precision unsigned integer. 
detail::int32 int32
32 bit signed integer type.