updated handler and fixed state in the process
This commit is contained in:
parent
55e8c44221
commit
5a0d1af942
5 changed files with 24 additions and 18 deletions
|
|
@ -7,17 +7,20 @@
|
|||
struct ARC_Handler {
|
||||
ARC_Vector *data;
|
||||
ARC_Vector *trash;
|
||||
|
||||
ARC_Handler_CleanDataFn cleanfn;
|
||||
};
|
||||
|
||||
void ARC_Handler_Create(ARC_Handler **handler){
|
||||
void ARC_Handler_Create(ARC_Handler **handler, ARC_Handler_CleanDataFn cleanfn){
|
||||
*handler = (ARC_Handler *) malloc(sizeof(ARC_Handler));
|
||||
ARC_Vector_Create(&((*handler)->data));
|
||||
ARC_Vector_Create(&((*handler)->trash));
|
||||
(*handler)->cleanfn = cleanfn;
|
||||
}
|
||||
|
||||
void ARC_Handler_Destroy(ARC_Handler *handler, ARC_Handler_CleanDataFn cleanfn){
|
||||
void ARC_Handler_Destroy(ARC_Handler *handler){
|
||||
ARC_Handler_Clear(handler);
|
||||
ARC_Handler_Clean(handler, cleanfn);
|
||||
ARC_Handler_Clean(handler);
|
||||
|
||||
ARC_Vector_Destroy(handler->data);
|
||||
ARC_Vector_Destroy(handler->trash);
|
||||
|
|
@ -57,13 +60,13 @@ void ARC_Handler_Clear(ARC_Handler *handler){
|
|||
}
|
||||
}
|
||||
|
||||
void ARC_Handler_Clean(ARC_Handler *handler, ARC_Handler_CleanDataFn cleanfn){
|
||||
void ARC_Handler_Clean(ARC_Handler *handler){
|
||||
uint32_t i = 0;
|
||||
while(*ARC_Vector_Size(handler->trash)){
|
||||
void *data = ARC_Vector_Get(handler->trash, &i);
|
||||
|
||||
if(cleanfn){
|
||||
cleanfn(data);
|
||||
if(handler->cleanfn){
|
||||
handler->cleanfn(data);
|
||||
}
|
||||
|
||||
ARC_Vector_RemoveIndex(handler->trash, &i);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue