lxdrgen-cpp: add a Qt backend
All checks were successful
Alpine 3.20 Success

Motivation: some Android NDKs do not have iconv.
This commit is contained in:
Přemysl Eric Janouch 2024-12-15 06:41:07 +01:00
parent 62f8a7d05f
commit 149938cc44
Signed by: p
GPG Key ID: A0420B94F92B9493
2 changed files with 25 additions and 1 deletions

View File

@ -45,8 +45,9 @@ lxdrgen-c.awk::
LibertyXDR backend that builds on top of the C pseudolibrary. LibertyXDR backend that builds on top of the C pseudolibrary.
lxdrgen-cpp.awk:: lxdrgen-cpp.awk::
lxdrgen-cpp-win32.cpp::
lxdrgen-cpp-posix.cpp:: lxdrgen-cpp-posix.cpp::
lxdrgen-cpp-qt.cpp::
lxdrgen-cpp-win32.cpp::
LibertyXDR backend for C++, primarily targeting Win32 and its wide strings. LibertyXDR backend for C++, primarily targeting Win32 and its wide strings.
Link the result together with one of the accompanied source files. Link the result together with one of the accompanied source files.

23
tools/lxdrgen-cpp-qt.cpp Normal file
View File

@ -0,0 +1,23 @@
// lxdrgen-cpp-qt.cpp: Qt support code for lxdrgen-cpp.awk.
//
// Copyright (c) 2024, Přemysl Eric Janouch <p@janouch.name>
// SPDX-License-Identifier: 0BSD
#include <QString>
#include <string>
namespace LibertyXDR {
bool utf8_to_wstring(const uint8_t *utf8, size_t length, std::wstring &wide) {
QByteArrayView view(reinterpret_cast<const char *>(utf8), length);
if (!view.isValidUtf8())
return false;
wide = QString::fromUtf8(view).toStdWString();
return true;
}
bool wstring_to_utf8(const std::wstring &wide, std::string &utf8) {
utf8 = QString::fromStdWString(wide).toUtf8().toStdString();
return true;
}
} // namespace LibertyXDR