diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/poco/Foundation/include/Poco/Ascii.h | |
parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
download | ydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/Ascii.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/Ascii.h | 440 |
1 files changed, 220 insertions, 220 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/Ascii.h b/contrib/libs/poco/Foundation/include/Poco/Ascii.h index 5dd741df35..1ac5618592 100644 --- a/contrib/libs/poco/Foundation/include/Poco/Ascii.h +++ b/contrib/libs/poco/Foundation/include/Poco/Ascii.h @@ -1,220 +1,220 @@ -// -// Ascii.h -// -// Library: Foundation -// Package: Core -// Module: Ascii -// -// Definition of the Ascii class. -// -// Copyright (c) 2010, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// SPDX-License-Identifier: BSL-1.0 -// - - -#ifndef Foundation_Ascii_INCLUDED -#define Foundation_Ascii_INCLUDED - - -#include "Poco/Foundation.h" - - -namespace Poco { - - -class Foundation_API Ascii - /// This class contains enumerations and static - /// utility functions for dealing with ASCII characters - /// and their properties. - /// - /// The classification functions will also work if - /// non-ASCII character codes are passed to them, - /// but classification will only check for - /// ASCII characters. - /// - /// This allows the classification methods to be used - /// on the single bytes of a UTF-8 string, without - /// causing assertions or inconsistent results (depending - /// upon the current locale) on bytes outside the ASCII range, - /// as may be produced by Ascii::isSpace(), etc. -{ -public: - enum CharacterProperties - /// ASCII character properties. - { - ACP_CONTROL = 0x0001, - ACP_SPACE = 0x0002, - ACP_PUNCT = 0x0004, - ACP_DIGIT = 0x0008, - ACP_HEXDIGIT = 0x0010, - ACP_ALPHA = 0x0020, - ACP_LOWER = 0x0040, - ACP_UPPER = 0x0080, - ACP_GRAPH = 0x0100, - ACP_PRINT = 0x0200 - }; - - static int properties(int ch); - /// Return the ASCII character properties for the - /// character with the given ASCII value. - /// - /// If the character is outside the ASCII range - /// (0 .. 127), 0 is returned. - - static bool hasSomeProperties(int ch, int properties); - /// Returns true if the given character is - /// within the ASCII range and has at least one of - /// the given properties. - - static bool hasProperties(int ch, int properties); - /// Returns true if the given character is - /// within the ASCII range and has all of - /// the given properties. - - static bool isAscii(int ch); - /// Returns true iff the given character code is within - /// the ASCII range (0 .. 127). - - static bool isSpace(int ch); - /// Returns true iff the given character is a whitespace. - - static bool isDigit(int ch); - /// Returns true iff the given character is a digit. - - static bool isHexDigit(int ch); - /// Returns true iff the given character is a hexadecimal digit. - - static bool isPunct(int ch); - /// Returns true iff the given character is a punctuation character. - - static bool isAlpha(int ch); - /// Returns true iff the given character is an alphabetic character. - - static bool isAlphaNumeric(int ch); - /// Returns true iff the given character is an alphabetic character. - - static bool isLower(int ch); - /// Returns true iff the given character is a lowercase alphabetic - /// character. - - static bool isUpper(int ch); - /// Returns true iff the given character is an uppercase alphabetic - /// character. - - static int toLower(int ch); - /// If the given character is an uppercase character, - /// return its lowercase counterpart, otherwise return - /// the character. - - static int toUpper(int ch); - /// If the given character is a lowercase character, - /// return its uppercase counterpart, otherwise return - /// the character. - -private: - static const int CHARACTER_PROPERTIES[128]; -}; - - -// -// inlines -// -inline int Ascii::properties(int ch) -{ - if (isAscii(ch)) - return CHARACTER_PROPERTIES[ch]; - else - return 0; -} - - -inline bool Ascii::isAscii(int ch) -{ - return (static_cast<UInt32>(ch) & 0xFFFFFF80) == 0; -} - - -inline bool Ascii::hasProperties(int ch, int props) -{ - return (properties(ch) & props) == props; -} - - -inline bool Ascii::hasSomeProperties(int ch, int props) -{ - return (properties(ch) & props) != 0; -} - - -inline bool Ascii::isSpace(int ch) -{ - return hasProperties(ch, ACP_SPACE); -} - - -inline bool Ascii::isDigit(int ch) -{ - return hasProperties(ch, ACP_DIGIT); -} - - -inline bool Ascii::isHexDigit(int ch) -{ - return hasProperties(ch, ACP_HEXDIGIT); -} - - -inline bool Ascii::isPunct(int ch) -{ - return hasProperties(ch, ACP_PUNCT); -} - - -inline bool Ascii::isAlpha(int ch) -{ - return hasProperties(ch, ACP_ALPHA); -} - - -inline bool Ascii::isAlphaNumeric(int ch) -{ - return hasSomeProperties(ch, ACP_ALPHA | ACP_DIGIT); -} - - -inline bool Ascii::isLower(int ch) -{ - return hasProperties(ch, ACP_LOWER); -} - - -inline bool Ascii::isUpper(int ch) -{ - return hasProperties(ch, ACP_UPPER); -} - - -inline int Ascii::toLower(int ch) -{ - if (isUpper(ch)) - return ch + 32; - else - return ch; -} - - -inline int Ascii::toUpper(int ch) -{ - if (isLower(ch)) - return ch - 32; - else - return ch; -} - - -} // namespace Poco - - -#endif // Foundation_Ascii_INCLUDED +// +// Ascii.h +// +// Library: Foundation +// Package: Core +// Module: Ascii +// +// Definition of the Ascii class. +// +// Copyright (c) 2010, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Ascii_INCLUDED +#define Foundation_Ascii_INCLUDED + + +#include "Poco/Foundation.h" + + +namespace Poco { + + +class Foundation_API Ascii + /// This class contains enumerations and static + /// utility functions for dealing with ASCII characters + /// and their properties. + /// + /// The classification functions will also work if + /// non-ASCII character codes are passed to them, + /// but classification will only check for + /// ASCII characters. + /// + /// This allows the classification methods to be used + /// on the single bytes of a UTF-8 string, without + /// causing assertions or inconsistent results (depending + /// upon the current locale) on bytes outside the ASCII range, + /// as may be produced by Ascii::isSpace(), etc. +{ +public: + enum CharacterProperties + /// ASCII character properties. + { + ACP_CONTROL = 0x0001, + ACP_SPACE = 0x0002, + ACP_PUNCT = 0x0004, + ACP_DIGIT = 0x0008, + ACP_HEXDIGIT = 0x0010, + ACP_ALPHA = 0x0020, + ACP_LOWER = 0x0040, + ACP_UPPER = 0x0080, + ACP_GRAPH = 0x0100, + ACP_PRINT = 0x0200 + }; + + static int properties(int ch); + /// Return the ASCII character properties for the + /// character with the given ASCII value. + /// + /// If the character is outside the ASCII range + /// (0 .. 127), 0 is returned. + + static bool hasSomeProperties(int ch, int properties); + /// Returns true if the given character is + /// within the ASCII range and has at least one of + /// the given properties. + + static bool hasProperties(int ch, int properties); + /// Returns true if the given character is + /// within the ASCII range and has all of + /// the given properties. + + static bool isAscii(int ch); + /// Returns true iff the given character code is within + /// the ASCII range (0 .. 127). + + static bool isSpace(int ch); + /// Returns true iff the given character is a whitespace. + + static bool isDigit(int ch); + /// Returns true iff the given character is a digit. + + static bool isHexDigit(int ch); + /// Returns true iff the given character is a hexadecimal digit. + + static bool isPunct(int ch); + /// Returns true iff the given character is a punctuation character. + + static bool isAlpha(int ch); + /// Returns true iff the given character is an alphabetic character. + + static bool isAlphaNumeric(int ch); + /// Returns true iff the given character is an alphabetic character. + + static bool isLower(int ch); + /// Returns true iff the given character is a lowercase alphabetic + /// character. + + static bool isUpper(int ch); + /// Returns true iff the given character is an uppercase alphabetic + /// character. + + static int toLower(int ch); + /// If the given character is an uppercase character, + /// return its lowercase counterpart, otherwise return + /// the character. + + static int toUpper(int ch); + /// If the given character is a lowercase character, + /// return its uppercase counterpart, otherwise return + /// the character. + +private: + static const int CHARACTER_PROPERTIES[128]; +}; + + +// +// inlines +// +inline int Ascii::properties(int ch) +{ + if (isAscii(ch)) + return CHARACTER_PROPERTIES[ch]; + else + return 0; +} + + +inline bool Ascii::isAscii(int ch) +{ + return (static_cast<UInt32>(ch) & 0xFFFFFF80) == 0; +} + + +inline bool Ascii::hasProperties(int ch, int props) +{ + return (properties(ch) & props) == props; +} + + +inline bool Ascii::hasSomeProperties(int ch, int props) +{ + return (properties(ch) & props) != 0; +} + + +inline bool Ascii::isSpace(int ch) +{ + return hasProperties(ch, ACP_SPACE); +} + + +inline bool Ascii::isDigit(int ch) +{ + return hasProperties(ch, ACP_DIGIT); +} + + +inline bool Ascii::isHexDigit(int ch) +{ + return hasProperties(ch, ACP_HEXDIGIT); +} + + +inline bool Ascii::isPunct(int ch) +{ + return hasProperties(ch, ACP_PUNCT); +} + + +inline bool Ascii::isAlpha(int ch) +{ + return hasProperties(ch, ACP_ALPHA); +} + + +inline bool Ascii::isAlphaNumeric(int ch) +{ + return hasSomeProperties(ch, ACP_ALPHA | ACP_DIGIT); +} + + +inline bool Ascii::isLower(int ch) +{ + return hasProperties(ch, ACP_LOWER); +} + + +inline bool Ascii::isUpper(int ch) +{ + return hasProperties(ch, ACP_UPPER); +} + + +inline int Ascii::toLower(int ch) +{ + if (isUpper(ch)) + return ch + 32; + else + return ch; +} + + +inline int Ascii::toUpper(int ch) +{ + if (isLower(ch)) + return ch - 32; + else + return ch; +} + + +} // namespace Poco + + +#endif // Foundation_Ascii_INCLUDED |