diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2024-12-15 06:41:07 +0100 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2024-12-15 06:44:06 +0100 |
commit | 149938cc445f99b1aa40c490014aad72cf698dec (patch) | |
tree | f1fc5ada59f85f58107c1c5dad2d5566db050067 | |
parent | 62f8a7d05f9a72f632fbf2b70490b9bbd1c49895 (diff) | |
download | liberty-149938cc445f99b1aa40c490014aad72cf698dec.tar.gz liberty-149938cc445f99b1aa40c490014aad72cf698dec.tar.xz liberty-149938cc445f99b1aa40c490014aad72cf698dec.zip |
lxdrgen-cpp: add a Qt backend
Motivation: some Android NDKs do not have iconv.
-rw-r--r-- | README.adoc | 3 | ||||
-rw-r--r-- | tools/lxdrgen-cpp-qt.cpp | 23 |
2 files changed, 25 insertions, 1 deletions
diff --git a/README.adoc b/README.adoc index debedf1..20a4612 100644 --- a/README.adoc +++ b/README.adoc @@ -45,8 +45,9 @@ lxdrgen-c.awk:: LibertyXDR backend that builds on top of the C pseudolibrary. lxdrgen-cpp.awk:: -lxdrgen-cpp-win32.cpp:: lxdrgen-cpp-posix.cpp:: +lxdrgen-cpp-qt.cpp:: +lxdrgen-cpp-win32.cpp:: LibertyXDR backend for C++, primarily targeting Win32 and its wide strings. Link the result together with one of the accompanied source files. diff --git a/tools/lxdrgen-cpp-qt.cpp b/tools/lxdrgen-cpp-qt.cpp new file mode 100644 index 0000000..60e7293 --- /dev/null +++ b/tools/lxdrgen-cpp-qt.cpp @@ -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 |