From 0251f35c93e3f0e0a6853a50fb5bd82c1b9e4187 Mon Sep 17 00:00:00 2001 From: saturneric Date: Mon, 6 Nov 2023 17:17:47 +0800 Subject: refactor: clean up core's codes --- src/core/function/basic/ChannelObject.h | 80 +++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/core/function/basic/ChannelObject.h (limited to 'src/core/function/basic/ChannelObject.h') diff --git a/src/core/function/basic/ChannelObject.h b/src/core/function/basic/ChannelObject.h new file mode 100644 index 00000000..9d247e6a --- /dev/null +++ b/src/core/function/basic/ChannelObject.h @@ -0,0 +1,80 @@ +/** + * Copyright (C) 2021 Saturneric + * + * This file is part of GpgFrontend. + * + * GpgFrontend is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GpgFrontend is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GpgFrontend. If not, see . + * + * The initial version of the source code is inherited from + * the gpg4usb project, which is under GPL-3.0-or-later. + * + * All the source code of GpgFrontend was modified and released by + * Saturneric starting on May 12, 2021. + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + */ + +#pragma once + +namespace GpgFrontend { + +static constexpr int kGpgFrontendDefaultChannel = + 0; ///< the default channel id + +/** + * @brief object which in channel system is called "channel" + * + */ +class GPGFRONTEND_CORE_EXPORT ChannelObject { + public: + /** + * @brief Construct a new Default Channel Object object + * + */ + ChannelObject() noexcept; + + /** + * @brief Construct a new Channel Object object + * + * @param channel + */ + explicit ChannelObject(int channel); + + /** + * @brief Get the Default Channel object + * + * @return int + */ + static auto GetDefaultChannel() -> int; + + /** + * @brief Get the Channel object + * + * @return int + */ + [[nodiscard]] auto GetChannel() const -> int; + + /** + * @brief Set the Channel object + * + * @param channel + */ + void SetChannel(int channel); + + private: + int channel_ = kGpgFrontendDefaultChannel; ///< The channel id +}; + +} // namespace GpgFrontend \ No newline at end of file -- cgit v1.2.3 From ae2717c3787a34a2c60d6aeef2d0b8bb8e551a1e Mon Sep 17 00:00:00 2001 From: saturneric Date: Sun, 3 Dec 2023 04:27:47 -0800 Subject: feat: improve memory security of function framework --- src/core/function/basic/ChannelObject.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/core/function/basic/ChannelObject.h') diff --git a/src/core/function/basic/ChannelObject.h b/src/core/function/basic/ChannelObject.h index 9d247e6a..7bbd6d94 100644 --- a/src/core/function/basic/ChannelObject.h +++ b/src/core/function/basic/ChannelObject.h @@ -28,6 +28,7 @@ #pragma once +#include "core/function/SecureMemoryAllocator.h" namespace GpgFrontend { static constexpr int kGpgFrontendDefaultChannel = @@ -45,6 +46,12 @@ class GPGFRONTEND_CORE_EXPORT ChannelObject { */ ChannelObject() noexcept; + /** + * @brief Destroy the Channel Object object + * + */ + virtual ~ChannelObject() noexcept; + /** * @brief Construct a new Channel Object object * @@ -77,4 +84,16 @@ class GPGFRONTEND_CORE_EXPORT ChannelObject { int channel_ = kGpgFrontendDefaultChannel; ///< The channel id }; +template +auto ConvertToChannelObjectPtr( + std::unique_ptr> derivedPtr) + -> std::unique_ptr> { + static_assert(std::is_base_of_v, + "Derived must be a subclass of ChannelObject"); + + ChannelObject* base_ptr = derivedPtr.release(); + return std::unique_ptr>( + base_ptr); +} + } // namespace GpgFrontend \ No newline at end of file -- cgit v1.2.3 From a0f0fd98efa12ef33959badcc25ff568e8b242b4 Mon Sep 17 00:00:00 2001 From: saturneric Date: Wed, 6 Dec 2023 21:10:48 +0800 Subject: feat: move test to src and add submodule googletest --- src/core/function/basic/ChannelObject.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/core/function/basic/ChannelObject.h') diff --git a/src/core/function/basic/ChannelObject.h b/src/core/function/basic/ChannelObject.h index 7bbd6d94..6fb315ae 100644 --- a/src/core/function/basic/ChannelObject.h +++ b/src/core/function/basic/ChannelObject.h @@ -28,12 +28,10 @@ #pragma once +#include "core/GpgConstants.h" #include "core/function/SecureMemoryAllocator.h" namespace GpgFrontend { -static constexpr int kGpgFrontendDefaultChannel = - 0; ///< the default channel id - /** * @brief object which in channel system is called "channel" * -- cgit v1.2.3 From f5cf83e4b3fdf1e9ae82b00f39e45e189809c419 Mon Sep 17 00:00:00 2001 From: saturneric Date: Fri, 15 Dec 2023 17:04:59 +0800 Subject: fix: slove some issues on memory and intilizations --- src/core/function/basic/ChannelObject.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/core/function/basic/ChannelObject.h') diff --git a/src/core/function/basic/ChannelObject.h b/src/core/function/basic/ChannelObject.h index 6fb315ae..18317ee2 100644 --- a/src/core/function/basic/ChannelObject.h +++ b/src/core/function/basic/ChannelObject.h @@ -55,7 +55,7 @@ class GPGFRONTEND_CORE_EXPORT ChannelObject { * * @param channel */ - explicit ChannelObject(int channel); + explicit ChannelObject(int channel, std::string type); /** * @brief Get the Default Channel object @@ -80,6 +80,7 @@ class GPGFRONTEND_CORE_EXPORT ChannelObject { private: int channel_ = kGpgFrontendDefaultChannel; ///< The channel id + std::string type_; }; template -- cgit v1.2.3 From bf538056b24a68b8fd235b1c50991ee8eb46a776 Mon Sep 17 00:00:00 2001 From: saturneric Date: Fri, 12 Jan 2024 14:02:37 +0800 Subject: refactor: use QString instead of std::string and improve threading system --- src/core/function/basic/ChannelObject.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/core/function/basic/ChannelObject.h') diff --git a/src/core/function/basic/ChannelObject.h b/src/core/function/basic/ChannelObject.h index 18317ee2..27be55c4 100644 --- a/src/core/function/basic/ChannelObject.h +++ b/src/core/function/basic/ChannelObject.h @@ -55,7 +55,7 @@ class GPGFRONTEND_CORE_EXPORT ChannelObject { * * @param channel */ - explicit ChannelObject(int channel, std::string type); + explicit ChannelObject(int channel, QString type); /** * @brief Get the Default Channel object @@ -80,7 +80,7 @@ class GPGFRONTEND_CORE_EXPORT ChannelObject { private: int channel_ = kGpgFrontendDefaultChannel; ///< The channel id - std::string type_; + QString type_; }; template -- cgit v1.2.3