1
0
mirror of https://gitlab.com/klmp200/LO41.git synced 2025-07-11 04:09:24 +00:00

Petit refactor avec des signaux

This commit is contained in:
2018-06-15 11:50:38 +02:00
parent 741a98f926
commit ab17d4fa0e
10 changed files with 56 additions and 17 deletions

View File

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

View File

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