summaryrefslogtreecommitdiffstats
path: root/src/cppc4group.hpp
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2019-03-19 23:49:02 +0100
committerMarkus Mittendrein <git@maxmitti.tk>2019-03-19 23:49:02 +0100
commitb1b4973e1e8163a24f0560c1fb8c83b901d05b66 (patch)
treef98ae83d9a3b890e46a0f8dfe57154e01aa238fc /src/cppc4group.hpp
parent540d28f433c658f843528f498271ca722db055b4 (diff)
downloadcc4group-b1b4973e1e8163a24f0560c1fb8c83b901d05b66.tar.gz
cc4group-b1b4973e1e8163a24f0560c1fb8c83b901d05b66.zip
Add cppc4group-wrapper for custom tmp memory management
Diffstat (limited to 'src/cppc4group.hpp')
-rw-r--r--src/cppc4group.hpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/cppc4group.hpp b/src/cppc4group.hpp
index 78370d9..166fadf 100644
--- a/src/cppc4group.hpp
+++ b/src/cppc4group.hpp
@@ -4,6 +4,7 @@
#include <vector>
#include <optional>
#include <cstdio>
+#include <functional>
class CppC4Group {
struct Private;
@@ -30,7 +31,18 @@ public:
bool official;
};
+ struct TmpMemory {
+ using TmpMemoryCleanupCallback = std::function<bool(void* memory, void* arg)>;
+
+ void* memory;
+ TmpMemoryCleanupCallback cleanup;
+ void* arg;
+
+ TmpMemory(void* const memory, const TmpMemoryCleanupCallback& cleanup, void* const arg);
+ };
+
public:
+ using TmpMemoryCallback = std::optional<TmpMemory>(*)(size_t size);
using ReadCallback = bool(*)(const void** const data, size_t* const size, void* const arg);
using SetupCallback = bool(*)(void* const arg);
@@ -47,6 +59,7 @@ public:
};
static void setTmpMemoryStrategy(const TmpMemoryStrategy strategy);
+ static void setTmpMemoryStrategy(const TmpMemoryCallback callback);
public:
CppC4Group();