Merge branch 'master' into cff-retain-gids
This commit is contained in:
commit
30b781f20a
|
@ -299,33 +299,19 @@ hb_ceil_to_4 (unsigned int v)
|
|||
}
|
||||
|
||||
template <typename T> struct hb_is_signed;
|
||||
template <> struct hb_is_signed<signed char> { enum { value = true }; };
|
||||
template <> struct hb_is_signed<signed short> { enum { value = true }; };
|
||||
template <> struct hb_is_signed<signed int> { enum { value = true }; };
|
||||
template <> struct hb_is_signed<signed long> { enum { value = true }; };
|
||||
template <> struct hb_is_signed<unsigned char> { enum { value = false }; };
|
||||
template <> struct hb_is_signed<unsigned short> { enum { value = false }; };
|
||||
template <> struct hb_is_signed<unsigned int> { enum { value = false }; };
|
||||
template <> struct hb_is_signed<unsigned long> { enum { value = false }; };
|
||||
/* We need to define hb_is_signed for the typedefs we use on pre-Visual
|
||||
* Studio 2010 for the int8_t type, since __int8/__int64 is not considered
|
||||
* the same as char/long. The previous lines will suffice for the other
|
||||
* types, though. Note that somehow, unsigned __int8 is considered same
|
||||
* as unsigned char.
|
||||
* https://github.com/harfbuzz/harfbuzz/pull/1499
|
||||
*/
|
||||
#if defined(_MSC_VER) && (_MSC_VER < 1600)
|
||||
template <> struct hb_is_signed<__int8> { enum { value = true }; };
|
||||
#endif
|
||||
/* https://github.com/harfbuzz/harfbuzz/issues/1535 */
|
||||
template <> struct hb_is_signed<int8_t> { enum { value = true }; };
|
||||
template <> struct hb_is_signed<int16_t> { enum { value = true }; };
|
||||
template <> struct hb_is_signed<int32_t> { enum { value = true }; };
|
||||
template <> struct hb_is_signed<int64_t> { enum { value = true }; };
|
||||
template <> struct hb_is_signed<uint8_t> { enum { value = false }; };
|
||||
template <> struct hb_is_signed<uint16_t> { enum { value = false }; };
|
||||
template <> struct hb_is_signed<uint32_t> { enum { value = false }; };
|
||||
template <> struct hb_is_signed<uint64_t> { enum { value = false }; };
|
||||
|
||||
template <typename T> static inline bool
|
||||
hb_in_range (T u, T lo, T hi)
|
||||
{
|
||||
/* The sizeof() is here to force template instantiation.
|
||||
* I'm sure there are better ways to do this but can't think of
|
||||
* one right now. Declaring a variable won't work as HB_UNUSED
|
||||
* is unusable on some platforms and unused types are less likely
|
||||
* to generate a warning than unused variables. */
|
||||
static_assert (!hb_is_signed<T>::value, "");
|
||||
|
||||
/* The casts below are important as if T is smaller than int,
|
||||
|
|
Loading…
Reference in New Issue