// Copyright (c) 2004 David Muse
// See the COPYING file for more information.

#ifndef RUDIMENTS_CHARACTER_H
#define RUDIMENTS_CHARACTER_H

#include <rudiments/private/characterincludes.h>

// The character class provides methods for evaluating and manipulating
// characters.

#ifdef RUDIMENTS_NAMESPACE
namespace rudiments {
#endif

class character {
        public:
                static bool   isAlphanumeric(int c);
                static bool   isAlphabetical(int c);

                static bool   isLowerCase(int c);
                static bool   isUpperCase(int c);

                static bool   isPunctuation(int c);

                static bool   isPrintable(int c);
                static bool   isPrintableNonSpace(int c);

                static bool   isControlCharacter(int c);

                static bool   isDigit(int c);
                static bool   isHexDigit(int c);

                static bool   isSpace(int c);
                static bool   isBlank(int c);
                static bool   isWhitespace(int c);

                static bool   isAscii(int c);

                static int    toUpperCase(int c);
                static int    toLowerCase(int c);
                static int    toAscii(int c);

                static void   safePrint(char c);
};

#ifdef RUDIMENTS_NAMESPACE
}
#endif

#endif