#ifndef _CHARACTER_CLASSES_H
#define _CHARACTER_CLASSES_H
#define kCr '\n'
#define kLf '\r'
#define kTab '\t'
#define kEof -1
inline bool IsWhitespaceSeparator(int ch)
{
return ch == ' ' || ch == kTab;
}
inline bool IsWhitespace(int ch)
{
return ch == ' ' || ch == kTab || ch == kLf || ch == kCr;
}
inline bool IsIdentChar(int ch) {
if (ch == '/' || ch == ':') return false;
return 33 <= ch && ch <= 126;
}
inline bool IsOptionChar(int ch)
{
if (ch == '.') return true;
return IsIdentChar(ch);
}
inline bool IsChar(int ch)
{
if (ch == '"') return false;
return 32 <= ch && ch <= 255 || IsWhitespace(ch);
}
inline bool IsPrintableWithoutWhitespaces(int ch)
{
if (ch == '"') return false;
return 33 <= ch && ch <= 126;
}
inline bool IsPrintableWithWhitespaces(int ch)
{
return IsPrintableWithoutWhitespaces(ch) || IsWhitespace(ch);
}
inline bool IsStringChar(int ch)
{
if (IsWhitespaceSeparator(ch)) return true;
if (ch == '"') return true;
if (ch == '/') return false;
return IsPrintableWithoutWhitespaces(ch);
}
#endif