2022-11-18 20:12:54 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
inline constexpr int _isascii(int c)
|
|
|
|
{
|
|
|
|
return !(c & ~0x7f);
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _isblank(int c)
|
|
|
|
{
|
|
|
|
return c == ' ' || c == '\t';
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _iscntrl(int c)
|
|
|
|
{
|
|
|
|
return (unsigned int)c < 0x20 || c == 0x7f;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _isdigit(int c)
|
|
|
|
{
|
|
|
|
return c >= '0' && c < ':';
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _isgraph(int c)
|
|
|
|
{
|
|
|
|
return (unsigned int)c - 0x21 < 0x5e;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _islower(int c)
|
|
|
|
{
|
|
|
|
return c >= 'a' && c < '{';
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _isupper(int c)
|
|
|
|
{
|
|
|
|
return c >= 'A' && c < '[';
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _isprint(int c)
|
|
|
|
{
|
|
|
|
return (unsigned int)c - 0x20 < 0x5f;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _isalpha(int c)
|
|
|
|
{
|
|
|
|
return _islower(c) || _isupper(c);
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _isalnum(int c)
|
|
|
|
{
|
|
|
|
return _isalpha(c) || _isdigit(c);
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _ispunct(int c)
|
|
|
|
{
|
|
|
|
return _isgraph(c) && !_isalnum(c);
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _isspace(int c)
|
|
|
|
{
|
|
|
|
return c == ' ' || (unsigned int)c - '\t' < 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _isxdigit(int c)
|
|
|
|
{
|
|
|
|
return _isdigit(c) || ((unsigned int)c | 32) - 'a' < 6;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _tolower(int c)
|
|
|
|
{
|
|
|
|
if (_isupper(c)) return c | 32;
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline constexpr int _toupper(int c)
|
|
|
|
{
|
|
|
|
if (_islower(c)) return c & 0x5f;
|
|
|
|
return c;
|
2022-11-18 20:17:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#if defined(_LUNA_OVERRIDE_STDC) || defined(IN_MOON)
|
|
|
|
#define isalnum _isalnum
|
|
|
|
#define isalpha _isalpha
|
|
|
|
#define isascii _isascii
|
|
|
|
#define iscntrl _iscntrl
|
|
|
|
#define isdigit _isdigit
|
|
|
|
#define isxdigit _isxdigit
|
|
|
|
#define isspace _isspace
|
|
|
|
#define ispunct _ispunct
|
|
|
|
#define isprint _isprint
|
|
|
|
#define isgraph _isgraph
|
|
|
|
#define islower _islower
|
|
|
|
#define isupper _isupper
|
|
|
|
#define isblank _isblank
|
|
|
|
#define tolower _tolower
|
|
|
|
#define toupper _toupper
|
|
|
|
#endif
|