简单判断函数总结

Posted on 2008-10-25 12:29  活着就是幸福  阅读(226)  评论(0编辑  收藏  举报

Code
inline bool IsSpace(Char c)
// Space, tabulation, line feed or return
{
return(c == TEXT(' ') || c == TEXT('\t') || c == TEXT('\r') || c == TEXT('\n'));
}

inline
bool IsAlpha(Char c)
// [a-zA-Z]
{
return((c >= TEXT('a') && c <= TEXT('z')) || (c >= TEXT('A') && c <= TEXT('Z')));
}

inline
bool IsDigit(Char c)
// For the moment, recognize only Basic Latin
// [0-9]
{
return(c >= TEXT('0') && c <= TEXT('9'));
}

inline
bool IsHexDigit(Char c)
// [0-9a-fA-F]
{
return(IsDigit(c) || (c >= TEXT('a') && c <= TEXT('f')) || (c >= TEXT('A') && c <= TEXT('F')));
}

inline
int HexDigitValue(Char c)
// [0-9a-fA-F]
{
return((c >= TEXT('0') && c <= TEXT('9')) ? c - TEXT('0')
: ((c
>= TEXT('a') && c <= TEXT('f')) ? c - TEXT('a') + 10
: c
- TEXT('A') + 10));

}

inline
bool IsAlphaDigit(Char c)
// [a-zA-Z0-9]
{
return(IsAlpha(c) || IsDigit(c));
}

inline
bool IsLetter(Char c_)
// For the moment, recognize only Basic Latin and Latin-1 Supplement
{
// if c is signed, c >= 0xD8 is always false, so cast it
unsigned char c = c_;

return
(
(c
>= 0x41 && c <= 0x5A) || // [A-Z]
(c >= 0x61 && c <= 0x7A) || // [a-z]
(c >= 0xC0 && c <= 0xD6) || // Latin-1 Supplement
(c >= 0xD8 && c <= 0xF6) || // "
(c >= 0xF8 && c <= 0xFF) // "
);
}
inline Char LowCase(Char c)
{
return(c >= TEXT('A') && c <= TEXT('Z') ? static_cast<char></char>(c - TEXT('A') + TEXT('a')) : c);
}

inline
bool IsNameChar(Char c)
// [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
{
return
(
IsLetter(c)
|| IsDigit(c) ||
c
== TEXT('.') || c == TEXT('-') || c == TEXT('_') || c == TEXT(':') ||
IsCombiningChar(c)
|| IsExtender(c)
);
}