7 #if GLM_HAS_MAKE_SIGNED 
    8 #       include <type_traits> 
   11 #if GLM_HAS_EXTENDED_INTEGER_TYPE 
   18 #       if GLM_HAS_EXTENDED_INTEGER_TYPE 
   29 #               if(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available 
   33 #               elif GLM_COMPILER & GLM_COMPILER_VC 
   34                         typedef signed __int64                  sint64;
 
   35                         typedef unsigned __int64                
uint64;
 
   37 #               elif GLM_COMPILER & GLM_COMPILER_GCC 
   38 #                       pragma GCC diagnostic ignored "-Wlong-long" 
   39                         __extension__ 
typedef signed long long          sint64;
 
   40                         __extension__ 
typedef unsigned long long        uint64;
 
   42 #               elif (GLM_COMPILER & GLM_COMPILER_CLANG) 
   43 #                       pragma clang diagnostic ignored "-Wc++11-long-long" 
   44                         typedef signed long     long            sint64;
 
   45                         typedef unsigned long long              uint64;
 
   47 #               else//unknown compiler 
   48                         typedef signed long     long            sint64;
 
   49                         typedef unsigned long long              uint64;
 
   52                 typedef signed char                                     int8;
 
   53                 typedef signed short                            int16;
 
   54                 typedef signed int                                      int32;
 
   57                 typedef unsigned char                           uint8;
 
   58                 typedef unsigned short                          uint16;
 
   59                 typedef unsigned int                            uint32;
 
   63         typedef signed int                                              lowp_int_t;
 
   64         typedef signed int                                              mediump_int_t;
 
   65         typedef signed int                                              highp_int_t;
 
   67         typedef unsigned int                                    lowp_uint_t;
 
   68         typedef unsigned int                                    mediump_uint_t;
 
   69         typedef unsigned int                                    highp_uint_t;
 
   71 #       if GLM_HAS_MAKE_SIGNED 
   72                 using std::make_signed;
 
   73                 using std::make_unsigned;
 
   75 #       else//GLM_HAS_MAKE_SIGNED 
   76                 template <
typename genType>
 
   81                 struct make_signed<char>
 
   87                 struct make_signed<short>
 
   93                 struct make_signed<int>
 
   99                 struct make_signed<long>
 
  105                 struct make_signed<unsigned char>
 
  111                 struct make_signed<unsigned short>
 
  117                 struct make_signed<unsigned int>
 
  123                 struct make_signed<unsigned long>
 
  128                 template <
typename genType>
 
  133                 struct make_unsigned<char>
 
  135                         typedef unsigned char type;
 
  139                 struct make_unsigned<short>
 
  141                         typedef unsigned short type;
 
  145                 struct make_unsigned<int>
 
  147                         typedef unsigned int type;
 
  151                 struct make_unsigned<long>
 
  153                         typedef unsigned long type;
 
  157                 struct make_unsigned<unsigned char>
 
  159                         typedef unsigned char type;
 
  163                 struct make_unsigned<unsigned short>
 
  165                         typedef unsigned short type;
 
  169                 struct make_unsigned<unsigned int>
 
  171                         typedef unsigned int type;
 
  175                 struct make_unsigned<unsigned long>
 
  177                         typedef unsigned long type;
 
  181                 struct make_signed<long long>
 
  183                         typedef long long type;
 
  187                 struct make_signed<unsigned long long>
 
  189                         typedef long long type;
 
  193                 struct make_unsigned<long long>
 
  195                         typedef unsigned long long type;
 
  199                 struct make_unsigned<unsigned long long>
 
  201                         typedef unsigned long long type;
 
  203 #       endif//GLM_HAS_MAKE_SIGNED 
  261 #if(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) 
  262         typedef mediump_int                                     int_t;
 
  263 #elif(defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) 
  264         typedef highp_int                                       int_t;
 
  265 #elif(!defined(GLM_PRECISION_HIGHP_INT) && defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) 
  266         typedef mediump_int                                     int_t;
 
  267 #elif(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && defined(GLM_PRECISION_LOWP_INT)) 
  268         typedef lowp_int                                        int_t;
 
  270 #       error "GLM error: multiple default precision requested for signed integer types" 
  273 #if(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) 
  274         typedef mediump_uint                            uint_t;
 
  275 #elif(defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) 
  276         typedef highp_uint                                      uint_t;
 
  277 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) 
  278         typedef mediump_uint                            uint_t;
 
  279 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && defined(GLM_PRECISION_LOWP_UINT)) 
  280         typedef lowp_uint                                       uint_t;
 
  282 #       error "GLM error: multiple default precision requested for unsigned integer types" 
  294 #ifndef GLM_STATIC_ASSERT_NULL 
  295         GLM_STATIC_ASSERT(
sizeof(
glm::int8) == 1, 
"int8 size isn't 1 byte on this platform");
 
  296         GLM_STATIC_ASSERT(
sizeof(
glm::int16) == 2, 
"int16 size isn't 2 bytes on this platform");
 
  297         GLM_STATIC_ASSERT(
sizeof(
glm::int32) == 4, 
"int32 size isn't 4 bytes on this platform");
 
  298         GLM_STATIC_ASSERT(
sizeof(
glm::int64) == 8, 
"int64 size isn't 8 bytes on this platform");
 
  300         GLM_STATIC_ASSERT(
sizeof(
glm::uint8) == 1, 
"uint8 size isn't 1 byte on this platform");
 
  301         GLM_STATIC_ASSERT(
sizeof(
glm::uint16) == 2, 
"uint16 size isn't 2 bytes on this platform");
 
  302         GLM_STATIC_ASSERT(
sizeof(
glm::uint32) == 4, 
"uint32 size isn't 4 bytes on this platform");
 
  303         GLM_STATIC_ASSERT(
sizeof(
glm::uint64) == 8, 
"uint64 size isn't 8 bytes on this platform");
 
  304 #endif//GLM_STATIC_ASSERT_NULL 
detail::highp_uint_t highp_uint
High precision unsigned integer. 
unsigned int uint
Unsigned integer type. 
detail::lowp_uint_t lowp_uint
Low precision unsigned integer. 
detail::mediump_int_t mediump_int
Medium precision signed integer. 
detail::int8 int8
8 bit signed integer type. 
detail::uint8 uint8_t
8 bit unsigned integer type. 
detail::int64 int64
64 bit signed integer type. 
detail::int8 int8_t
8 bit signed integer type. 
detail::mediump_uint_t mediump_uint
Medium precision unsigned integer. 
detail::uint16 uint16
16 bit unsigned integer type. 
detail::int16 int16
16 bit signed integer type. 
detail::uint8 uint8
8 bit unsigned integer type. 
detail::uint32 uint32
32 bit unsigned integer type. 
detail::int32 int32_t
32 bit signed integer type. 
detail::uint64 uint64_t
64 bit unsigned integer type. 
detail::highp_int_t highp_int
High precision signed integer. 
detail::uint64 uint64
64 bit unsigned integer type. 
detail::uint32 uint32_t
32 bit unsigned integer type. 
detail::int32 int32
32 bit signed integer type. 
detail::int16 int16_t
16 bit signed integer type. 
detail::int64 int64_t
64 bit signed integer type. 
detail::uint16 uint16_t
16 bit unsigned integer type. 
detail::lowp_int_t lowp_int
Low precision signed integer.