input and handler possibly fixed
This commit is contained in:
parent
31b8730a61
commit
d6281e8eac
11 changed files with 84 additions and 59 deletions
|
|
@ -32,14 +32,14 @@ void ARC_Handler_Add(ARC_Handler *handler, void *data){
|
|||
int8_t ARC_Handler_RemoveCompareFn(void *a, void *b){ return a == b; }
|
||||
|
||||
void ARC_Handler_Remove(ARC_Handler *handler, void *data){
|
||||
// ARC_Vector_Add(handler->trash, data);
|
||||
ARC_Vector_Add(handler->trash, data);
|
||||
ARC_Vector_Remove(handler->data, data, ARC_Handler_RemoveCompareFn);
|
||||
}
|
||||
|
||||
void ARC_Handler_RemoveIndex(ARC_Handler *handler, uint32_t *index){
|
||||
void *data = ARC_Vector_Get(handler->data, index);
|
||||
ARC_Vector_RemoveIndex(handler->data, index);
|
||||
ARC_Vector_Add(handler->trash, data);
|
||||
ARC_Vector_RemoveIndex(handler->data, index);
|
||||
}
|
||||
|
||||
void ARC_Handler_Iterate(ARC_Handler *handler, ARC_Handler_DataFn datafn){
|
||||
|
|
@ -49,8 +49,9 @@ void ARC_Handler_Iterate(ARC_Handler *handler, ARC_Handler_DataFn datafn){
|
|||
}
|
||||
|
||||
void ARC_Handler_Clear(ARC_Handler *handler){
|
||||
uint32_t zeroIndex = 0;
|
||||
while(*ARC_Vector_Size(handler->data)){
|
||||
ARC_Handler_Remove(handler, 0);
|
||||
ARC_Handler_RemoveIndex(handler, &zeroIndex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -58,7 +59,11 @@ void ARC_Handler_Clean(ARC_Handler *handler, ARC_Handler_CleanDataFn cleanfn){
|
|||
uint32_t i = 0;
|
||||
while(*ARC_Vector_Size(handler->trash)){
|
||||
void *data = ARC_Vector_Get(handler->trash, &i);
|
||||
cleanfn(data);
|
||||
|
||||
if(cleanfn){
|
||||
cleanfn(data);
|
||||
}
|
||||
|
||||
ARC_Vector_RemoveIndex(handler->trash, &i);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue