1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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.saveAs("cppc4group_memorymanagement.c4d")) || (std::cerr << g.getErrorMessage() << '\n', true);
return 0;
}
|