1 //////////////////////////////////////////////////////////////////////
\r
3 // MIME Character Classification
\r
8 //////////////////////////////////////////////////////////////////////
\r
10 #if !defined(_MIME_CHAR_H)
\r
11 #define _MIME_CHAR_H
\r
15 #endif // _MSC_VER > 1000
\r
20 static bool IsNonAscii(unsigned char ch) { return (ch & 0x80) != 0; }
\r
21 static bool IsControl(unsigned char ch) { return !(ch & 0x80) && (m_aCharTbl[ch] & CONTROL) != 0; }
\r
22 static bool IsSpace(unsigned char ch) { return !(ch & 0x80) && (m_aCharTbl[ch] & SPACE) != 0; }
\r
23 static bool IsPrintable(unsigned char ch) { return !(ch & 0x80) && (m_aCharTbl[ch] & PRINT) != 0; }
\r
24 static bool IsSpecial(unsigned char ch) { return !(ch & 0x80) && (m_aCharTbl[ch] & SPECIAL) != 0; }
\r
25 static bool IsHexDigit(unsigned char ch) { return !(ch & 0x80) && (m_aCharTbl[ch] & HEXDIGIT) != 0; }
\r
26 static bool IsDelimiter(unsigned char ch) { return IsSpace(ch) || IsSpecial(ch); }
\r
27 static bool IsToken(unsigned char ch) { return IsNonAscii(ch) || (ch > ' ' && !IsSpecial(ch)); }
\r
30 enum { CONTROL=0x01, SPACE=0x02, PRINT=0x04, PUNCT=0x10, SPECIAL=0x20, HEXDIGIT=0x40 };
\r
31 static const unsigned char m_aCharTbl[128];
\r
34 #endif // _MIME_CHAR_H