diff --git a/src/lib/arch/Arch.h b/src/lib/arch/Arch.h index 635d8d079..60990a93d 100644 --- a/src/lib/arch/Arch.h +++ b/src/lib/arch/Arch.h @@ -24,6 +24,7 @@ #pragma once +#include "arch/ArchString.h" #include "common/Common.h" #if SYSAPI_WIN32 @@ -33,7 +34,6 @@ #include "arch/win32/ArchMultithreadWindows.h" #include "arch/win32/ArchNetworkWinsock.h" #include "arch/win32/ArchSleepWindows.h" -#include "arch/win32/ArchStringWindows.h" #include "arch/win32/ArchTimeWindows.h" #elif SYSAPI_UNIX @@ -42,7 +42,6 @@ #include "arch/unix/ArchLogUnix.h" #include "arch/unix/ArchNetworkBSD.h" #include "arch/unix/ArchSleepUnix.h" -#include "arch/unix/ArchStringUnix.h" #include "arch/unix/ArchTimeUnix.h" #if HAVE_PTHREAD @@ -72,7 +71,7 @@ class Arch : public ARCH_DAEMON, public ARCH_MULTITHREAD, public ARCH_NETWORK, public ARCH_SLEEP, - public ARCH_STRING, + public ArchString, public ARCH_TIME { public: diff --git a/src/lib/arch/IArchString.cpp b/src/lib/arch/ArchString.cpp similarity index 89% rename from src/lib/arch/IArchString.cpp rename to src/lib/arch/ArchString.cpp index 164ed2745..a1ea335e8 100644 --- a/src/lib/arch/IArchString.cpp +++ b/src/lib/arch/ArchString.cpp @@ -5,9 +5,8 @@ * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception */ -#include "arch/IArchString.h" +#include "arch/ArchString.h" #include "arch/Arch.h" -#include "common/Common.h" #include #include @@ -19,7 +18,7 @@ static ArchMutex s_mutex = nullptr; // use C library non-reentrant multibyte conversion with mutex // -IArchString::~IArchString() +ArchString::~ArchString() { if (s_mutex != nullptr) { ARCH->closeMutex(s_mutex); @@ -27,7 +26,7 @@ IArchString::~IArchString() } } -int IArchString::convStringWCToMB(char *dst, const wchar_t *src, uint32_t n, bool *errors) +int ArchString::convStringWCToMB(char *dst, const wchar_t *src, uint32_t n, bool *errors) const { ptrdiff_t len = 0; @@ -81,7 +80,16 @@ int IArchString::convStringWCToMB(char *dst, const wchar_t *src, uint32_t n, boo return static_cast(len); } -int IArchString::convStringMBToWC(wchar_t *dst, const char *src, uint32_t n, bool *errors) +ArchString::EWideCharEncoding ArchString::getWideCharEncoding() const +{ +#ifdef SYSAPI_WIN32 + return EWideCharEncoding::kUTF16; +#else + return EWideCharEncoding::kUCS4; +#endif +} + +int ArchString::convStringMBToWC(wchar_t *dst, const char *src, uint32_t n, bool *errors) const { ptrdiff_t len = 0; wchar_t dummy; diff --git a/src/lib/arch/IArchString.h b/src/lib/arch/ArchString.h similarity index 68% rename from src/lib/arch/IArchString.h rename to src/lib/arch/ArchString.h index cf679b746..495bf4928 100644 --- a/src/lib/arch/IArchString.h +++ b/src/lib/arch/ArchString.h @@ -18,16 +18,16 @@ This interface defines the string operations required by deskflow. Each architecture must implement this interface. */ -class IArchString : public IInterface +class ArchString : public IInterface { public: - IArchString() = default; - IArchString(const IArchString &) = delete; - IArchString(IArchString &&) = delete; - ~IArchString() override; + ArchString() = default; + ArchString(const ArchString &) = delete; + ArchString(ArchString &&) = delete; + ~ArchString() override; - IArchString &operator=(const IArchString &) = delete; - IArchString &operator=(IArchString &&) = delete; + ArchString &operator=(const ArchString &) = delete; + ArchString &operator=(ArchString &&) = delete; //! Wide character encodings /*! @@ -46,13 +46,13 @@ public: //@{ //! Convert multibyte string to wide character string - virtual int convStringMBToWC(wchar_t *, const char *, uint32_t n, bool *errors); + int convStringMBToWC(wchar_t *, const char *, uint32_t n, bool *errors) const; //! Convert wide character string to multibyte string - virtual int convStringWCToMB(char *, const wchar_t *, uint32_t n, bool *errors); + int convStringWCToMB(char *, const wchar_t *, uint32_t n, bool *errors) const; //! Return the architecture's native wide character encoding - virtual EWideCharEncoding getWideCharEncoding() = 0; + EWideCharEncoding getWideCharEncoding() const; //@} }; diff --git a/src/lib/arch/CMakeLists.txt b/src/lib/arch/CMakeLists.txt index 1f590e517..b7a441d52 100644 --- a/src/lib/arch/CMakeLists.txt +++ b/src/lib/arch/CMakeLists.txt @@ -18,8 +18,6 @@ if(WIN32) win32/ArchNetworkWinsock.h win32/ArchSleepWindows.cpp win32/ArchSleepWindows.h - win32/ArchStringWindows.cpp - win32/ArchStringWindows.h win32/ArchTimeWindows.cpp win32/ArchTimeWindows.h win32/XArchWindows.cpp @@ -38,8 +36,6 @@ elseif(UNIX) unix/ArchNetworkBSD.h unix/ArchSleepUnix.cpp unix/ArchSleepUnix.h - unix/ArchStringUnix.cpp - unix/ArchStringUnix.h unix/ArchTimeUnix.cpp unix/ArchTimeUnix.h unix/XArchUnix.cpp @@ -57,8 +53,8 @@ add_library(arch STATIC ${PLATFORM_CODE} IArchMultithread.h IArchNetwork.h IArchSleep.h - IArchString.cpp - IArchString.h + ArchString.cpp + ArchString.h IArchTime.h XArch.h ) diff --git a/src/lib/arch/unix/ArchStringUnix.cpp b/src/lib/arch/unix/ArchStringUnix.cpp deleted file mode 100644 index 9b80178bc..000000000 --- a/src/lib/arch/unix/ArchStringUnix.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Deskflow -- mouse and keyboard sharing utility - * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd. - * SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman - * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception - */ - -#include "arch/unix/ArchStringUnix.h" - -#include - -// -// ArchStringUnix -// - -IArchString::EWideCharEncoding ArchStringUnix::getWideCharEncoding() -{ - return EWideCharEncoding::kUCS4; -} diff --git a/src/lib/arch/unix/ArchStringUnix.h b/src/lib/arch/unix/ArchStringUnix.h deleted file mode 100644 index fa65b15b6..000000000 --- a/src/lib/arch/unix/ArchStringUnix.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Deskflow -- mouse and keyboard sharing utility - * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd. - * SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman - * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception - */ - -#pragma once - -#include "arch/IArchString.h" - -#define ARCH_STRING ArchStringUnix - -//! Unix implementation of IArchString -class ArchStringUnix : public IArchString -{ -public: - ArchStringUnix() = default; - ~ArchStringUnix() override = default; - - // IArchString overrides - EWideCharEncoding getWideCharEncoding() override; -}; diff --git a/src/lib/arch/win32/ArchStringWindows.cpp b/src/lib/arch/win32/ArchStringWindows.cpp deleted file mode 100644 index 5b3b2b551..000000000 --- a/src/lib/arch/win32/ArchStringWindows.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Deskflow -- mouse and keyboard sharing utility - * SPDX-FileCopyrightText: (C) 2025 Deskflow Developers - * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd. - * SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman - * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception - */ - -#include "arch/win32/ArchStringWindows.h" - -#define WIN32_LEAN_AND_MEAN -#include -#include - -// -// ArchStringWindows -// - -IArchString::EWideCharEncoding ArchStringWindows::getWideCharEncoding() -{ - return EWideCharEncoding::kUTF16; -} diff --git a/src/lib/arch/win32/ArchStringWindows.h b/src/lib/arch/win32/ArchStringWindows.h deleted file mode 100644 index 2a204389c..000000000 --- a/src/lib/arch/win32/ArchStringWindows.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Deskflow -- mouse and keyboard sharing utility - * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd. - * SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman - * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception - */ - -#pragma once - -#include "arch/IArchString.h" - -#define ARCH_STRING ArchStringWindows - -//! Win32 implementation of IArchString -class ArchStringWindows : public IArchString -{ -public: - ArchStringWindows() = default; - ~ArchStringWindows() override = default; - - // IArchString overrides - EWideCharEncoding getWideCharEncoding() override; -}; diff --git a/src/lib/base/Unicode.cpp b/src/lib/base/Unicode.cpp index f38230449..0289dc0d3 100644 --- a/src/lib/base/Unicode.cpp +++ b/src/lib/base/Unicode.cpp @@ -8,7 +8,7 @@ #include "base/Unicode.h" #include "arch/Arch.h" -using enum IArchString::EWideCharEncoding; +using enum ArchString::EWideCharEncoding; // // local utility functions // @@ -256,7 +256,7 @@ std::string Unicode::UTF32ToUTF8(const std::string_view &src, bool *errors) return doUTF32ToUTF8(reinterpret_cast(src.data()), n, errors); } -std::string Unicode::textToUTF8(const std::string &src, bool *errors, IArchString::EWideCharEncoding encoding) +std::string Unicode::textToUTF8(const std::string &src, bool *errors, ArchString::EWideCharEncoding encoding) { // default to success resetError(errors); @@ -312,7 +312,7 @@ wchar_t *Unicode::UTF8ToWideChar(const std::string &src, uint32_t &size, bool *e } std::string -Unicode::wideCharToUTF8(const wchar_t *src, uint32_t size, bool *errors, IArchString::EWideCharEncoding encoding) +Unicode::wideCharToUTF8(const wchar_t *src, uint32_t size, bool *errors, ArchString::EWideCharEncoding encoding) { if (encoding == kPlatformDetermined) { encoding = ARCH->getWideCharEncoding(); diff --git a/src/lib/base/Unicode.h b/src/lib/base/Unicode.h index 882463a04..92eade1d4 100644 --- a/src/lib/base/Unicode.h +++ b/src/lib/base/Unicode.h @@ -7,7 +7,7 @@ #pragma once -#include "arch/IArchString.h" +#include "arch/ArchString.h" #include "common/Common.h" #include @@ -104,7 +104,7 @@ public: */ static std::string textToUTF8( const std::string &, bool *errors = nullptr, - IArchString::EWideCharEncoding encoding = IArchString::EWideCharEncoding::kPlatformDetermined + ArchString::EWideCharEncoding encoding = ArchString::EWideCharEncoding::kPlatformDetermined ); //@} @@ -120,7 +120,7 @@ private: // encoding) to UTF8. static std::string wideCharToUTF8( const wchar_t *, uint32_t size, bool *errors, - IArchString::EWideCharEncoding encoding = IArchString::EWideCharEncoding::kPlatformDetermined + ArchString::EWideCharEncoding encoding = ArchString::EWideCharEncoding::kPlatformDetermined ); // internal conversion to UTF8 diff --git a/src/unittests/arch/IArchStringTests.cpp b/src/unittests/arch/ArchStringTests.cpp similarity index 72% rename from src/unittests/arch/IArchStringTests.cpp rename to src/unittests/arch/ArchStringTests.cpp index 2079acd6d..1ce9d6b6b 100644 --- a/src/unittests/arch/IArchStringTests.cpp +++ b/src/unittests/arch/ArchStringTests.cpp @@ -5,19 +5,19 @@ * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception */ -#include "IArchStringTests.h" +#include "ArchStringTests.h" -#include "arch/IArchString.h" +#include "arch/ArchString.h" -void IArchStringTests::initTestCase() +void ArchStringTests::initTestCase() { m_arch.init(); m_log.setFilter(kDEBUG2); } -void IArchStringTests::convertStringWCToMB_buffer() +void ArchStringTests::convertStringWCToMB_buffer() { - SampleIArchString as; + ArchString as; char buff[20]; bool errors; @@ -28,9 +28,9 @@ void IArchStringTests::convertStringWCToMB_buffer() QVERIFY(!errors); } -void IArchStringTests::convertStringWCToMB_noBuffer() +void ArchStringTests::convertStringWCToMB_noBuffer() { - SampleIArchString as; + ArchString as; bool errors; auto converted = as.convStringWCToMB(nullptr, L"Hello", 6, &errors); @@ -39,9 +39,9 @@ void IArchStringTests::convertStringWCToMB_noBuffer() QVERIFY(!errors); } -void IArchStringTests::convertStringMBToWC() +void ArchStringTests::convertStringMBToWC() { - SampleIArchString as; + ArchString as; wchar_t buff[20]; bool errors; @@ -55,4 +55,4 @@ void IArchStringTests::convertStringMBToWC() QVERIFY(!errors); } -QTEST_MAIN(IArchStringTests) +QTEST_MAIN(ArchStringTests) diff --git a/src/unittests/arch/IArchStringTests.h b/src/unittests/arch/ArchStringTests.h similarity index 71% rename from src/unittests/arch/IArchStringTests.h rename to src/unittests/arch/ArchStringTests.h index dded25fc4..28bd02f33 100644 --- a/src/unittests/arch/IArchStringTests.h +++ b/src/unittests/arch/ArchStringTests.h @@ -8,16 +8,7 @@ #include -class SampleIArchString : public IArchString -{ -public: - EWideCharEncoding getWideCharEncoding() override - { - return EWideCharEncoding::kUTF16; - } -}; - -class IArchStringTests : public QObject +class ArchStringTests : public QObject { Q_OBJECT private slots: diff --git a/src/unittests/arch/CMakeLists.txt b/src/unittests/arch/CMakeLists.txt index 9ba60210f..141342ce1 100644 --- a/src/unittests/arch/CMakeLists.txt +++ b/src/unittests/arch/CMakeLists.txt @@ -6,9 +6,9 @@ if(WIN32) endif() create_test( - NAME IArchStringTests + NAME ArchStringTests DEPENDS arch LIBS base ${extra_libs} - SOURCE IArchStringTests.cpp + SOURCE ArchStringTests.cpp WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src/lib/arch" ) diff --git a/src/unittests/base/UnicodeTests.cpp b/src/unittests/base/UnicodeTests.cpp index 153179ba4..158681389 100644 --- a/src/unittests/base/UnicodeTests.cpp +++ b/src/unittests/base/UnicodeTests.cpp @@ -7,7 +7,7 @@ #include "UnicodeTests.h" -#include "arch/IArchString.h" +#include "arch/ArchString.h" #include "base/Unicode.h" void UnicodeTests::initTestCase() @@ -37,7 +37,7 @@ void UnicodeTests::UTF16ToUTF8() void UnicodeTests::UCS2ToUTF8_kUCS2() { bool errors; - auto result = Unicode::textToUTF8("hello", &errors, IArchString::EWideCharEncoding::kUCS2); + auto result = Unicode::textToUTF8("hello", &errors, ArchString::EWideCharEncoding::kUCS2); QVERIFY(!errors); #ifdef _WIN32