mirror of
https://gitlab.com/klmp200/LO41.git
synced 2025-07-11 04:09:24 +00:00
La structure du projet avance, on peut maintenant charger les résidents et les visiteurs
This commit is contained in:
@ -31,7 +31,7 @@ void _free__Element(THIS(Element)){
|
||||
list->size --;
|
||||
}
|
||||
if (this->data != NULL)
|
||||
free(this->data);
|
||||
this->data_free(this->data);
|
||||
free(this);
|
||||
}
|
||||
|
||||
@ -48,6 +48,7 @@ Element *_init_Element(void *data, size_t size, List *list){
|
||||
el->data = new_data;
|
||||
el->previous = NULL;
|
||||
el->next = NULL;
|
||||
el->data_free = free;
|
||||
|
||||
if (el->list != NULL)
|
||||
el->list->size ++;
|
||||
|
@ -14,6 +14,7 @@ struct o_Element {
|
||||
PRIVATE void *data;
|
||||
PRIVATE struct o_Element *next;
|
||||
PRIVATE struct o_Element *previous;
|
||||
PRIVATE void (*data_free)(void *);
|
||||
|
||||
PUBLIC struct o_Element *(*get_next)(_THIS(Element));
|
||||
PUBLIC struct o_Element *(*get_previous)(_THIS(Element));
|
||||
@ -29,6 +30,7 @@ FRIENDLY(list, List)
|
||||
FRIENDLY(data, List)
|
||||
FRIENDLY(next, List)
|
||||
FRIENDLY(previous, List)
|
||||
FRIENDLY(data_free, List)
|
||||
|
||||
Element *_init_Element(void *data, size_t size, List *list);
|
||||
|
||||
|
@ -59,13 +59,14 @@ void _free__List(THIS(List)){
|
||||
free(this);
|
||||
}
|
||||
|
||||
void clear_List(THIS(List)){
|
||||
void clear_custom_List(THIS(List), void (*custom_free)(void *)){
|
||||
Element *current = this->head;
|
||||
Element *to_delete = NULL;
|
||||
while (current != NULL){
|
||||
to_delete = current;
|
||||
current = current->next;
|
||||
to_delete->list = NULL;
|
||||
to_delete->data_free = custom_free;
|
||||
DELETE(to_delete);
|
||||
}
|
||||
this->head = NULL;
|
||||
@ -73,6 +74,10 @@ void clear_List(THIS(List)){
|
||||
this->size = 0;
|
||||
}
|
||||
|
||||
void clear_List(THIS(List)){
|
||||
this->clear_custom(this, free);
|
||||
}
|
||||
|
||||
void insert_tail_List(THIS(List), void * data, size_t data_size){
|
||||
/* Create a new element */
|
||||
Element *new_element = NEW(Element, data, data_size, this);
|
||||
@ -146,6 +151,7 @@ List *_init_List(){
|
||||
insert_inside,
|
||||
insert_tail,
|
||||
insert_head,
|
||||
clear_custom,
|
||||
clear,
|
||||
remove_head,
|
||||
remove_tail
|
||||
|
@ -33,6 +33,7 @@ struct o_List {
|
||||
PUBLIC void (*insert_tail)(_THIS(List), void * data, size_t data_size);
|
||||
PUBLIC void (*insert_head)(_THIS(List), void * data, size_t data_size);
|
||||
PUBLIC void (*clear)(_THIS(List));
|
||||
PUBLIC void (*clear_custom)(_THIS(List), void (*custom_free)(void *));
|
||||
PUBLIC void (*remove_head)(_THIS(List));
|
||||
PUBLIC void (*remove_tail)(_THIS(List));
|
||||
|
||||
|
Reference in New Issue
Block a user