diff options
-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 |