tekno_uttv2/ultimateteknotool.v2/TextConvertors.cpp
2020-12-31 15:35:46 +03:00

210 lines
5.5 KiB
C++

#include "pch.h"
#include "TextConvertors.h"
static std::wistringstream inputWstringstream;
static std::wostringstream outputWstringstream(L"");
static std::wstring aaaaaa;
static LazyBuffer_wchart<256> LazyW256;
static LazyBuffer_char<256> LazyC256;
uint32_t textconvertors::ConvertWTextHexTypeToU32(const wchar_t* text)
{
inputWstringstream.clear();
inputWstringstream.str(text);
uint32_t ret = 0;
if (inputWstringstream >> std::hex >> ret)
{
return ret;
}
else
{
return 0;
}
}
uint32_t textconvertors::ConvertWTextDecTypeToU32(const wchar_t* text)
{
inputWstringstream.clear();
inputWstringstream.str(text);
uint32_t ret = 0;
if (inputWstringstream >> std::dec >> ret)
{
return ret;
}
else
{
return 0;
}
}
const wchar_t* textconvertors::ConvertHexTypeU32ToWText(const uint32_t value)
{
//greatstringstream.clear();
outputWstringstream.str(L"00000000");
outputWstringstream << std::hex << value;
aaaaaa = outputWstringstream.str();
return aaaaaa.c_str();
}
const wchar_t* textconvertors::ConvertDecTypeU32ToWText(const uint32_t value)
{
//greatstringstream.clear();
outputWstringstream.str(L"0");
outputWstringstream << std::dec << value;
aaaaaa = outputWstringstream.str();
return aaaaaa.c_str();
}
uint16_t textconvertors::ConvertWTextDecTypeToU16(const wchar_t* text)
{
inputWstringstream.clear();
inputWstringstream.str(text);
uint16_t PortInput = 0;
if (inputWstringstream >> std::dec >> PortInput) {
return PortInput;
}
else
{
return 0;
}
}
const wchar_t* textconvertors::ConvertDecTypeToU16ToWText(const uint16_t value)
{
outputWstringstream.str(L"0");
outputWstringstream << std::dec << value;
aaaaaa = outputWstringstream.str();
return aaaaaa.c_str();
}
void textconvertors::ConvertWTextToIP(const wchar_t* text, uint8_t NewIP[4])
{
inputWstringstream.clear();
inputWstringstream.str(text);
wchar_t ignore;
uint32_t NewIPinput[4];
if (inputWstringstream >> std::dec >> NewIPinput[0] >> ignore >> NewIPinput[1] >> ignore >> NewIPinput[2] >> ignore >> NewIPinput[3])
{
NewIPinput[0] <<= 24; NewIPinput[1] <<= 24; NewIPinput[2] <<= 24; NewIPinput[3] <<= 24;
NewIP[0] = ((NewIPinput[0] >> 24) & 0xFF);
NewIP[1] = ((NewIPinput[1] >> 24) & 0xFF);
NewIP[2] = ((NewIPinput[2] >> 24) & 0xFF);
NewIP[3] = ((NewIPinput[3] >> 24) & 0xFF);
}
else
{
NewIP[0] = 0;
NewIP[1] = 0;
NewIP[2] = 0;
NewIP[3] = 0;
}
}
const wchar_t* textconvertors::ConvertIPToWText(const uint8_t NewIP[4])
{
outputWstringstream.str(L"");
outputWstringstream << std::dec <<
static_cast<uint16_t>(NewIP[0]) << L'.' <<
static_cast<uint16_t>(NewIP[1]) << L'.' <<
static_cast<uint16_t>(NewIP[2]) << L'.' <<
static_cast<uint16_t>(NewIP[3]);
aaaaaa = outputWstringstream.str();
return aaaaaa.c_str();
}
const wchar_t* textconvertors::ConvertU8TextToWText_StupidButFast(const uint8_t* data, unsigned short sz)
{
wchar_t* diesoon = LazyW256.GetNulledMem(sz + 2);
for (size_t i = 0; i < sz && data[i]; i++)
{
diesoon[i] = static_cast<wchar_t>(data[i]);
}
return diesoon;
}
const wchar_t* textconvertors::ConvertU8TextToWText_StupidButFast_graphNspace(const uint8_t* data, unsigned short sz)
{
wchar_t* diesoon = LazyW256.GetNulledMem(sz + 2);
for (size_t i = 0; i < sz && (::isgraph(data[i]) || data[i] == static_cast<uint8_t>(' ')); i++)
{
diesoon[i] = static_cast<wchar_t>(data[i]);
}
return diesoon;
}
const wchar_t* textconvertors::ConvertCharTextToWText_StupidButFast(const char* data, unsigned short sz)
{
wchar_t* diesoon = LazyW256.GetNulledMem(sz + 2);
for (size_t i = 0; i < sz && data[i]; i++)
{
diesoon[i] = static_cast<wchar_t>(data[i]);
}
return diesoon;
}
static_assert(sizeof(wchar_t) == sizeof(char) * 2, "size of wchar_t is not equal to size of two char");
static_assert(sizeof(wchar_t) == sizeof(uint8_t) * 2, "size of wchar_t is not equal to size of two uint8_t");
static_assert(sizeof(char) == sizeof(uint8_t), "size of char is not equal to size of uint8_t");
const uint8_t* textconvertors::ConvertWTextToU8Text(const wchar_t* src, unsigned short sz)
{
uint8_t* diesoon = reinterpret_cast<uint8_t*>(LazyC256.GetNulledMem(sz + 2));
const uint8_t* txtp = reinterpret_cast<const uint8_t*>(src);
for (decltype(sz) i = 0; i < sz && txtp[2*i]; i++)
{
diesoon[i] = txtp[2 * i];
}
return diesoon;
}
const char* textconvertors::ConvertWTextToCharText(const wchar_t* src, unsigned short sz)
{
char* diesoon = LazyC256.GetNulledMem(sz + 2);
const char* txtp = reinterpret_cast<const char*>(src);
for (decltype(sz) i = 0; i < sz && txtp[2 * i]; i++)
{
diesoon[i] = txtp[2 * i];
}
return diesoon;
}
const std::wstring& textconvertors::ret_stdstring::ConvertDecTypeU32ToWText(const uint32_t v)
{
outputWstringstream.str(L"0");
outputWstringstream << std::dec << v;
aaaaaa = outputWstringstream.str();
return aaaaaa;
}
const std::wstring& textconvertors::ret_stdstring::ConvertHexTypeU32ToWText(const uint32_t v)
{
outputWstringstream.str(L"0");
outputWstringstream << std::hex << v;
aaaaaa = outputWstringstream.str();
return aaaaaa;
}
const std::wstring& textconvertors::ret_stdstring::ConvertDecTypeU16ToWText(const uint16_t v)
{
outputWstringstream.str(L"0");
outputWstringstream << std::dec << v;
aaaaaa = outputWstringstream.str();
return aaaaaa;
}
const std::wstring& textconvertors::ret_stdstring::ConvertIPToWText(const uint8_t NewIP[4])
{
outputWstringstream.str(L"");
outputWstringstream << std::dec <<
static_cast<uint16_t>(NewIP[0]) << L'.' <<
static_cast<uint16_t>(NewIP[1]) << L'.' <<
static_cast<uint16_t>(NewIP[2]) << L'.' <<
static_cast<uint16_t>(NewIP[3]);
aaaaaa = outputWstringstream.str();
return aaaaaa;
}