diff options
author | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/poco/XML/src/XMLString.cpp |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/poco/XML/src/XMLString.cpp')
-rw-r--r-- | contrib/libs/poco/XML/src/XMLString.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/contrib/libs/poco/XML/src/XMLString.cpp b/contrib/libs/poco/XML/src/XMLString.cpp new file mode 100644 index 00000000000..732d61f1a5a --- /dev/null +++ b/contrib/libs/poco/XML/src/XMLString.cpp @@ -0,0 +1,64 @@ +// +// XMLString.cpp +// +// Library: XML +// Package: XML +// Module: XMLString +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/XML/XMLString.h" + + +#if defined(XML_UNICODE_WCHAR_T) +#include <stdlib.h> +#endif + + +namespace Poco { +namespace XML { + + +#if defined(XML_UNICODE_WCHAR_T) + + +std::string fromXMLString(const XMLString& str) +{ + std::string result; + result.reserve(str.size()); + + for (XMLString::const_iterator it = str.begin(); it != str.end(); ++it) + { + char c; + wctomb(&c, *it); + result += c; + } + return result; +} + + +XMLString toXMLString(const std::string& str) +{ + XMLString result; + result.reserve(str.size()); + + for (std::string::const_iterator it = str.begin(); it != str.end();) + { + wchar_t c; + int n = mbtowc(&c, &*it, MB_CUR_MAX); + result += c; + it += (n > 0 ? n : 1); + } + return result; +} + + +#endif // XML_UNICODE_WCHAR_T + + +} } // namespace Poco::XML |