summaryrefslogtreecommitdiffstats
path: root/src/cppc4group.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/cppc4group.cpp')
-rw-r--r--src/cppc4group.cpp50
1 files changed, 33 insertions, 17 deletions
diff --git a/src/cppc4group.cpp b/src/cppc4group.cpp
index 0619f75..4cc0d08 100644
--- a/src/cppc4group.cpp
+++ b/src/cppc4group.cpp
@@ -26,6 +26,36 @@ struct CppC4Group::Private {
}
};
+namespace {
+ CC4Group_TmpMemoryStrategy convertTmpMemoryStrategy(const CppC4Group::TmpMemoryStrategy strategy)
+ {
+ switch(strategy)
+ {
+ case CppC4Group::Auto:
+ return cc4group.TmpMemoryStrategies.Auto;
+ case CppC4Group::File:
+ return cc4group.TmpMemoryStrategies.File;
+ case CppC4Group::Memory:
+ return cc4group.TmpMemoryStrategies.Memory;
+ }
+ return cc4group.TmpMemoryStrategies.Auto;
+ }
+
+ int convertMemoryManagement(const CppC4Group::MemoryManagement management)
+ {
+ switch(management)
+ {
+ case CppC4Group::Take:
+ return cc4group.MemoryManagement.Take;
+ case CppC4Group::Copy:
+ return cc4group.MemoryManagement.Copy;
+ case CppC4Group::Reference:
+ return cc4group.MemoryManagement.Reference;
+ }
+ return cc4group.MemoryManagement.Copy;
+ }
+}
+
CppC4Group::CppC4Group() : p{new CppC4Group::Private{}}
{
@@ -97,21 +127,7 @@ std::string CppC4Group::getErrorCauser()
void CppC4Group::setTmpMemoryStrategy(const CppC4Group::TmpMemoryStrategy strategy)
{
- auto ccStrategy = cc4group.TmpMemoryStrategies.Auto;
- switch(strategy)
- {
- case Auto:
- ccStrategy = cc4group.TmpMemoryStrategies.Auto;
- break;
- case File:
- ccStrategy = cc4group.TmpMemoryStrategies.File;
- break;
- case Memory:
- ccStrategy = cc4group.TmpMemoryStrategies.Memory;
- break;
- }
-
- cc4group.setTmpMemoryStrategy(ccStrategy);
+ cc4group.setTmpMemoryStrategy(convertTmpMemoryStrategy(strategy));
}
bool CppC4Group::setMaker(const std::string& maker, const std::string& path, const bool recursive)
@@ -209,7 +225,7 @@ bool CppC4Group::createFile(const std::string& path)
return cc4group.createFile(p->g, path.c_str());
}
-bool CppC4Group::setEntryData(const std::__cxx11::string& path, const void*const data, const size_t size, const bool freeData)
+bool CppC4Group::setEntryData(const std::__cxx11::string& path, const void*const data, const size_t size, const MemoryManagement management)
{
- return cc4group.setEntryData(p->g, path.c_str(), data, size, freeData);
+ return cc4group.setEntryData(p->g, path.c_str(), data, size, convertMemoryManagement(management));
}