#include "cppc4group.hpp" #include #include #include 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(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; }