mirror of
https://gitlab.com/klmp200/LO41.git
synced 2025-07-11 12:19:25 +00:00
Petit refactor avec des signaux
This commit is contained in:
16
List/List.c
16
List/List.c
@ -7,6 +7,10 @@ GETTER(List, Element*, head)
|
||||
GETTER(List, Element*, tail)
|
||||
GETTER(List, int, size)
|
||||
|
||||
void set_custom_free_List(THIS(List), void (*custom_free)(void *)){
|
||||
this->custom_free = custom_free;
|
||||
}
|
||||
|
||||
Element * get_element_List(THIS(List), int index){
|
||||
Element * current = NULL;
|
||||
int i;
|
||||
@ -31,7 +35,9 @@ Element * get_element_List(THIS(List), int index){
|
||||
i--;
|
||||
}
|
||||
}
|
||||
} else OUTSIDE_BOUNDS;
|
||||
} else {
|
||||
OUTSIDE_BOUNDS;
|
||||
}
|
||||
return current;
|
||||
}
|
||||
|
||||
@ -81,6 +87,8 @@ void clear_List(THIS(List)){
|
||||
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);
|
||||
new_element->data_free = this->custom_free;
|
||||
|
||||
if (this->tail == NULL){
|
||||
this->head = new_element;
|
||||
this->tail = new_element;
|
||||
@ -94,6 +102,8 @@ void insert_tail_List(THIS(List), void * data, size_t data_size){
|
||||
void insert_head_List(THIS(List), void * data, size_t data_size){
|
||||
/* Create a new element */
|
||||
Element *new_element = NEW(Element, data, data_size, this);
|
||||
new_element->data_free = this->custom_free;
|
||||
|
||||
if (this->head != NULL)
|
||||
this->head->previous = new_element;
|
||||
else
|
||||
@ -113,6 +123,8 @@ void insert_inside_List(THIS(List), void * data, size_t data_size, int index){
|
||||
this->insert_tail(this, data, data_size);
|
||||
else if (index < this->size){
|
||||
new_element = NEW(Element, data, data_size, this);
|
||||
new_element->data_free = this->custom_free;
|
||||
|
||||
old_element = this->get_element(this, index);
|
||||
|
||||
new_element->previous = old_element->previous;
|
||||
@ -139,6 +151,7 @@ List *_init_List(){
|
||||
l->size = 0;
|
||||
l->head = NULL;
|
||||
l->tail = NULL;
|
||||
l->custom_free = free;
|
||||
|
||||
LINK_ALL(List, l,
|
||||
get_head,
|
||||
@ -148,6 +161,7 @@ List *_init_List(){
|
||||
get_tail_data,
|
||||
get_element,
|
||||
get_element_data,
|
||||
set_custom_free,
|
||||
insert_inside,
|
||||
insert_tail,
|
||||
insert_head,
|
||||
|
@ -17,6 +17,7 @@ struct o_List {
|
||||
PRIVATE Element *head;
|
||||
PRIVATE Element *tail;
|
||||
PRIVATE int size;
|
||||
PRIVATE void (*custom_free)(void *);
|
||||
|
||||
PUBLIC Element *(*get_head)(_THIS(List));
|
||||
PUBLIC Element *(*get_tail)(_THIS(List));
|
||||
@ -29,6 +30,7 @@ struct o_List {
|
||||
|
||||
PUBLIC int (*get_size)(_THIS(List));
|
||||
|
||||
PUBLIC void (*set_custom_free)(_THIS(List), void (*custom_free)(void *));
|
||||
PUBLIC void (*insert_inside)(_THIS(List), void * data, size_t data_size, int index);
|
||||
PUBLIC void (*insert_tail)(_THIS(List), void * data, size_t data_size);
|
||||
PUBLIC void (*insert_head)(_THIS(List), void * data, size_t data_size);
|
||||
|
Reference in New Issue
Block a user