#ifndef CONTAINER_H_INCLUDED
#define CONTAINER_H_INCLUDED

typedef struct dup_node_t{void * elem;
                        struct dup_node_t *prox;
                        struct dup_node_t *ant;}dup_node_t;

typedef struct container{dup_node_t *l;
                         int (*comp)(void *e1, void *e2);
                         void * (*cpy)(void *e);}container_t;


container_t * create(int (*compare)(void *e1, void *e2), void * (*cpy)(void *e));
void _push_back(container_t * c, void *elem);
void _pop_back(container_t * c);
void _push_front(container_t * c,void *elem);
void _pop_front(container_t * c);
int _search(container_t *c, void * elem);
void visit(container_t *c, void (*visitor)(void * e));
container_t * duplicate(container_t *c);



#endif // CONTAINER_H_INCLUDED
