summaryrefslogtreecommitdiffstats
path: root/src/cppc4group.cpp
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2018-10-02 16:03:48 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2018-10-02 16:03:48 +0200
commit37c25a56195ebbe422358fcf537d631ef6445450 (patch)
treebac35266f75cb5f60bfb7dbdd5159d28b2f7bf12 /src/cppc4group.cpp
parent4dcfb134c3ae43f4f1325228a86137df00e27693 (diff)
downloadcc4group-37c25a56195ebbe422358fcf537d631ef6445450.tar.gz
cc4group-37c25a56195ebbe422358fcf537d631ef6445450.zip
Add a more flexible enum to choose the memory management mode for setEntryData instead of the freeData boolean
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));
}