summaryrefslogtreecommitdiffstats
path: root/src/cc4group.c
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2020-04-23 22:43:55 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2020-04-23 22:43:55 +0200
commit0e367485f950b2ab7b9bd1b6c5e4a9b5d328a5dc (patch)
tree3e5c4dc21173f0f78419c66ffdd69fe8f0dc8e64 /src/cc4group.c
parent1aafff7b2a13034922861032fc74baf60b42dcbc (diff)
downloadcc4group-0e367485f950b2ab7b9bd1b6c5e4a9b5d328a5dc.tar.gz
cc4group-0e367485f950b2ab7b9bd1b6c5e4a9b5d328a5dc.zip
Store MemoryManagement by value instead of pointer
Diffstat (limited to 'src/cc4group.c')
-rw-r--r--src/cc4group.c57
1 files changed, 26 insertions, 31 deletions
diff --git a/src/cc4group.c b/src/cc4group.c
index ad840f0..76531f1 100644
--- a/src/cc4group.c
+++ b/src/cc4group.c
@@ -144,7 +144,7 @@ typedef struct {
static bool cc4group_applyMemoryManagementStart(CC4Group_MemoryManagement const management, const uint8_t** data, size_t size)
{
- void* newData = management->start(data == NULL ? NULL : (void*)*data, size, management->arg);
+ void* newData = management.start(data == NULL ? NULL : (void*)*data, size, management.arg);
if(newData == NULL)
{
return false;
@@ -155,7 +155,7 @@ static bool cc4group_applyMemoryManagementStart(CC4Group_MemoryManagement const
static void cc4group_applyMemoryManagementEnd(CC4Group_MemoryManagement const management, const uint8_t* data)
{
- management->end((void*)data, management->arg);
+ management.end((void*)data, management.arg);
}
static const uint8_t* cc4group_getOnlyEntryData(CC4Group* const this, const C4GroupEntryData* const entry);
@@ -2120,16 +2120,15 @@ static void* cc4group_mmappedFileManagementStart(void* const data, size_t const
}
typedef struct {
- CC4Group_MemoryManagement_t management;
size_t size;
int fd;
const CC4Group* group;
-} CC4GroupMMappedFileManagement;
+} CC4GroupMMappedFileManagementData;
static void cc4group_mmappedFileManagementEnd(void* const data, void* const arg)
{
(void)data;
- CC4GroupMMappedFileManagement* argData = arg;
+ CC4GroupMMappedFileManagementData* argData = arg;
if(cc4group_munmap(data, argData->size) == -1)
{
cc4group_warn(argData->group, "munmap: unmapping a mmapped file failed: %s", strerror(errno));
@@ -2178,19 +2177,14 @@ static const uint8_t* cc4group_getOnlyEntryData(CC4Group* const this, const C4Gr
return NULL;
}
- CC4GroupMMappedFileManagement* management = malloc(sizeof(*management));
+ CC4GroupMMappedFileManagementData* management = malloc(sizeof(*management));
if(management == NULL)
{
SET_ERRNO_ERROR("malloc: allocating memory for temporary memory management");
return NULL;
}
- *management = (CC4GroupMMappedFileManagement){
- .management = {
- .start = cc4group_mmappedFileManagementStart,
- .end = cc4group_mmappedFileManagementEnd,
- .arg = management
- },
+ *management = (CC4GroupMMappedFileManagementData){
.size = entry->core.Size,
.fd = -1,
.group = this
@@ -2202,7 +2196,11 @@ static const uint8_t* cc4group_getOnlyEntryData(CC4Group* const this, const C4Gr
}
((C4GroupEntryData*)entry)->data = mapped;
- ((C4GroupEntryData*)entry)->memoryManagement = &management->management;
+ ((C4GroupEntryData*)entry)->memoryManagement = (CC4Group_MemoryManagement){
+ .start = cc4group_mmappedFileManagementStart,
+ .end = cc4group_mmappedFileManagementEnd,
+ .arg = management
+ };
}
return entry->data;
@@ -3421,21 +3419,6 @@ static void cc4group_memoryManagementReferenceEnd(void* const data, void* const
(void)arg;
}
-static CC4Group_MemoryManagement_t takeMemoryManagement = {
- .start = cc4group_memoryManagementTakeStart,
- .end = cc4group_memoryManagementTakeEnd,
-};
-
-static CC4Group_MemoryManagement_t copyMemoryManagement = {
- .start = cc4group_memoryManagementCopyStart,
- .end = cc4group_memoryManagementCopyEnd,
-};
-
-static CC4Group_MemoryManagement_t referenceMemoryManagement = {
- .start = cc4group_memoryManagementReferenceStart,
- .end = cc4group_memoryManagementReferenceEnd,
-};
-
CC4Group_API cc4group = {
.AllowedEntryTypes = {
.File = CC4Group_AllowedEntryTypes_File,
@@ -3444,9 +3427,21 @@ CC4Group_API cc4group = {
},
.MemoryManagement = {
- .Take = &takeMemoryManagement,
- .Copy = &copyMemoryManagement,
- .Reference = &referenceMemoryManagement
+ .Take = {
+ .start = cc4group_memoryManagementTakeStart,
+ .end = cc4group_memoryManagementTakeEnd,
+ .arg = NULL
+ },
+ .Copy = {
+ .start = cc4group_memoryManagementCopyStart,
+ .end = cc4group_memoryManagementCopyEnd,
+ .arg = NULL
+ },
+ .Reference = {
+ .start = cc4group_memoryManagementReferenceStart,
+ .end = cc4group_memoryManagementReferenceEnd,
+ .arg = NULL
+ }
},