#ifndef LIST_H
#define LIST_H

#include <stdio.h>
#include <stdlib.h>
#include "element_data.h"
#include "element.h"

#include <stdio.h>
#include <stdlib.h>
#include "element.h"
#include "element_data.h"
#include "list_data.h"


list_element * list_element_alloc (element * el);
void list_element_free (list_element * l_el);
void list_element_throw_away (list_element * l_el);
element * lis_element_get (list_element * l_el);


list * list_alloc (void);
unsigned int list_get_size (list * L);
void list_add_last (list * L, element * new_last_el);
void list_add_first (list * L, element * new_first_el);
int list_next (list * L);
int list_prev (list * L);
int list_first (list * L);
int list_last (list * L);
int list_set_curent (list * L, element *el);
element * list_get_curent (list * L);
element * list_get_next (list * L);
element * list_get_prev (list * L);
element * list_get_first (list * L);
element * list_get_last (list * L);
int list_free_curent (list * L, int left);
void list_free (list * L);
void list_throw_away (list * L);
void list_print_curent (list * L);
void list_print_curent_indent (list * L, unsigned int indent);
void list_print (list * L);
void list_print_indent (list * L, unsigned int indent);
void list_print_info (list * L);
void list_print_info_indent (list * L, unsigned int indent);

#endif

