aboutsummaryrefslogtreecommitdiffstats
path: root/src/sdk/private/GFSDKPrivat.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/sdk/private/GFSDKPrivat.h37
1 files changed, 34 insertions, 3 deletions
diff --git a/src/sdk/private/GFSDKPrivat.h b/src/sdk/private/GFSDKPrivat.h
index 7cfa2c76..1d1cc8d3 100644
--- a/src/sdk/private/GFSDKPrivat.h
+++ b/src/sdk/private/GFSDKPrivat.h
@@ -28,7 +28,8 @@
#pragma once
-// declare logging category
+#include <core/function/SecureMemoryAllocator.h>
+
Q_DECLARE_LOGGING_CATEGORY(sdk)
#define LOG_D() qCDebug(sdk)
@@ -95,7 +96,7 @@ auto ConvertEventParamsToMap(GFModuleEventParam *params)
* @param size
* @return QStringList
*/
-auto CharArrayToQList(char **char_array, int size) -> QStringList;
+auto CharArrayToQStringList(char **char_array, int size) -> QStringList;
/**
* @brief
@@ -104,4 +105,34 @@ auto CharArrayToQList(char **char_array, int size) -> QStringList;
* @param size
* @return char**
*/
-auto QListToCharArray(const QStringList &list) -> char **; \ No newline at end of file
+auto QStringListToCharArray(const QStringList &list) -> char **;
+
+template <typename T>
+inline auto ArrayToQList(T **pl_components, int size) -> QList<T> {
+ if (pl_components == nullptr || size <= 0) {
+ return QList<T>();
+ }
+
+ QList<T> list;
+ for (int i = 0; i < size; ++i) {
+ list.append(*pl_components[i]);
+ GpgFrontend::SecureMemoryAllocator::Deallocate(pl_components[i]);
+ }
+ GpgFrontend::SecureMemoryAllocator::Deallocate(pl_components);
+ return list;
+}
+
+template <typename T>
+inline auto QListToArray(const QList<T> &list) -> T ** {
+ T **array = static_cast<T **>(
+ GpgFrontend::SecureMemoryAllocator::Allocate(list.size() * sizeof(T *)));
+ int index = 0;
+ for (const T &item : list) {
+ auto mem = static_cast<T *>(
+ GpgFrontend::SecureMemoryAllocator::Allocate(sizeof(T)));
+ array[index] = new (mem) T(item);
+ index++;
+ }
+
+ return array;
+} \ No newline at end of file