Decompile 3 functions in Source/Network/TextEncoding.cpp, Source/Network/TextEncoding.h
Batch #852 by ragnarok-clanker: 0 byte-identical, 3 confirmed by peer review. - fn_18257 LowercaseText: logic confirmed by peer review - fn_18258 DecodeText: logic confirmed by peer review - fn_18265 EncodeText: logic confirmed by peer review Reviewed-by: ragnarok-clanker
This commit is contained in:
parent
e99b978f19
commit
b7c7ea1461
2 changed files with 55 additions and 0 deletions
|
|
@ -1,6 +1,8 @@
|
|||
#include "Network/TextEncoding.h"
|
||||
#include "Utility/StackAlloc.h"
|
||||
|
||||
#include <cctype>
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <malloc.h>
|
||||
|
|
@ -138,3 +140,52 @@ std::string ToUtf8(const std::string& text, UINT codePage) {
|
|||
SysFreeString(wide);
|
||||
return result;
|
||||
}
|
||||
|
||||
// FUNCTION: fn_18257
|
||||
void LowercaseText(std::string& text) {
|
||||
for (unsigned index = 0; index < text.size(); ++index) {
|
||||
if (static_cast<signed char>(text[index]) <= 0) {
|
||||
++index;
|
||||
} else if (std::isupper(text[index]) != 0) {
|
||||
text[index] += 32;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: fn_18258
|
||||
std::wstring DecodeText(UINT codePage, const std::string& text) {
|
||||
const int length = MultiByteToWideChar(codePage, 0, text.data(), static_cast<int>(text.size()), nullptr, 0);
|
||||
if (length == 0) {
|
||||
return {};
|
||||
}
|
||||
BSTR converted = SysAllocStringLen(nullptr, length);
|
||||
if (converted == nullptr) {
|
||||
return {};
|
||||
}
|
||||
if (MultiByteToWideChar(codePage, 0, text.data(), static_cast<int>(text.size()), converted, length) == 0) {
|
||||
SysFreeString(converted);
|
||||
return {};
|
||||
}
|
||||
std::wstring result(converted);
|
||||
SysFreeString(converted);
|
||||
return result;
|
||||
}
|
||||
|
||||
// FUNCTION: fn_18265
|
||||
std::string EncodeText(UINT codePage, const std::wstring& text) {
|
||||
const int length = WideCharToMultiByte(codePage, 0, text.c_str(), -1, nullptr, 0, nullptr, nullptr);
|
||||
if (length == 0) {
|
||||
return {};
|
||||
}
|
||||
char* converted = static_cast<char*>(std::malloc(length));
|
||||
if (converted == nullptr) {
|
||||
return {};
|
||||
}
|
||||
if (WideCharToMultiByte(codePage, 0, text.c_str(), -1, converted, length, nullptr, nullptr) == 0) {
|
||||
std::free(converted);
|
||||
return {};
|
||||
}
|
||||
std::string result(converted, std::strlen(converted));
|
||||
std::free(converted);
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue