diff options
| author | orivej <[email protected]> | 2022-02-10 16:44:49 +0300 |
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:44:49 +0300 |
| commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
| tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/poco/Foundation/src/TextEncoding.cpp | |
| parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/src/TextEncoding.cpp')
| -rw-r--r-- | contrib/libs/poco/Foundation/src/TextEncoding.cpp | 416 |
1 files changed, 208 insertions, 208 deletions
diff --git a/contrib/libs/poco/Foundation/src/TextEncoding.cpp b/contrib/libs/poco/Foundation/src/TextEncoding.cpp index 45cad09d4e4..122b855fea5 100644 --- a/contrib/libs/poco/Foundation/src/TextEncoding.cpp +++ b/contrib/libs/poco/Foundation/src/TextEncoding.cpp @@ -1,208 +1,208 @@ -// -// TextEncoding.cpp -// -// Library: Foundation -// Package: Text -// Module: TextEncoding -// -// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// SPDX-License-Identifier: BSL-1.0 -// - - -#include "Poco/TextEncoding.h" -#include "Poco/Exception.h" -#include "Poco/String.h" -#include "Poco/ASCIIEncoding.h" -#include "Poco/Latin1Encoding.h" -#include "Poco/Latin2Encoding.h" -#include "Poco/Latin9Encoding.h" -#include "Poco/UTF32Encoding.h" -#include "Poco/UTF16Encoding.h" -#include "Poco/UTF8Encoding.h" -#include "Poco/Windows1250Encoding.h" -#include "Poco/Windows1251Encoding.h" -#include "Poco/Windows1252Encoding.h" -#include "Poco/RWLock.h" -#include "Poco/SingletonHolder.h" -#include <map> - - -namespace Poco { - - -// -// TextEncodingManager -// - - -class TextEncodingManager -{ -public: - TextEncodingManager() - { - TextEncoding::Ptr pUtf8Encoding(new UTF8Encoding); - add(pUtf8Encoding, TextEncoding::GLOBAL); - - add(new ASCIIEncoding); - add(new Latin1Encoding); - add(new Latin2Encoding); - add(new Latin9Encoding); - add(pUtf8Encoding); - add(new UTF16Encoding); - add(new UTF32Encoding); - add(new Windows1250Encoding); - add(new Windows1251Encoding); - add(new Windows1252Encoding); - } - - ~TextEncodingManager() - { - } - - void add(TextEncoding::Ptr pEncoding) - { - add(pEncoding, pEncoding->canonicalName()); - } - - void add(TextEncoding::Ptr pEncoding, const std::string& name) - { - RWLock::ScopedLock lock(_lock, true); - - _encodings[name] = pEncoding; - } - - void remove(const std::string& name) - { - RWLock::ScopedLock lock(_lock, true); - - _encodings.erase(name); - } - - TextEncoding::Ptr find(const std::string& name) const - { - RWLock::ScopedLock lock(_lock); - - EncodingMap::const_iterator it = _encodings.find(name); - if (it != _encodings.end()) - return it->second; - - for (it = _encodings.begin(); it != _encodings.end(); ++it) - { - if (it->second->isA(name)) - return it->second; - } - return TextEncoding::Ptr(); - } - -private: - TextEncodingManager(const TextEncodingManager&); - TextEncodingManager& operator = (const TextEncodingManager&); - - typedef std::map<std::string, TextEncoding::Ptr, CILess> EncodingMap; - - EncodingMap _encodings; - mutable RWLock _lock; -}; - - -// -// TextEncoding -// - - -const std::string TextEncoding::GLOBAL; - - -TextEncoding::~TextEncoding() -{ -} - - -int TextEncoding::convert(const unsigned char* bytes) const -{ - return static_cast<int>(*bytes); -} - - -int TextEncoding::convert(int /*ch*/, unsigned char* /*bytes*/, int /*length*/) const -{ - return 0; -} - - -int TextEncoding::queryConvert(const unsigned char* bytes, int /*length*/) const -{ - return (int) *bytes; -} - - -int TextEncoding::sequenceLength(const unsigned char* /*bytes*/, int /*length*/) const -{ - return 1; -} - - -TextEncoding& TextEncoding::byName(const std::string& encodingName) -{ - TextEncoding* pEncoding = manager().find(encodingName); - if (pEncoding) - return *pEncoding; - else - throw NotFoundException(encodingName); -} - - -TextEncoding::Ptr TextEncoding::find(const std::string& encodingName) -{ - return manager().find(encodingName); -} - - -void TextEncoding::add(TextEncoding::Ptr pEncoding) -{ - manager().add(pEncoding, pEncoding->canonicalName()); -} - - -void TextEncoding::add(TextEncoding::Ptr pEncoding, const std::string& name) -{ - manager().add(pEncoding, name); -} - - -void TextEncoding::remove(const std::string& encodingName) -{ - manager().remove(encodingName); -} - - -TextEncoding::Ptr TextEncoding::global(TextEncoding::Ptr encoding) -{ - TextEncoding::Ptr prev = find(GLOBAL); - add(encoding, GLOBAL); - return prev; -} - - -TextEncoding& TextEncoding::global() -{ - return byName(GLOBAL); -} - - -namespace -{ - static SingletonHolder<TextEncodingManager> sh; -} - - -TextEncodingManager& TextEncoding::manager() -{ - return *sh.get(); -} - - -} // namespace Poco +// +// TextEncoding.cpp +// +// Library: Foundation +// Package: Text +// Module: TextEncoding +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/TextEncoding.h" +#include "Poco/Exception.h" +#include "Poco/String.h" +#include "Poco/ASCIIEncoding.h" +#include "Poco/Latin1Encoding.h" +#include "Poco/Latin2Encoding.h" +#include "Poco/Latin9Encoding.h" +#include "Poco/UTF32Encoding.h" +#include "Poco/UTF16Encoding.h" +#include "Poco/UTF8Encoding.h" +#include "Poco/Windows1250Encoding.h" +#include "Poco/Windows1251Encoding.h" +#include "Poco/Windows1252Encoding.h" +#include "Poco/RWLock.h" +#include "Poco/SingletonHolder.h" +#include <map> + + +namespace Poco { + + +// +// TextEncodingManager +// + + +class TextEncodingManager +{ +public: + TextEncodingManager() + { + TextEncoding::Ptr pUtf8Encoding(new UTF8Encoding); + add(pUtf8Encoding, TextEncoding::GLOBAL); + + add(new ASCIIEncoding); + add(new Latin1Encoding); + add(new Latin2Encoding); + add(new Latin9Encoding); + add(pUtf8Encoding); + add(new UTF16Encoding); + add(new UTF32Encoding); + add(new Windows1250Encoding); + add(new Windows1251Encoding); + add(new Windows1252Encoding); + } + + ~TextEncodingManager() + { + } + + void add(TextEncoding::Ptr pEncoding) + { + add(pEncoding, pEncoding->canonicalName()); + } + + void add(TextEncoding::Ptr pEncoding, const std::string& name) + { + RWLock::ScopedLock lock(_lock, true); + + _encodings[name] = pEncoding; + } + + void remove(const std::string& name) + { + RWLock::ScopedLock lock(_lock, true); + + _encodings.erase(name); + } + + TextEncoding::Ptr find(const std::string& name) const + { + RWLock::ScopedLock lock(_lock); + + EncodingMap::const_iterator it = _encodings.find(name); + if (it != _encodings.end()) + return it->second; + + for (it = _encodings.begin(); it != _encodings.end(); ++it) + { + if (it->second->isA(name)) + return it->second; + } + return TextEncoding::Ptr(); + } + +private: + TextEncodingManager(const TextEncodingManager&); + TextEncodingManager& operator = (const TextEncodingManager&); + + typedef std::map<std::string, TextEncoding::Ptr, CILess> EncodingMap; + + EncodingMap _encodings; + mutable RWLock _lock; +}; + + +// +// TextEncoding +// + + +const std::string TextEncoding::GLOBAL; + + +TextEncoding::~TextEncoding() +{ +} + + +int TextEncoding::convert(const unsigned char* bytes) const +{ + return static_cast<int>(*bytes); +} + + +int TextEncoding::convert(int /*ch*/, unsigned char* /*bytes*/, int /*length*/) const +{ + return 0; +} + + +int TextEncoding::queryConvert(const unsigned char* bytes, int /*length*/) const +{ + return (int) *bytes; +} + + +int TextEncoding::sequenceLength(const unsigned char* /*bytes*/, int /*length*/) const +{ + return 1; +} + + +TextEncoding& TextEncoding::byName(const std::string& encodingName) +{ + TextEncoding* pEncoding = manager().find(encodingName); + if (pEncoding) + return *pEncoding; + else + throw NotFoundException(encodingName); +} + + +TextEncoding::Ptr TextEncoding::find(const std::string& encodingName) +{ + return manager().find(encodingName); +} + + +void TextEncoding::add(TextEncoding::Ptr pEncoding) +{ + manager().add(pEncoding, pEncoding->canonicalName()); +} + + +void TextEncoding::add(TextEncoding::Ptr pEncoding, const std::string& name) +{ + manager().add(pEncoding, name); +} + + +void TextEncoding::remove(const std::string& encodingName) +{ + manager().remove(encodingName); +} + + +TextEncoding::Ptr TextEncoding::global(TextEncoding::Ptr encoding) +{ + TextEncoding::Ptr prev = find(GLOBAL); + add(encoding, GLOBAL); + return prev; +} + + +TextEncoding& TextEncoding::global() +{ + return byName(GLOBAL); +} + + +namespace +{ + static SingletonHolder<TextEncodingManager> sh; +} + + +TextEncodingManager& TextEncoding::manager() +{ + return *sh.get(); +} + + +} // namespace Poco |
