|
- /*
- ==============================================================================
-
- This file is part of the JUCE library - "Jules' Utility Class Extensions"
- Copyright 2004-11 by Raw Material Software Ltd.
-
- ------------------------------------------------------------------------------
-
- JUCE can be redistributed and/or modified under the terms of the GNU General
- Public License (Version 2), as published by the Free Software Foundation.
- A copy of the license is included in the JUCE distribution, or can be found
- online at www.gnu.org/licenses.
-
- JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- ------------------------------------------------------------------------------
-
- To release a closed-source product which uses JUCE, commercial licenses are
- available: visit www.rawmaterialsoftware.com/juce for more information.
-
- ==============================================================================
- */
-
- #if ! JUCE_ANDROID
- #include <cwctype>
- #endif
-
- #include <cctype>
-
- BEGIN_JUCE_NAMESPACE
-
- //==============================================================================
- #if JUCE_MSVC
- #pragma warning (push)
- #pragma warning (disable: 4514 4996)
- #endif
-
- juce_wchar CharacterFunctions::toUpperCase (const juce_wchar character) noexcept
- {
- return towupper ((wchar_t) character);
- }
-
- juce_wchar CharacterFunctions::toLowerCase (const juce_wchar character) noexcept
- {
- return towlower ((wchar_t) character);
- }
-
- bool CharacterFunctions::isUpperCase (const juce_wchar character) noexcept
- {
- #if JUCE_WINDOWS
- return iswupper ((wchar_t) character) != 0;
- #else
- return toLowerCase (character) != character;
- #endif
- }
-
- bool CharacterFunctions::isLowerCase (const juce_wchar character) noexcept
- {
- #if JUCE_WINDOWS
- return iswlower ((wchar_t) character) != 0;
- #else
- return toUpperCase (character) != character;
- #endif
- }
-
- #if JUCE_MSVC
- #pragma warning (pop)
- #endif
-
- //==============================================================================
- bool CharacterFunctions::isWhitespace (const char character) noexcept
- {
- return character == ' ' || (character <= 13 && character >= 9);
- }
-
- bool CharacterFunctions::isWhitespace (const juce_wchar character) noexcept
- {
- return iswspace ((wchar_t) character) != 0;
- }
-
- bool CharacterFunctions::isDigit (const char character) noexcept
- {
- return (character >= '0' && character <= '9');
- }
-
- bool CharacterFunctions::isDigit (const juce_wchar character) noexcept
- {
- return iswdigit ((wchar_t) character) != 0;
- }
-
- bool CharacterFunctions::isLetter (const char character) noexcept
- {
- return (character >= 'a' && character <= 'z')
- || (character >= 'A' && character <= 'Z');
- }
-
- bool CharacterFunctions::isLetter (const juce_wchar character) noexcept
- {
- return iswalpha ((wchar_t) character) != 0;
- }
-
- bool CharacterFunctions::isLetterOrDigit (const char character) noexcept
- {
- return (character >= 'a' && character <= 'z')
- || (character >= 'A' && character <= 'Z')
- || (character >= '0' && character <= '9');
- }
-
- bool CharacterFunctions::isLetterOrDigit (const juce_wchar character) noexcept
- {
- return iswalnum ((wchar_t) character) != 0;
- }
-
- int CharacterFunctions::getHexDigitValue (const juce_wchar digit) noexcept
- {
- unsigned int d = digit - '0';
- if (d < (unsigned int) 10)
- return (int) d;
-
- d += (unsigned int) ('0' - 'a');
- if (d < (unsigned int) 6)
- return (int) d + 10;
-
- d += (unsigned int) ('a' - 'A');
- if (d < (unsigned int) 6)
- return (int) d + 10;
-
- return -1;
- }
-
- double CharacterFunctions::mulexp10 (const double value, int exponent) noexcept
- {
- if (exponent == 0)
- return value;
-
- if (value == 0)
- return 0;
-
- const bool negative = (exponent < 0);
- if (negative)
- exponent = -exponent;
-
- double result = 1.0, power = 10.0;
- for (int bit = 1; exponent != 0; bit <<= 1)
- {
- if ((exponent & bit) != 0)
- {
- exponent ^= bit;
- result *= power;
- if (exponent == 0)
- break;
- }
- power *= power;
- }
-
- return negative ? (value / result) : (value * result);
- }
-
-
- END_JUCE_NAMESPACE
|