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/TextIterator.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/TextIterator.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/TextIterator.h | 282 |
1 files changed, 141 insertions, 141 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/TextIterator.h b/contrib/libs/poco/Foundation/include/Poco/TextIterator.h index 17f48a4ab1..b2cf102563 100644 --- a/contrib/libs/poco/Foundation/include/Poco/TextIterator.h +++ b/contrib/libs/poco/Foundation/include/Poco/TextIterator.h @@ -1,141 +1,141 @@ -// -// TextIterator.h -// -// Library: Foundation -// Package: Text -// Module: TextIterator -// -// Definition of the TextIterator class. -// -// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// SPDX-License-Identifier: BSL-1.0 -// - - -#ifndef Foundation_TextIterator_INCLUDED -#define Foundation_TextIterator_INCLUDED - - -#include "Poco/Foundation.h" - - -namespace Poco { - - -class TextEncoding; - - -class Foundation_API TextIterator - /// An unidirectional iterator for iterating over characters in a string. - /// The TextIterator uses a TextEncoding object to - /// work with multi-byte character encodings like UTF-8. - /// Characters are reported in Unicode. - /// - /// Example: Count the number of UTF-8 characters in a string. - /// - /// UTF8Encoding utf8Encoding; - /// std::string utf8String("...."); - /// TextIterator it(utf8String, utf8Encoding); - /// TextIterator end(utf8String); - /// int n = 0; - /// while (it != end) { ++n; ++it; } - /// - /// NOTE: When an UTF-16 encoding is used, surrogate pairs will be - /// reported as two separate characters, due to restrictions of - /// the TextEncoding class. - /// - /// For iterating over char buffers, see the TextBufferIterator class. -{ -public: - TextIterator(); - /// Creates an uninitialized TextIterator. - - TextIterator(const std::string& str, const TextEncoding& encoding); - /// Creates a TextIterator for the given string. - /// The encoding object must not be deleted as long as the iterator - /// is in use. - - TextIterator(const std::string::const_iterator& begin, const std::string::const_iterator& end, const TextEncoding& encoding); - /// Creates a TextIterator for the given range. - /// The encoding object must not be deleted as long as the iterator - /// is in use. - - TextIterator(const std::string& str); - /// Creates an end TextIterator for the given string. - - TextIterator(const std::string::const_iterator& end); - /// Creates an end TextIterator. - - ~TextIterator(); - /// Destroys the TextIterator. - - TextIterator(const TextIterator& it); - /// Copy constructor. - - TextIterator& operator = (const TextIterator& it); - /// Assignment operator. - - void swap(TextIterator& it); - /// Swaps the iterator with another one. - - int operator * () const; - /// Returns the Unicode value of the current character. - /// If there is no valid character at the current position, - /// -1 is returned. - - TextIterator& operator ++ (); - /// Prefix increment operator. - - TextIterator operator ++ (int); - /// Postfix increment operator. - - bool operator == (const TextIterator& it) const; - /// Compares two iterators for equality. - - bool operator != (const TextIterator& it) const; - /// Compares two iterators for inequality. - - TextIterator end() const; - /// Returns the end iterator for the range handled - /// by the iterator. - -private: - const TextEncoding* _pEncoding; - std::string::const_iterator _it; - std::string::const_iterator _end; -}; - - -// -// inlines -// -inline bool TextIterator::operator == (const TextIterator& it) const -{ - return _it == it._it; -} - - -inline bool TextIterator::operator != (const TextIterator& it) const -{ - return _it != it._it; -} - - -inline void swap(TextIterator& it1, TextIterator& it2) -{ - it1.swap(it2); -} - - -inline TextIterator TextIterator::end() const -{ - return TextIterator(_end); -} - - -} // namespace Poco - - -#endif // Foundation_TextIterator_INCLUDED +// +// TextIterator.h +// +// Library: Foundation +// Package: Text +// Module: TextIterator +// +// Definition of the TextIterator class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_TextIterator_INCLUDED +#define Foundation_TextIterator_INCLUDED + + +#include "Poco/Foundation.h" + + +namespace Poco { + + +class TextEncoding; + + +class Foundation_API TextIterator + /// An unidirectional iterator for iterating over characters in a string. + /// The TextIterator uses a TextEncoding object to + /// work with multi-byte character encodings like UTF-8. + /// Characters are reported in Unicode. + /// + /// Example: Count the number of UTF-8 characters in a string. + /// + /// UTF8Encoding utf8Encoding; + /// std::string utf8String("...."); + /// TextIterator it(utf8String, utf8Encoding); + /// TextIterator end(utf8String); + /// int n = 0; + /// while (it != end) { ++n; ++it; } + /// + /// NOTE: When an UTF-16 encoding is used, surrogate pairs will be + /// reported as two separate characters, due to restrictions of + /// the TextEncoding class. + /// + /// For iterating over char buffers, see the TextBufferIterator class. +{ +public: + TextIterator(); + /// Creates an uninitialized TextIterator. + + TextIterator(const std::string& str, const TextEncoding& encoding); + /// Creates a TextIterator for the given string. + /// The encoding object must not be deleted as long as the iterator + /// is in use. + + TextIterator(const std::string::const_iterator& begin, const std::string::const_iterator& end, const TextEncoding& encoding); + /// Creates a TextIterator for the given range. + /// The encoding object must not be deleted as long as the iterator + /// is in use. + + TextIterator(const std::string& str); + /// Creates an end TextIterator for the given string. + + TextIterator(const std::string::const_iterator& end); + /// Creates an end TextIterator. + + ~TextIterator(); + /// Destroys the TextIterator. + + TextIterator(const TextIterator& it); + /// Copy constructor. + + TextIterator& operator = (const TextIterator& it); + /// Assignment operator. + + void swap(TextIterator& it); + /// Swaps the iterator with another one. + + int operator * () const; + /// Returns the Unicode value of the current character. + /// If there is no valid character at the current position, + /// -1 is returned. + + TextIterator& operator ++ (); + /// Prefix increment operator. + + TextIterator operator ++ (int); + /// Postfix increment operator. + + bool operator == (const TextIterator& it) const; + /// Compares two iterators for equality. + + bool operator != (const TextIterator& it) const; + /// Compares two iterators for inequality. + + TextIterator end() const; + /// Returns the end iterator for the range handled + /// by the iterator. + +private: + const TextEncoding* _pEncoding; + std::string::const_iterator _it; + std::string::const_iterator _end; +}; + + +// +// inlines +// +inline bool TextIterator::operator == (const TextIterator& it) const +{ + return _it == it._it; +} + + +inline bool TextIterator::operator != (const TextIterator& it) const +{ + return _it != it._it; +} + + +inline void swap(TextIterator& it1, TextIterator& it2) +{ + it1.swap(it2); +} + + +inline TextIterator TextIterator::end() const +{ + return TextIterator(_end); +} + + +} // namespace Poco + + +#endif // Foundation_TextIterator_INCLUDED |