1
0
mirror of https://gitlab.com/klmp200/LO41.git synced 2025-07-11 12:19:25 +00:00

La structure du projet avance, on peut maintenant charger les résidents et les visiteurs

This commit is contained in:
2018-06-06 20:29:02 +02:00
parent 8b29c54d76
commit 8ed34b4593
14 changed files with 268 additions and 8 deletions

View File

@ -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 ++;

View File

@ -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);

View File

@ -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

View File

@ -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));