summaryrefslogtreecommitdiffstats
path: root/examples/cppc4group_memorymanagement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/cppc4group_memorymanagement.cpp')
-rw-r--r--examples/cppc4group_memorymanagement.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/examples/cppc4group_memorymanagement.cpp b/examples/cppc4group_memorymanagement.cpp
new file mode 100644
index 0000000..b29adae
--- /dev/null
+++ b/examples/cppc4group_memorymanagement.cpp
@@ -0,0 +1,51 @@
+#include "cppc4group.hpp"
+#include <string_view>
+#include <cstring>
+#include <iostream>
+
+using namespace std::literals;
+
+int main()
+{
+ CppC4Group g;
+ g.create();
+
+ constexpr auto takeContents = "This is only some dummy text for testing."sv;
+ void* takeData = malloc(takeContents.size());
+ memcpy(takeData, takeContents.data(), takeContents.size());
+
+ auto takeContentsString = new std::string{takeContents};
+
+ (g.create() &&
+ g.createFile("Take") &&
+ g.createFile("Reference") &&
+ g.createFile("Copy") &&
+ g.createFile("Custom") &&
+ g.createFile("CustomNoOpStart") &&
+
+
+ g.setEntryData("Take", takeData, takeContents.size(), CppC4Group::MemoryManagement::Take) &&
+ g.setEntryData("Reference", takeContents.data(), takeContents.size(), CppC4Group::MemoryManagement::Reference) &&
+ g.setEntryData("Copy", takeContents.data(), takeContents.size(), CppC4Group::MemoryManagement::Copy) &&
+ g.setEntryData("Custom", takeContents.data(), takeContents.size(), {
+ [](void* const data, size_t const size) -> void*
+ {
+ auto retData = new char[size];
+ memcpy(retData, data, size);
+ return retData;
+ },
+ [](void* const data)
+ {
+ delete [] reinterpret_cast<char*>(data);
+ }
+ }) &&
+ g.setEntryData("CustomNoOpStart", takeContentsString->data(), takeContentsString->size(), {CppC4Group::MemoryManagement::NoOpStart,
+ [takeContentsString](void* const)
+ {
+ delete takeContentsString;
+ }
+ }) &&
+
+ g.save("cppc4group_memorymanagement.c4d")) || (std::cerr << g.getErrorMessage() << '\n', true);
+ return 0;
+} \ No newline at end of file